391763 Fixing the list of ids returned in listed bundles for fragments and required bundles
diff --git a/org.eclipse.gemini.management.tests/src/org/eclipse/gemini/management/integration/tests/BundleStateTest.java b/org.eclipse.gemini.management.tests/src/org/eclipse/gemini/management/integration/tests/BundleStateTest.java
index 06c367b..02a1aed 100644
--- a/org.eclipse.gemini.management.tests/src/org/eclipse/gemini/management/integration/tests/BundleStateTest.java
+++ b/org.eclipse.gemini.management.tests/src/org/eclipse/gemini/management/integration/tests/BundleStateTest.java
@@ -245,35 +245,45 @@
private Long[] getRequiredBundles(Bundle bundle) {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
List<BundleWire> requiredWires = wiring.getRequiredWires(BundleRevision.BUNDLE_NAMESPACE);
- return bundleWiresToIds(requiredWires);
+ return bundleWiresToProviderIds(requiredWires);
}
private Long[] getRequiringBundles(Bundle bundle) {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
List<BundleWire> providedWires = wiring.getProvidedWires(BundleRevision.BUNDLE_NAMESPACE);
- return bundleWiresToIds(providedWires);
+ return bundleWiresToRequirerIds(providedWires);
}
private Long[] getBundleFragments(Bundle bundle) {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
List<BundleWire> requiredWires = wiring.getRequiredWires(BundleRevision.HOST_NAMESPACE);
- return bundleWiresToIds(requiredWires);
+ return bundleWiresToProviderIds(requiredWires);
}
private Long[] getBundleHosts(Bundle bundle) {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
List<BundleWire> providedWires = wiring.getProvidedWires(BundleRevision.HOST_NAMESPACE);
- return bundleWiresToIds(providedWires);
+ return bundleWiresToRequirerIds(providedWires);
}
- private Long[] bundleWiresToIds(List<BundleWire> wires){
- Long[] consumerWirings = new Long[wires.size()];
+ private Long[] bundleWiresToRequirerIds(List<BundleWire> wires){
+ Long[] requirerIds = new Long[wires.size()];
int i = 0;
for (BundleWire bundleWire : wires) {
- consumerWirings[i] = bundleWire.getRequirerWiring().getBundle().getBundleId();
+ requirerIds[i] = bundleWire.getRequirerWiring().getBundle().getBundleId();
i++;
}
- return consumerWirings;
+ return requirerIds;
+ }
+
+ private Long[] bundleWiresToProviderIds(List<BundleWire> wires){
+ Long[] providerIds = new Long[wires.size()];
+ int i = 0;
+ for (BundleWire bundleWire : wires) {
+ providerIds[i] = bundleWire.getProviderWiring().getBundle().getBundleId();
+ i++;
+ }
+ return providerIds;
}
private Long[] serviceIds(ServiceReference<?>[] refs) {
diff --git a/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/framework/BundleState.java b/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/framework/BundleState.java
index 3f3d466..41ba1bf 100644
--- a/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/framework/BundleState.java
+++ b/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/framework/BundleState.java
@@ -28,7 +28,6 @@
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleEvent;
import org.osgi.framework.BundleListener;
-import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.wiring.BundleRevision;
import org.osgi.framework.wiring.BundleWire;
@@ -121,7 +120,7 @@
public long[] getFragments(long bundleId) throws IOException {
BundleWiring wiring = retrieveBundle(bundleId).adapt(BundleWiring.class);
List<BundleWire> requiredWires = wiring.getProvidedWires(BundleRevision.HOST_NAMESPACE);
- return bundleWiresToRequirerIds(requiredWires);
+ return convertToPrimativeArray(OSGiBundle.bundleWiresToRequirerIds(requiredWires));
}
/**
@@ -158,7 +157,7 @@
public long[] getHosts(long fragment) throws IOException {
BundleWiring wiring = retrieveBundle(fragment).adapt(BundleWiring.class);
List<BundleWire> providedWires = wiring.getRequiredWires(BundleRevision.HOST_NAMESPACE);
- return bundleWiresToProviderIds(providedWires);
+ return convertToPrimativeArray(OSGiBundle.bundleWiresToProviderIds(providedWires));
}
/**
@@ -179,23 +178,35 @@
* {@inheritDoc}
*/
public long[] getRegisteredServices(long bundleId) throws IOException {
- return serviceIds(retrieveBundle(bundleId).getRegisteredServices());
+ ServiceReference<?>[] registeredServices = retrieveBundle(bundleId).getRegisteredServices();
+ return convertToPrimativeArray(OSGiBundle.serviceIds(registeredServices));
}
/**
* {@inheritDoc}
*/
+ public long[] getServicesInUse(long bundleIdentifier) throws IOException {
+ ServiceReference<?>[] servicesInUse = retrieveBundle(bundleIdentifier).getServicesInUse();
+ return convertToPrimativeArray(OSGiBundle.serviceIds(servicesInUse));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public long[] getRequiringBundles(long bundleId) throws IOException {
BundleWiring wiring = retrieveBundle(bundleId).adapt(BundleWiring.class);
List<BundleWire> providedWires = wiring.getProvidedWires(BundleRevision.BUNDLE_NAMESPACE);
- return bundleWiresToRequirerIds(providedWires);
+ return convertToPrimativeArray(OSGiBundle.bundleWiresToRequirerIds(providedWires));
}
+
/**
* {@inheritDoc}
*/
- public long[] getServicesInUse(long bundleIdentifier) throws IOException {
- return serviceIds(retrieveBundle(bundleIdentifier).getServicesInUse());
- }
+ public long[] getRequiredBundles(long bundleIdentifier) throws IOException {
+ BundleWiring wiring = retrieveBundle(bundleIdentifier).adapt(BundleWiring.class);
+ List<BundleWire> requiredWires = wiring.getRequiredWires(BundleRevision.BUNDLE_NAMESPACE);
+ return convertToPrimativeArray(OSGiBundle.bundleWiresToProviderIds(requiredWires));
+ }
/**
* {@inheritDoc}
@@ -228,15 +239,6 @@
/**
* {@inheritDoc}
*/
- public long[] getRequiredBundles(long bundleIdentifier) throws IOException {
- BundleWiring wiring = retrieveBundle(bundleIdentifier).adapt(BundleWiring.class);
- List<BundleWire> requiredWires = wiring.getRequiredWires(BundleRevision.BUNDLE_NAMESPACE);
- return bundleWiresToProviderIds(requiredWires);
- }
-
- /**
- * {@inheritDoc}
- */
public String getVersion(long bundleId) throws IOException {
return retrieveBundle(bundleId).getVersion().toString();
}
@@ -285,36 +287,11 @@
}
return b;
}
-
- private long[] bundleWiresToRequirerIds(List<BundleWire> wires){
- long[] consumerWirings = new long[wires.size()];
- int i = 0;
- for (BundleWire bundleWire : wires) {
- consumerWirings[i] = bundleWire.getRequirerWiring().getBundle().getBundleId();
- i++;
- }
- return consumerWirings;
- }
-
- private long[] bundleWiresToProviderIds(List<BundleWire> wires){
- long[] consumerWirings = new long[wires.size()];
- int i = 0;
- for (BundleWire bundleWire : wires) {
- consumerWirings[i] = bundleWire.getProviderWiring().getBundle().getBundleId();
- i++;
- }
- return consumerWirings;
- }
-
- private long[] serviceIds(ServiceReference<?>[] refs) {
- if (refs == null) {
- return new long[0];
- }
- long[] ids = new long[refs.length];
- for (int i = 0; i < refs.length; i++) {
- ids[i] = (Long) refs[i].getProperty(Constants.SERVICE_ID);
- }
- return ids;
+
+ private long[] convertToPrimativeArray(Long[] src){
+ long[] dest = new long[src.length];
+ System.arraycopy(src, 0, dest, 0, src.length);
+ return dest;
}
//Monitor methods
diff --git a/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/framework/internal/OSGiBundle.java b/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/framework/internal/OSGiBundle.java
index 53f861d..eec6f20 100644
--- a/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/framework/internal/OSGiBundle.java
+++ b/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/framework/internal/OSGiBundle.java
@@ -15,8 +15,6 @@
package org.eclipse.gemini.management.framework.internal;
-import static org.osgi.framework.Constants.SERVICE_ID;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -35,6 +33,7 @@
import org.eclipse.gemini.management.internal.BundleUtil;
import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.wiring.BundleRevision;
import org.osgi.framework.wiring.BundleWire;
@@ -298,7 +297,7 @@
private Long[] getFragments() {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
List<BundleWire> requiredWires = wiring.getRequiredWires(BundleRevision.HOST_NAMESPACE);
- return bundleWiresToIds(requiredWires);
+ return OSGiBundle.bundleWiresToProviderIds(requiredWires);
}
/**
@@ -307,7 +306,7 @@
private Long[] getHosts() {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
List<BundleWire> providedWires = wiring.getProvidedWires(BundleRevision.HOST_NAMESPACE);
- return bundleWiresToIds(providedWires);
+ return OSGiBundle.bundleWiresToRequirerIds(providedWires);
}
/**
@@ -353,7 +352,7 @@
private Long[] getRequiredBundles() throws IOException {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
List<BundleWire> requiredWires = wiring.getRequiredWires(BundleRevision.BUNDLE_NAMESPACE);
- return bundleWiresToIds(requiredWires);
+ return OSGiBundle.bundleWiresToProviderIds(requiredWires);
}
/**
@@ -363,7 +362,7 @@
private Long[] getRequiringBundles() throws IOException {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
List<BundleWire> providedWires = wiring.getProvidedWires(BundleRevision.BUNDLE_NAMESPACE);
- return bundleWiresToIds(providedWires);
+ return OSGiBundle.bundleWiresToRequirerIds(providedWires);
}
/**
@@ -436,23 +435,33 @@
return BundleUtil.isRequired(bundle);
}
- private Long[] bundleWiresToIds(List<BundleWire> wires){
- Long[] consumerWirings = new Long[wires.size()];
+ public static Long[] bundleWiresToRequirerIds(List<BundleWire> wires){
+ Long[] requirerIds = new Long[wires.size()];
int i = 0;
for (BundleWire bundleWire : wires) {
- consumerWirings[i] = bundleWire.getRequirerWiring().getBundle().getBundleId();
+ requirerIds[i] = bundleWire.getRequirerWiring().getBundle().getBundleId();
i++;
}
- return consumerWirings;
+ return requirerIds;
}
-
- private Long[] serviceIds(ServiceReference<?>[] refs) {
+
+ public static Long[] bundleWiresToProviderIds(List<BundleWire> wires){
+ Long[] providerIds = new Long[wires.size()];
+ int i = 0;
+ for (BundleWire bundleWire : wires) {
+ providerIds[i] = bundleWire.getProviderWiring().getBundle().getBundleId();
+ i++;
+ }
+ return providerIds;
+ }
+
+ public static Long[] serviceIds(ServiceReference<?>[] refs) {
if (refs == null) {
return new Long[0];
}
Long[] ids = new Long[refs.length];
for (int i = 0; i < refs.length; i++) {
- ids[i] = (Long) refs[i].getProperty(SERVICE_ID);
+ ids[i] = (Long) refs[i].getProperty(Constants.SERVICE_ID);
}
return ids;
}