You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2013/08/22 18:09:43 UTC
svn commit: r1516498 - in /aries/trunk/jndi/jndi-url: ./
src/main/java/org/apache/aries/jndi/services/
src/test/java/org/apache/aries/jndi/services/
Author: mnuttall
Date: Thu Aug 22 16:09:42 2013
New Revision: 1516498
URL: http://svn.apache.org/r1516498
Log:
Aries-1095: Cover a case when the interface being looked for is a parent of the one being advertised.
Added:
aries/trunk/jndi/jndi-url/src/test/java/org/apache/aries/jndi/services/
aries/trunk/jndi/jndi-url/src/test/java/org/apache/aries/jndi/services/ServiceHelperTest.java
Modified:
aries/trunk/jndi/jndi-url/pom.xml
aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/ServiceHelper.java
aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/packageinfo
Modified: aries/trunk/jndi/jndi-url/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/jndi/jndi-url/pom.xml?rev=1516498&r1=1516497&r2=1516498&view=diff
==============================================================================
--- aries/trunk/jndi/jndi-url/pom.xml (original)
+++ aries/trunk/jndi/jndi-url/pom.xml Thu Aug 22 16:09:42 2013
@@ -29,7 +29,7 @@
<artifactId>org.apache.aries.jndi.url</artifactId>
<packaging>bundle</packaging>
<name>Apache Aries JNDI URL Handler</name>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.1.0-SNAPSHOT</version>
<description>
This bundle contains the JNDI URL handler for OSGi
</description>
Modified: aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/ServiceHelper.java
URL: http://svn.apache.org/viewvc/aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/ServiceHelper.java?rev=1516498&r1=1516497&r2=1516498&view=diff
==============================================================================
--- aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/ServiceHelper.java (original)
+++ aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/ServiceHelper.java Thu Aug 22 16:09:42 2013
@@ -25,9 +25,11 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -349,10 +351,10 @@ public final class ServiceHelper
Class<?> ifacesOnService[] = ctx.getService(pair.ref).getClass().getInterfaces();
for (String interfaceName : classesNotFound) {
Class<?> thisClass = null;
- for (Class<?> c : ifacesOnService) {
- inner: if (c.getName().equals(interfaceName)) {
+ for (Class<?> c : getAllInterfaces(ifacesOnService)) {
+ if (c.getName().equals(interfaceName)) {
thisClass = c;
- break inner;
+ break;
}
}
if (thisClass != null) {
@@ -468,4 +470,18 @@ public final class ServiceHelper
return result;
}
+ static Collection<Class<?>> getAllInterfaces (Class<?>[] baseInterfaces)
+ {
+ Set<Class<?>> result = new HashSet<Class<?>>();
+ for (Class<?> c : baseInterfaces) {
+ if (!c.equals(Object.class)) {
+ result.add (c);
+ Class<?> ifaces[] = c.getInterfaces();
+ if (ifaces.length != 0) {
+ result.addAll(getAllInterfaces(ifaces));
+ }
+ }
+ }
+ return result;
+ }
}
Modified: aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/packageinfo
URL: http://svn.apache.org/viewvc/aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/packageinfo?rev=1516498&r1=1516497&r2=1516498&view=diff
==============================================================================
--- aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/packageinfo (original)
+++ aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/services/packageinfo Thu Aug 22 16:09:42 2013
@@ -16,4 +16,4 @@
# specific language governing permissions and limitations
# under the License.
#
-version 1.0.0
+version 1.1.0
Added: aries/trunk/jndi/jndi-url/src/test/java/org/apache/aries/jndi/services/ServiceHelperTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/jndi/jndi-url/src/test/java/org/apache/aries/jndi/services/ServiceHelperTest.java?rev=1516498&view=auto
==============================================================================
--- aries/trunk/jndi/jndi-url/src/test/java/org/apache/aries/jndi/services/ServiceHelperTest.java (added)
+++ aries/trunk/jndi/jndi-url/src/test/java/org/apache/aries/jndi/services/ServiceHelperTest.java Thu Aug 22 16:09:42 2013
@@ -0,0 +1,30 @@
+package org.apache.aries.jndi.services;
+
+import java.util.Collection;
+
+import org.apache.aries.jndi.services.ServiceHelper;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+public class ServiceHelperTest {
+
+ interface A {};
+ interface B extends A{};
+ interface C {};
+ interface D extends A, C{};
+
+ @Test
+ public void testGetAllInterfaces() throws Exception {
+
+ Class<?>[] classes = { B.class, D.class };
+ Collection<Class<?>> cx = ServiceHelper.getAllInterfaces(classes);
+
+ assertTrue (cx.contains(A.class));
+ assertTrue (cx.contains(B.class));
+ assertTrue (cx.contains(C.class));
+ assertTrue (cx.contains(D.class));
+ assertTrue (cx.size() == 4);
+
+ }
+}