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;

 	}