You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2018/02/16 16:52:40 UTC

[1/5] aries-jax-rs-whiteboard git commit: Not needed

Repository: aries-jax-rs-whiteboard
Updated Branches:
  refs/heads/master 4d04b13b3 -> 082b64a6f


Not needed


Project: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/commit/d91f87ae
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/d91f87ae
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/d91f87ae

Branch: refs/heads/master
Commit: d91f87ae6a3a72bb1ff956ec31c8a49f100ff667
Parents: 4d04b13
Author: Carlos Sierra <cs...@apache.org>
Authored: Thu Feb 15 16:01:03 2018 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Thu Feb 15 16:01:03 2018 +0100

----------------------------------------------------------------------
 .../rs/whiteboard/internal/introspection/ClassIntrospector.java   | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/d91f87ae/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
index 968eaef..50ac499 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
@@ -44,9 +44,6 @@ import java.util.stream.Stream;
 
 public class ClassIntrospector {
 
-    private static final List<MediaType> _ALL_TYPES_LIST =
-        Collections.singletonList(JAXRSUtils.ALL_TYPES);
-
     public static Collection<ResourceMethodInfoDTO> getResourceMethodInfos(
         Class<?> clazz, Bus bus) {
 


[2/5] aries-jax-rs-whiteboard git commit: Fully implement extension runtime DTO

Posted by cs...@apache.org.
Fully implement extension runtime DTO


Project: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/commit/872fc001
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/872fc001
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/872fc001

Branch: refs/heads/master
Commit: 872fc0010fe1d1960d6b46bb00ebd16426775d2a
Parents: d91f87a
Author: Carlos Sierra <cs...@apache.org>
Authored: Fri Feb 16 12:41:59 2018 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Fri Feb 16 12:41:59 2018 +0100

----------------------------------------------------------------------
 .../internal/AriesJaxrsServiceRuntime.java      | 191 +++++++++++++++----
 .../jax/rs/whiteboard/internal/Whiteboard.java  |   5 +-
 2 files changed, 158 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/872fc001/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
index a54accd..2c1f082 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
@@ -27,18 +27,27 @@ import static org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants.JAX_RS_
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.BiFunction;
+import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import javax.ws.rs.Consumes;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.Application;
+import javax.ws.rs.core.MediaType;
 
 import org.apache.aries.jax.rs.whiteboard.internal.Utils.PropertyHolder;
 import org.apache.aries.jax.rs.whiteboard.internal.introspection.ClassIntrospector;
 import org.apache.aries.osgi.functional.CachingServiceReference;
 import org.apache.cxf.Bus;
+import org.apache.cxf.jaxrs.utils.AnnotationUtils;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntime;
 import org.osgi.service.jaxrs.runtime.dto.ApplicationDTO;
 import org.osgi.service.jaxrs.runtime.dto.BaseDTO;
@@ -97,10 +106,14 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
 
     public void addApplicationExtension(
         String applicationName,
-        CachingServiceReference<?> extensionImmutableServiceReference) {
+        CachingServiceReference<?> extensionImmutableServiceReference,
+        Class<?> theClass) {
 
         _applicationExtensions.compute(
-            applicationName, merger(extensionImmutableServiceReference));
+            applicationName,
+            merger(
+                new ExtensionRuntimeInformation(
+                    extensionImmutableServiceReference, theClass)));
     }
 
     public void addClashingApplication(
@@ -261,15 +274,20 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
 
         _applicationEndpoints.compute(
             applicationName,
-            remover(new EndpointRuntimeInformation(
+            remover(
+                new EndpointRuntimeInformation(
                 cachingServiceReference, null, null)));
     }
 
     public void removeApplicationExtension(
-        String applicationName, CachingServiceReference<?> extensionImmutableServiceReference) {
+        String applicationName,
+        CachingServiceReference<?> extensionImmutableServiceReference) {
 
         _applicationExtensions.computeIfPresent(
-            applicationName, remover(extensionImmutableServiceReference));
+            applicationName,
+            remover(
+                new ExtensionRuntimeInformation(
+                extensionImmutableServiceReference, null)));
     }
 
     public void removeClashingApplication(
@@ -278,6 +296,12 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
         _clashingApplications.remove(serviceReference);
     }
 
+    public void removeClashingResource(
+        CachingServiceReference<?> serviceReference) {
+
+        _clashingResources.remove(serviceReference);
+    }
+
     public void removeDependentApplication(
         CachingServiceReference<Application> applicationReference) {
 
@@ -363,22 +387,19 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
     public ApplicationRuntimeInformation unsetApplicationForPath(String path) {
         return _applications.remove(path);
     }
-    private ConcurrentHashMap<String, ApplicationRuntimeInformation>
-        _applications = new ConcurrentHashMap<>();
-    private ConcurrentHashMap<String, Collection<EndpointRuntimeInformation>>
-        _applicationEndpoints = new ConcurrentHashMap<>();
-    private ConcurrentHashMap<String, Collection<CachingServiceReference<?>>>
-        _applicationExtensions = new ConcurrentHashMap<>();
-    private Collection<CachingServiceReference<Application>>
-        _ungettableApplications = new CopyOnWriteArrayList<>();
-    private Collection<CachingServiceReference<Application>> _shadowedApplications =
-        new CopyOnWriteArrayList<>();
     private Set<CachingServiceReference<?>> _applicationDependentExtensions =
         ConcurrentHashMap.newKeySet();
     private Set<CachingServiceReference<?>> _applicationDependentResources =
         ConcurrentHashMap.newKeySet();
+    private ConcurrentHashMap<String, Collection<EndpointRuntimeInformation>>
+        _applicationEndpoints = new ConcurrentHashMap<>();
+    private ConcurrentHashMap<String, Collection<ExtensionRuntimeInformation>>
+        _applicationExtensions = new ConcurrentHashMap<>();
+    private ConcurrentHashMap<String, ApplicationRuntimeInformation>
+        _applications = new ConcurrentHashMap<>();
     private Collection<CachingServiceReference<Application>> _clashingApplications =
         new CopyOnWriteArrayList<>();
+    private volatile ApplicationRuntimeInformation _defaultApplicationProperties;
     private Set<CachingServiceReference<Application>> _dependentApplications =
         ConcurrentHashMap.newKeySet();
     private Set<CachingServiceReference<?>> _dependentExtensions =
@@ -391,13 +412,16 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
         new CopyOnWriteArrayList<>();
     private Collection<CachingServiceReference<?>> _erroredExtensions =
         new CopyOnWriteArrayList<>();
+    private Collection<CachingServiceReference<?>> _invalidExtensions =
+        new CopyOnWriteArrayList<>();
+    private Collection<CachingServiceReference<Application>> _shadowedApplications =
+        new CopyOnWriteArrayList<>();
+    private Collection<CachingServiceReference<Application>>
+        _ungettableApplications = new CopyOnWriteArrayList<>();
     private Collection<CachingServiceReference<?>> _ungettableEndpoints =
         new CopyOnWriteArrayList<>();
     private Collection<CachingServiceReference<?>> _ungettableExtensions =
         new CopyOnWriteArrayList<>();
-    private Collection<CachingServiceReference<?>> _invalidExtensions =
-        new CopyOnWriteArrayList<>();
-    private volatile ApplicationRuntimeInformation _defaultApplicationProperties;
 
     private static FailedApplicationDTO buildFailedApplicationDTO(
         int reason, CachingServiceReference<Application> serviceReference) {
@@ -458,10 +482,35 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
     }
 
     private static ExtensionDTO populateExtensionDTO(
-        ExtensionDTO extensionDTO,
-        CachingServiceReference<?> serviceReference) {
-
-        populateBaseExtensionDTO(extensionDTO, serviceReference);
+        ExtensionDTO extensionDTO, ExtensionRuntimeInformation eri) {
+
+        populateBaseExtensionDTO(extensionDTO, eri._cachingServiceReference);
+
+        Consumes consumes = AnnotationUtils.getClassAnnotation(
+            eri._class, Consumes.class);
+        Produces produces = AnnotationUtils.getClassAnnotation(
+            eri._class, Produces.class);
+        Set<String> nameBindings = AnnotationUtils.getNameBindings(
+            eri._class.getAnnotations());
+
+        extensionDTO.consumes = consumes == null ? null :
+            JAXRSUtils.getConsumeTypes(consumes).stream().
+                map(
+                    MediaType::toString
+                ).toArray(
+                    String[]::new
+                );
+
+        extensionDTO.produces = produces == null ? null :
+            JAXRSUtils.getProduceTypes(produces).stream().
+                map(
+                    MediaType::toString
+                ).toArray(
+                    String[]::new
+                );
+
+        extensionDTO.nameBindings = nameBindings == null ? null :
+            nameBindings.toArray(new String[0]);
 
         return extensionDTO;
     }
@@ -544,6 +593,51 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
                 ExtensionDTO[]::new
             );
 
+        Map<String, Set<ExtensionDTO>> nameBoundExtensions =
+            new HashMap<>();
+
+        Map<ExtensionDTO, Set<ResourceDTO>> extensionResources =
+            new HashMap<>();
+
+        for (ExtensionDTO extensionDTO : applicationDTO.extensionDTOs) {
+            for (String nameBinding : extensionDTO.nameBindings) {
+                Set<ExtensionDTO> extensionDTOS =
+                    nameBoundExtensions.computeIfAbsent(
+                        nameBinding,
+                        __ -> new HashSet<>()
+                );
+
+                extensionDTOS.add(extensionDTO);
+            }
+        }
+
+        for (ResourceDTO resourceDTO : applicationDTO.resourceDTOs) {
+            for (ResourceMethodInfoDTO resourceMethodInfo :
+                resourceDTO.resourceMethods) {
+
+                for (String nameBinding : resourceMethodInfo.nameBindings) {
+                    Set<ExtensionDTO> extensionDTOS = nameBoundExtensions.get(
+                        nameBinding);
+
+                    if (extensionDTOS != null) {
+                        for (ExtensionDTO extensionDTO : extensionDTOS) {
+                            Set<ResourceDTO> resourceDTOS =
+                                extensionResources.computeIfAbsent(
+                                    extensionDTO, __ -> new HashSet<>());
+
+                            resourceDTOS.add(resourceDTO);
+                        }
+                    }
+                }
+            }
+        }
+
+        extensionResources.forEach(
+            (extensionDTO, resourceDTOS) ->
+                extensionDTO.filteredByName = resourceDTOS.toArray(
+                    new ResourceDTO[0])
+        );
+
         CxfJaxrsServiceRegistrator cxfJaxRsServiceRegistrator =
             ari._cxfJaxRsServiceRegistrator;
 
@@ -654,12 +748,12 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
     }
 
     private Stream<ExtensionDTO> getApplicationExtensionsStream(String name) {
-        Collection<CachingServiceReference<?>> applicationExtensions =
+        Collection<ExtensionRuntimeInformation> extensionRuntimeInformations =
             _applicationExtensions.get(name);
 
-        Stream<CachingServiceReference<?>> applicationExtensionStream =
-            applicationExtensions != null ?
-                applicationExtensions.stream() :
+        Stream<ExtensionRuntimeInformation> applicationExtensionStream =
+            extensionRuntimeInformations != null ?
+                extensionRuntimeInformations.stream() :
                 Stream.empty();
 
         return
@@ -717,8 +811,7 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
         public int hashCode() {
             return _cachingServiceReference.hashCode();
         }
-
-        @Override
+        CachingServiceReference _cachingServiceReference;        @Override
         public boolean equals(Object o) {
             if (this == o) return true;
             if (o == null || getClass() != o.getClass()) return false;
@@ -728,9 +821,36 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
             return _cachingServiceReference.equals(
                 that._cachingServiceReference);
         }
-        CachingServiceReference _cachingServiceReference;
         Bus _bus;
         Class<?> _class;
+
+    }
+
+    private static class ExtensionRuntimeInformation {
+        public ExtensionRuntimeInformation(
+            CachingServiceReference<?> cachingServiceReference,
+            Class<?> aClass) {
+
+            _cachingServiceReference = cachingServiceReference;
+            _class = aClass;
+        }
+        CachingServiceReference _cachingServiceReference;        @Override
+        public int hashCode() {
+            return _cachingServiceReference.hashCode();
+        }
+        Class<?> _class;        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+
+            ExtensionRuntimeInformation that = (ExtensionRuntimeInformation) o;
+
+            return _cachingServiceReference.equals(
+                that._cachingServiceReference);
+        }
+
+
+
     }
 
     private static class ApplicationRuntimeInformation {
@@ -741,25 +861,24 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
             _cachingServiceReference = cachingServiceReference;
             _cxfJaxRsServiceRegistrator = cxfJaxRsServiceRegistrator;
         }
-
-        @Override
+        CachingServiceReference _cachingServiceReference;        @Override
         public int hashCode() {
             return _cachingServiceReference.hashCode();
         }
-
-        @Override
+        CxfJaxrsServiceRegistrator _cxfJaxRsServiceRegistrator;        @Override
         public boolean equals(Object o) {
             if (this == o) return true;
             if (o == null || getClass() != o.getClass()) return false;
 
-            EndpointRuntimeInformation that = (EndpointRuntimeInformation) o;
+            ApplicationRuntimeInformation that =
+                (ApplicationRuntimeInformation) o;
 
             return _cachingServiceReference.equals(
                 that._cachingServiceReference);
         }
 
-        CachingServiceReference _cachingServiceReference;
-        CxfJaxrsServiceRegistrator _cxfJaxRsServiceRegistrator;
+
+
 
     }
 

http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/872fc001/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
index 0b3e122..de7ca7d 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
@@ -486,8 +486,9 @@ public class Whiteboard {
                 registrator::addProvider,
                 registrator::removeProvider
             ).effects(
-                __ -> _runtime.addApplicationExtension(
-                    applicationName, serviceReference),
+                t -> _runtime.addApplicationExtension(
+                    applicationName, serviceReference,
+                    t.getService().getClass()),
                 __ -> _runtime.removeApplicationExtension(
                     applicationName, serviceReference)
             ).then(


[5/5] aries-jax-rs-whiteboard git commit: Fix application shadowing default application

Posted by cs...@apache.org.
Fix application shadowing default application


Project: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/commit/082b64a6
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/082b64a6
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/082b64a6

Branch: refs/heads/master
Commit: 082b64a6fa22b2027ef2556dc2f8ca6fbfa22668
Parents: 27399b0
Author: Carlos Sierra <cs...@apache.org>
Authored: Fri Feb 16 17:24:08 2018 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Fri Feb 16 17:24:08 2018 +0100

----------------------------------------------------------------------
 jax-rs.itests/src/main/java/test/JaxrsTest.java | 22 ++++++++++++++++++++
 .../jax/rs/whiteboard/internal/Whiteboard.java  |  2 +-
 2 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/082b64a6/jax-rs.itests/src/main/java/test/JaxrsTest.java
----------------------------------------------------------------------
diff --git a/jax-rs.itests/src/main/java/test/JaxrsTest.java b/jax-rs.itests/src/main/java/test/JaxrsTest.java
index 0dbd57a..f47a348 100644
--- a/jax-rs.itests/src/main/java/test/JaxrsTest.java
+++ b/jax-rs.itests/src/main/java/test/JaxrsTest.java
@@ -485,6 +485,28 @@ public class JaxrsTest extends TestHelper {
     }
 
     @Test
+    public void testApplicationShadowsDefault() {
+        assertEquals(0, getRuntimeDTO().applicationDTOs.length);
+        assertEquals(0, getRuntimeDTO().failedApplicationDTOs.length);
+
+        registerAddon(new TestAddon());
+
+        assertEquals(
+            "Hello test",
+            createDefaultTarget().path("/test").request().get(String.class));
+
+        registerApplication(
+            new TestApplication(), JAX_RS_APPLICATION_BASE, "/");
+
+        assertEquals(1, getRuntimeDTO().applicationDTOs.length);
+        assertEquals(1, getRuntimeDTO().failedApplicationDTOs.length);
+
+        assertEquals(
+            "Hello application",
+            createDefaultTarget().request().get(String.class));
+    }
+
+    @Test
     public void testApplicationReplaceDefault() {
         assertEquals(0, getRuntimeDTO().applicationDTOs.length);
         assertEquals(0, getRuntimeDTO().failedApplicationDTOs.length);

http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/082b64a6/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
index de7ca7d..b74faa0 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
@@ -753,7 +753,7 @@ public class Whiteboard {
 
         String contextName;
 
-        if (JAX_RS_DEFAULT_APPLICATION.equals(applicationName)) {
+        if ("".equals(address)) {
             contextName = HTTP_WHITEBOARD_DEFAULT_CONTEXT_NAME;
         }
         else {


[4/5] aries-jax-rs-whiteboard git commit: Fix bug unregistering dependent extensions

Posted by cs...@apache.org.
Fix bug unregistering dependent extensions


Project: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/commit/27399b09
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/27399b09
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/27399b09

Branch: refs/heads/master
Commit: 27399b0964f8832e120d60822a73c44e24ba404d
Parents: 08c4cf7
Author: Carlos Sierra <cs...@apache.org>
Authored: Fri Feb 16 13:19:32 2018 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Fri Feb 16 13:19:32 2018 +0100

----------------------------------------------------------------------
 .../aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/27399b09/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
index 3c29f32..11cb1ba 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
@@ -311,7 +311,7 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
     public void removeDependentExtension(
         CachingServiceReference<?> cachingServiceReference) {
 
-        _dependentExtensions.add(cachingServiceReference);
+        _dependentExtensions.remove(cachingServiceReference);
     }
 
     public void removeDependentService(CachingServiceReference<?> serviceReference) {


[3/5] aries-jax-rs-whiteboard git commit: Make namebindings also be null when not specified

Posted by cs...@apache.org.
Make namebindings also be null when not specified


Project: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/commit/08c4cf71
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/08c4cf71
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/08c4cf71

Branch: refs/heads/master
Commit: 08c4cf71e9f5c2a23410e5e878ab950f692baf5c
Parents: 872fc00
Author: Carlos Sierra <cs...@apache.org>
Authored: Fri Feb 16 13:05:33 2018 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Fri Feb 16 13:05:33 2018 +0100

----------------------------------------------------------------------
 jax-rs.itests/src/main/java/test/JaxrsTest.java |  6 ++---
 .../internal/AriesJaxrsServiceRuntime.java      | 12 +++++++++
 .../introspection/ClassIntrospector.java        |  8 +++---
 .../introspection/ClassIntrospectorTest.java    | 26 +++++++++-----------
 4 files changed, 31 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/08c4cf71/jax-rs.itests/src/main/java/test/JaxrsTest.java
----------------------------------------------------------------------
diff --git a/jax-rs.itests/src/main/java/test/JaxrsTest.java b/jax-rs.itests/src/main/java/test/JaxrsTest.java
index 3d70015..0dbd57a 100644
--- a/jax-rs.itests/src/main/java/test/JaxrsTest.java
+++ b/jax-rs.itests/src/main/java/test/JaxrsTest.java
@@ -144,7 +144,7 @@ public class JaxrsTest extends TestHelper {
         assertArrayEquals(
             new String[]{MediaType.TEXT_PLAIN},
             resourceMethod.producingMimeType);
-        assertArrayEquals(new String[0], resourceMethod.nameBindings);
+        assertNull(resourceMethod.nameBindings);
 
     }
 
@@ -239,7 +239,7 @@ public class JaxrsTest extends TestHelper {
         assertArrayEquals(
             new String[]{MediaType.TEXT_PLAIN},
             resourceMethod.producingMimeType);
-        assertArrayEquals(new String[0], resourceMethod.nameBindings);
+        assertNull(resourceMethod.nameBindings);
     }
 
     @Test
@@ -266,7 +266,7 @@ public class JaxrsTest extends TestHelper {
         assertEquals("/{name}", resourceMethod.path);
         assertNull(resourceMethod.consumingMimeType);
         assertNull(resourceMethod.producingMimeType);
-        assertArrayEquals(new String[]{}, resourceMethod.nameBindings);
+        assertNull(resourceMethod.nameBindings);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/08c4cf71/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
index 2c1f082..3c29f32 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxrsServiceRuntime.java
@@ -493,6 +493,10 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
         Set<String> nameBindings = AnnotationUtils.getNameBindings(
             eri._class.getAnnotations());
 
+        if (nameBindings.isEmpty()) {
+            nameBindings = null;
+        }
+
         extensionDTO.consumes = consumes == null ? null :
             JAXRSUtils.getConsumeTypes(consumes).stream().
                 map(
@@ -600,6 +604,10 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
             new HashMap<>();
 
         for (ExtensionDTO extensionDTO : applicationDTO.extensionDTOs) {
+            if (extensionDTO.nameBindings == null) {
+                continue;
+            }
+
             for (String nameBinding : extensionDTO.nameBindings) {
                 Set<ExtensionDTO> extensionDTOS =
                     nameBoundExtensions.computeIfAbsent(
@@ -615,6 +623,10 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
             for (ResourceMethodInfoDTO resourceMethodInfo :
                 resourceDTO.resourceMethods) {
 
+                if (resourceMethodInfo.nameBindings == null) {
+                    continue;
+                }
+
                 for (String nameBinding : resourceMethodInfo.nameBindings) {
                     Set<ExtensionDTO> extensionDTOS = nameBoundExtensions.get(
                         nameBinding);

http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/08c4cf71/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
index 50ac499..6063e13 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
@@ -52,7 +52,7 @@ public class ClassIntrospector {
                 clazz, clazz, true, true, bus);
 
         Stream<ResourceMethodInfoDTO> convert = convert(
-            new HashSet<>(), "/", null, null, null, Collections.emptySet(),
+            new HashSet<>(), "/", null, null, null, null,
             true, classResourceInfo);
 
         return convert.collect(Collectors.toList());
@@ -97,7 +97,7 @@ public class ClassIntrospector {
 
         List<MediaType> consumeParam = consumeMime == null ? null : new ArrayList<>(consumeMime);
         List<MediaType> produceParam = produceMime == null ? null : new ArrayList<>(produceMime);
-        HashSet<String> nameBindingsParam = new HashSet<>(nameBindings);
+        HashSet<String> nameBindingsParam = nameBindings == null ? null : new HashSet<>(nameBindings);
 
         Stream<ResourceMethodInfoDTO> stream =
             operationResourceInfos.stream().
@@ -192,8 +192,8 @@ public class ClassIntrospector {
                 String[]::new
             );
 
-        resourceMethodInfoDTO.nameBindings = nameBindings.toArray(
-            new String[0]);
+        resourceMethodInfoDTO.nameBindings = nameBindings == null ? null :
+            nameBindings.toArray(new String[0]);
 
         try {
             resourceMethodInfoDTO.path = Paths.get(path).normalize().toString();

http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/08c4cf71/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java b/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
index 867d5a2..d8abb38 100644
--- a/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
+++ b/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
@@ -43,8 +43,6 @@ import static org.junit.Assert.assertTrue;
 
 public class ClassIntrospectorTest {
 
-    private static final String[] ALL_TYPES = {MediaType.WILDCARD};
-
     @Test
     public void testPlainResource() {
         Bus bus = BusFactory.getDefaultBus(true);
@@ -65,7 +63,7 @@ public class ClassIntrospectorTest {
         assertNull(resourceMethodInfoDTO.consumingMimeType);
         assertNull(resourceMethodInfoDTO.producingMimeType);
         assertEquals("/", resourceMethodInfoDTO.path);
-        assertArrayEquals(new String[]{}, resourceMethodInfoDTO.nameBindings);
+        assertNull(resourceMethodInfoDTO.nameBindings);
     }
 
     @Test
@@ -143,7 +141,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.consumingMimeType = null;
         resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -155,7 +153,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.consumingMimeType = null;
         resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -190,7 +188,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.consumingMimeType = null;
         resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/common";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -203,7 +201,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.consumingMimeType = null;
         resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/common";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -238,7 +236,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.consumingMimeType = null;
         resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/common";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -250,7 +248,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.consumingMimeType = null;
         resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/common/different";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -286,7 +284,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.producingMimeType =
             new String[]{MediaType.APPLICATION_XML};
         resourceMethodInfoDTO.path = "/resource";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -300,7 +298,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.producingMimeType =
             new String[]{MediaType.APPLICATION_JSON};
         resourceMethodInfoDTO.path = "/resource/subresource";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -317,7 +315,7 @@ public class ClassIntrospectorTest {
                 MediaType.APPLICATION_JSON
             };
         resourceMethodInfoDTO.path = "/resource/subresource";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -331,7 +329,7 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO.producingMimeType =
             new String[]{MediaType.APPLICATION_JSON};
         resourceMethodInfoDTO.path = "/resource/subresource/{path}";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(
@@ -347,7 +345,7 @@ public class ClassIntrospectorTest {
             MediaType.APPLICATION_JSON
         };
         resourceMethodInfoDTO.path = "/resource/subresource/{path}";
-        resourceMethodInfoDTO.nameBindings = new String[]{};
+        resourceMethodInfoDTO.nameBindings = null;
 
         assertTrue(
             wrappers.remove(