[jboss-osgi-commits] JBoss-OSGI SVN: r97307 - in projects/jboss-osgi/trunk/reactor/framework/src: test/java/org/jboss/test/osgi/service and 1 other directory.
jboss-osgi-commits at lists.jboss.org
jboss-osgi-commits at lists.jboss.org
Wed Dec 2 11:51:33 EST 2009
Author: alesj
Date: 2009-12-02 11:51:32 -0500 (Wed, 02 Dec 2009)
New Revision: 97307
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/ContextComparator.java
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/KernelDictionaryFactory.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java
Log:
Fix order bug.
Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/ContextComparator.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/ContextComparator.java 2009-12-02 16:37:13 UTC (rev 97306)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/ContextComparator.java 2009-12-02 16:51:32 UTC (rev 97307)
@@ -43,7 +43,7 @@
{
Long id1 = MDRUtils.getId(c1);
Long id2 = MDRUtils.getId(c2);
- if (id1 == null || id2 == null)
+ if (id1 == null && id2 == null)
return 0;
if (id1 != null && id2 == null)
return -1;
Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/KernelDictionaryFactory.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/KernelDictionaryFactory.java 2009-12-02 16:37:13 UTC (rev 97306)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/KernelDictionaryFactory.java 2009-12-02 16:51:32 UTC (rev 97307)
@@ -24,7 +24,9 @@
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.kernel.spi.config.KernelConfigurator;
@@ -78,19 +80,20 @@
private class KernelDictionary extends Dictionary<String, Object>
{
+ private Map<Object, Object> map;
private KernelControllerContext context;
- private Object name;
- private String[] classes = EMPTY;
private KernelDictionary(KernelControllerContext context)
{
this.context = context;
- this.name = context.getName();
+ this.map = new ConcurrentHashMap<Object, Object>(2);
+ map.put(NAME, context.getName());
+ map.put(Constants.OBJECTCLASS, EMPTY);
}
public int size()
{
- return 2;
+ return map.size();
}
public boolean isEmpty()
@@ -101,63 +104,52 @@
@SuppressWarnings({"unchecked"})
public Enumeration<String> keys()
{
- Set<String> keys = new HashSet<String>();
- keys.add(Constants.OBJECTCLASS);
- keys.add(NAME);
- return Iterators.toEnumeration(keys.iterator());
+ return Iterators.toEnumeration(map.keySet().iterator());
}
@SuppressWarnings({"unchecked"})
public Enumeration<Object> elements()
{
- Set<Object> elements = new HashSet<Object>();
- elements.add(name);
- elements.add(classes);
- return Iterators.toEnumeration(elements.iterator());
+ return Iterators.toEnumeration(map.values().iterator());
}
public Object get(Object key)
{
- if (NAME.equals(key))
+ Object value = map.get(key);
+ if (value != EMPTY)
+ return value;
+
+ ClassInfo clazz = null;
+ Object target = context.getTarget();
+ BeanInfo info = context.getBeanInfo();
+ if (target != null)
{
- return name;
+ clazz = getClassInfo(target.getClass());
}
- else if (Constants.OBJECTCLASS.equals(key))
+ else if (info != null)
{
- if (classes == EMPTY)
- {
- ClassInfo clazz = null;
- Object target = context.getTarget();
- BeanInfo info = context.getBeanInfo();
- if (target != null)
- {
- clazz = getClassInfo(target.getClass());
- }
- else if (info != null)
- {
- clazz = info.getClassInfo();
- }
+ clazz = info.getClassInfo();
+ }
- if (clazz != null)
- {
- Set<String> clazzes = new HashSet<String>();
- traverseClass(clazz, clazzes);
- classes = clazzes.toArray(new String[clazzes.size()]);
- }
- }
- return classes;
+ String[] classes = EMPTY;
+ if (clazz != null)
+ {
+ Set<String> clazzes = new HashSet<String>();
+ traverseClass(clazz, clazzes);
+ classes = clazzes.toArray(new String[clazzes.size()]);
+ map.put(Constants.OBJECTCLASS, classes);
}
- return null;
+ return classes;
}
public Object put(String key, Object value)
{
- return null;
+ return map.put(key, value);
}
public Object remove(Object key)
{
- return null;
+ return map.remove(key);
}
protected void traverseClass(ClassInfo clazz, Set<String> classes)
Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java 2009-12-02 16:37:13 UTC (rev 97306)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/service/ServiceMixUnitTestCase.java 2009-12-02 16:51:32 UTC (rev 97307)
@@ -188,25 +188,29 @@
assertNotNull(reg1);
try
{
- // OSGi service should bubble on top
- ServiceReference osgiRef = bundleContext1.getServiceReference(A.class.getName());
- assertNotNull(osgiRef);
-
- ServiceReference[] refs = bundleContext1.getServiceReferences(A.class.getName(), null);
+ ServiceReference[] refs = bundleContext1.getServiceReferences(A.class.getName(), "(a=b)");
assertNotNull(refs);
- assertEquals(2, refs.length);
- assertSame(osgiRef, refs[0]);
- ServiceReference mcRef = refs[1];
+ assertEquals(1, refs.length);
+ ServiceReference osgiRef = refs[0];
- refs = bundleContext1.getServiceReferences(A.class.getName(), "(a=b)");
+ refs = bundleContext1.getServiceReferences(A.class.getName(), "(bean.name=A)");
assertNotNull(refs);
assertEquals(1, refs.length);
- assertSame(osgiRef, refs[0]);
+ ServiceReference mcRef = refs[0];
- refs = bundleContext1.getServiceReferences(A.class.getName(), "(bean.name=A)");
+ // OSGi service should bubble on top
+ assertEquals("OSgi service has not bubbled on top", osgiRef, bundleContext1.getServiceReference(A.class.getName()));
+
+ // compare
+ assertTrue(osgiRef.compareTo(mcRef) < 0);
+ assertTrue(0 < mcRef.compareTo(osgiRef));
+
+ // ranking order first
+ refs = bundleContext1.getServiceReferences(A.class.getName(), null);
assertNotNull(refs);
- assertEquals(1, refs.length);
- assertEquals(mcRef, refs[0]);
+ assertEquals(2, refs.length);
+ assertEquals(osgiRef, refs[0]);
+ assertEquals(mcRef, refs[1]);
}
finally
{
More information about the jboss-osgi-commits
mailing list