Improving the test coverage, integration test for the serviceStateMBean
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTest.java
similarity index 98%
rename from org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTests.java
rename to org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTest.java
index b3670b6..b107027 100644
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTests.java
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTest.java
@@ -48,9 +48,7 @@
  * Integration tests for the {@link BundleState} implementation of {@link CustomBundleStateMBean} and {@link BundleStateMBean}

  *

  */

-public final class BundleStateTests extends AbstractOSGiMBeanTest{

-	

-	protected String mBeanObjectName = BundleStateMBean.OBJECTNAME;

+public final class BundleStateTest extends AbstractOSGiMBeanTest{

 	

 	private CompositeData bundleInfo;

 	private String location;

@@ -77,6 +75,10 @@
 	private Object[] keysArray;

 	private Bundle bundle;

 	

+	public BundleStateTest() {

+		super.mBeanObjectName = BundleStateMBean.OBJECTNAME;

+	}

+	

 	@Before

 	public void before(){

 		this.bundleInfo = null;

@@ -118,7 +120,7 @@
 		while (iter.hasNext()) {

 			key = iter.next();

 			keysArray = ((Collection<?>) key).toArray();

-			bundleInfo = (CompositeData) table.get(keysArray);

+			bundleInfo = table.get(keysArray);

 			symbolicName = (String) bundleInfo.get(BundleStateMBean.SYMBOLIC_NAME);

 			version = (String) bundleInfo.get(BundleStateMBean.VERSION);

 			bundle = bc.getBundle((Long) keysArray[0]);

diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTest.java
similarity index 74%
rename from org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTests.java
rename to org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTest.java
index ef12075..e291deb 100644
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTests.java
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTest.java
@@ -11,13 +11,21 @@
 package org.eclipse.gemini.mgmt.framework;
 
 import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
+import org.junit.Test;
 
 /**
  * Integration tests for the {@link BundleWiringState} implementation of {@link CustomBundleWiringStateMBean}
  *
  */
-public final class BundleWiringStateTests extends AbstractOSGiMBeanTest {
+public final class BundleWiringStateTest extends AbstractOSGiMBeanTest {
 
-	protected String mBeanObjectName = CustomBundleWiringStateMBean.OBJECTNAME;
+	public BundleWiringStateTest() {
+		super.mBeanObjectName = CustomBundleWiringStateMBean.OBJECTNAME;
+	}
+	
+	@Test
+	public void somethingTest(){
+		
+	}
 	
 }
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTest.java
similarity index 77%
rename from org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTests.java
rename to org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTest.java
index 0aae3e4..e15565b 100644
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTests.java
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTest.java
@@ -11,14 +11,22 @@
 package org.eclipse.gemini.mgmt.framework;
 
 import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
+import org.junit.Test;
 import org.osgi.jmx.framework.FrameworkMBean;
 
 /**
  * Integration tests for the {@link Framework} implementation of {@link FrameworkMBean}
  *
  */
-public final class FrameworkTests extends AbstractOSGiMBeanTest {
-
-	protected String mBeanObjectName = FrameworkMBean.OBJECTNAME;
+public final class FrameworkTest extends AbstractOSGiMBeanTest {
+	
+	public FrameworkTest() {
+		super.mBeanObjectName = FrameworkMBean.OBJECTNAME;
+	}
+	
+	@Test
+	public void somethingTest(){
+		
+	}
 	
 }
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTest.java
similarity index 76%
rename from org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTests.java
rename to org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTest.java
index 46615c7..7efce9d 100644
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTests.java
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTest.java
@@ -11,14 +11,21 @@
 package org.eclipse.gemini.mgmt.framework;
 
 import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
+import org.junit.Test;
 import org.osgi.jmx.framework.PackageStateMBean;
 
 /**
  * Integration tests for the {@link PackageState} implementation {@link PackageStateMBean}
  *
  */
-public final class PackageStateTests extends AbstractOSGiMBeanTest {
-
-	protected String mBeanObjectName = PackageStateMBean.OBJECTNAME;
+public final class PackageStateTest extends AbstractOSGiMBeanTest {
 	
+	public PackageStateTest() {
+		super.mBeanObjectName = PackageStateMBean.OBJECTNAME;
+	}
+	
+	@Test
+	public void somethingTest(){
+		
+	}
 }
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTest.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTest.java
new file mode 100644
index 0000000..0ac68b2
--- /dev/null
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTest.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2011 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+package org.eclipse.gemini.mgmt.framework;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertArrayEquals;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.TabularData;
+
+import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.osgi.jmx.framework.ServiceStateMBean;
+
+/**
+ * Integration tests for the {@link ServiceState} implementation of {@link CustomServiceStateMBean} and {@link ServiceStateMBean}
+ *
+ */
+public final class ServiceStateTest extends AbstractOSGiMBeanTest {
+
+	private CompositeData serviceInfo;
+	private Object key;
+	private Object[] keysArray;
+	private long providingBundle;
+	private long serviceId;
+	private Long[] usingBundles;
+	
+	public ServiceStateTest() {
+		super.mBeanObjectName = ServiceStateMBean.OBJECTNAME;
+	}
+	
+	@Before
+	public void before(){
+		this.serviceInfo = null;
+		this.key = null;
+		this.keysArray = null;
+		this.providingBundle = -1;
+		this.serviceId = -1;
+		this.usingBundles = null;
+	}
+	
+	@Test
+	public void listTest() throws Exception {
+		TabularData table = jmxInvokeBundleState("listServices", new Object[]{}, new String[]{});
+		Set<?> keys = table.keySet();
+		Iterator<?> iter = keys.iterator();
+		BundleContext bc = FrameworkUtil.getBundle(ServiceState.class).getBundleContext();
+		while (iter.hasNext()) {
+			key = iter.next();
+			keysArray = ((Collection<?>) key).toArray();
+			serviceInfo = table.get(keysArray);
+
+			this.providingBundle = (Long) serviceInfo.get(ServiceStateMBean.BUNDLE_IDENTIFIER);
+			this.serviceId = (Long) serviceInfo.get(ServiceStateMBean.IDENTIFIER);
+			this.usingBundles = (Long[]) serviceInfo.get(ServiceStateMBean.USING_BUNDLES);
+
+			ServiceReference<?> serviceReference = bc.getAllServiceReferences(null, "(" + Constants.SERVICE_ID + "=" + this.serviceId + ")")[0];
+			
+			assertEquals(providingBundle, serviceReference.getBundle().getBundleId());
+			assertEquals(serviceId, ((Long) serviceReference.getProperty(Constants.SERVICE_ID)).longValue());
+			Bundle[] usingBundles2 = serviceReference.getUsingBundles();
+			if(usingBundles2 == null){
+				assertEquals(0, this.usingBundles.length);
+			} else {
+				Long[] usingBundlesIds = new Long[usingBundles2.length];
+				for (int i = 0; i < usingBundles2.length; i++) {
+					usingBundlesIds[i] = usingBundles2[i].getBundleId();
+				}
+				assertArrayEquals(this.usingBundles, usingBundlesIds);
+			}
+		}
+	}
+	
+}
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTests.java
deleted file mode 100644
index 69c7420..0000000
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTests.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   VMware Inc. - initial contribution
- *******************************************************************************/
-package org.eclipse.gemini.mgmt.framework;
-
-import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
-import org.osgi.jmx.framework.ServiceStateMBean;
-
-/**
- * Integration tests for the {@link ServiceState} implementation of {@link CustomServiceStateMBean} and {@link ServiceStateMBean}
- *
- */
-public final class ServiceStateTests extends AbstractOSGiMBeanTest {
-
-	protected String mBeanObjectName = ServiceStateMBean.OBJECTNAME;
-	
-}
diff --git a/org.eclipse.gemini.mgmt/src/main/java/org/eclipse/gemini/mgmt/framework/internal/OSGiService.java b/org.eclipse.gemini.mgmt/src/main/java/org/eclipse/gemini/mgmt/framework/internal/OSGiService.java
index 9afe179..f57ba98 100644
--- a/org.eclipse.gemini.mgmt/src/main/java/org/eclipse/gemini/mgmt/framework/internal/OSGiService.java
+++ b/org.eclipse.gemini.mgmt/src/main/java/org/eclipse/gemini/mgmt/framework/internal/OSGiService.java
@@ -109,6 +109,9 @@
 	 */

 	public static long[] getBundlesUsing(ServiceReference<?> serviceRef) {

 		Bundle[] bundles = serviceRef.getUsingBundles();

+		if(bundles == null){

+			return new long[0];

+		}

 		long[] ids = new long[bundles.length];

 		for (int i = 0; i < bundles.length; i++) {

 			ids[i] = bundles[i].getBundleId();