You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ti...@apache.org on 2018/02/05 19:15:38 UTC
aries-jax-rs-whiteboard git commit: Make sure that features are only
added once when they advertise multiple interfaces
Repository: aries-jax-rs-whiteboard
Updated Branches:
refs/heads/master c62794dfa -> 784bf93f2
Make sure that features are only added once when they advertise multiple interfaces
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/784bf93f
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/784bf93f
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/784bf93f
Branch: refs/heads/master
Commit: 784bf93f218cbc36c782c92fb25f9dfcb01de985
Parents: c62794d
Author: Tim Ward <ti...@apache.org>
Authored: Mon Feb 5 19:14:21 2018 +0000
Committer: Tim Ward <ti...@apache.org>
Committed: Mon Feb 5 19:14:21 2018 +0000
----------------------------------------------------------------------
.../internal/AriesJaxrsServiceRuntime.java | 2 +-
.../internal/CxfJaxrsServiceRegistrator.java | 39 +++++++-------------
.../jax/rs/whiteboard/internal/Whiteboard.java | 35 +++++++++---------
3 files changed, 31 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/784bf93f/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 af06485..a54accd 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
@@ -452,7 +452,7 @@ public class AriesJaxrsServiceRuntime implements JaxrsServiceRuntime {
Arrays.stream(
canonicalize(serviceReference.getProperty("objectClass"))).
filter(
- SUPPORTED_EXTENSION_INTERFACES::contains
+ SUPPORTED_EXTENSION_INTERFACES::containsKey
).
toArray(String[]::new);
}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/784bf93f/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/CxfJaxrsServiceRegistrator.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/CxfJaxrsServiceRegistrator.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/CxfJaxrsServiceRegistrator.java
index 6318904..098f93b 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/CxfJaxrsServiceRegistrator.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/CxfJaxrsServiceRegistrator.java
@@ -17,6 +17,10 @@
package org.apache.aries.jax.rs.whiteboard.internal;
+import static java.util.stream.Collectors.toMap;
+import static org.apache.aries.jax.rs.whiteboard.internal.Utils.canonicalize;
+import static org.apache.aries.jax.rs.whiteboard.internal.Whiteboard.SUPPORTED_EXTENSION_INTERFACES;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -26,8 +30,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
import javax.ws.rs.RuntimeType;
import javax.ws.rs.core.Application;
@@ -52,8 +54,6 @@ import org.apache.cxf.jaxrs.provider.ServerConfigurableFactory;
import org.apache.cxf.message.Message;
import org.osgi.framework.ServiceReference;
-import static org.apache.aries.jax.rs.whiteboard.internal.Utils.canonicalize;
-
public class CxfJaxrsServiceRegistrator {
public CxfJaxrsServiceRegistrator(
@@ -253,38 +253,25 @@ public class CxfJaxrsServiceRegistrator {
int ranking = Utils.getRanking(cachingServiceReference);
- String[] interfaces = canonicalize(
- serviceReference.getProperty("objectClass"));
+ Class<?>[] interfaces = Arrays.stream(canonicalize(
+ serviceReference.getProperty("objectClass")))
+ .filter(SUPPORTED_EXTENSION_INTERFACES::containsKey)
+ .map(SUPPORTED_EXTENSION_INTERFACES::get)
+ .toArray(Class[]::new);
if (ranking != 0) {
Map<Class<?>, Integer> classesWithPriorities=
- Arrays.stream(interfaces).flatMap(
- className -> {
- try {
- return Stream.of(
- Class.forName(className));
- }
- catch (ClassNotFoundException e) {
- return Stream.empty();
- }
- }
- ).collect(
- Collectors.toMap(c -> c, __ -> ranking)
+ Arrays.stream(interfaces).collect(
+ toMap(c -> c, __ -> ranking)
);
featureContext.register(
provider.getService(), classesWithPriorities);
}
else {
- for (String className : interfaces) {
- try {
- featureContext.register(
+ featureContext.register(
provider.getService(),
- Class.forName(className));
- }
- catch (ClassNotFoundException e) {
- }
- }
+ interfaces);
}
}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/784bf93f/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 6355a2b..0b3e122 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
@@ -51,11 +51,9 @@ import javax.ws.rs.ext.ReaderInterceptor;
import javax.ws.rs.ext.WriterInterceptor;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.Dictionary;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
@@ -64,8 +62,10 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
+import java.util.stream.Stream;
import static java.lang.String.format;
+import static java.util.stream.Collectors.toMap;
import static org.apache.aries.jax.rs.whiteboard.internal.AriesJaxrsServiceRuntime.getApplicationName;
import static org.apache.aries.jax.rs.whiteboard.internal.Utils.canonicalize;
import static org.apache.aries.jax.rs.whiteboard.internal.Utils.generateApplicationName;
@@ -105,21 +105,20 @@ import static org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants.JAX_RS_
*/
public class Whiteboard {
- static final Collection<String> SUPPORTED_EXTENSION_INTERFACES =
- Collections.unmodifiableSet(
- new HashSet<>(Arrays.asList(
- ContainerRequestFilter.class.getName(),
- ContainerResponseFilter.class.getName(),
- ReaderInterceptor.class.getName(),
- WriterInterceptor.class.getName(),
- MessageBodyReader.class.getName(),
- MessageBodyWriter.class.getName(),
- ContextResolver.class.getName(),
- ExceptionMapper.class.getName(),
- ParamConverterProvider.class.getName(),
- Feature.class.getName(),
- DynamicFeature.class.getName()
- )));
+ static final Map<String, Class<?>> SUPPORTED_EXTENSION_INTERFACES =
+ Collections.unmodifiableMap(
+ Stream.of(ContainerRequestFilter.class,
+ ContainerResponseFilter.class,
+ ReaderInterceptor.class,
+ WriterInterceptor.class,
+ MessageBodyReader.class,
+ MessageBodyWriter.class,
+ ContextResolver.class,
+ ExceptionMapper.class,
+ ParamConverterProvider.class,
+ Feature.class,
+ DynamicFeature.class)
+ .collect(toMap(Class::getName, Function.identity())));
static final String DEFAULT_NAME = ".default";
private static final Function<CachingServiceReference<Application>, String>
APPLICATION_BASE = sr -> getApplicationBase(sr::getProperty);
@@ -790,7 +789,7 @@ public class Whiteboard {
"objectClass"));
return Arrays.stream(objectClasses).
- anyMatch(SUPPORTED_EXTENSION_INTERFACES::contains);
+ anyMatch(SUPPORTED_EXTENSION_INTERFACES::containsKey);
}
private interface ChangeCounter {