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 2017/12/07 11:50:38 UTC
[2/4] aries-jax-rs-whiteboard git commit: Register service reference
properties in application
Register service reference properties in 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/f3e0d515
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/f3e0d515
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/f3e0d515
Branch: refs/heads/master
Commit: f3e0d5158ec5d18721bd737fe09e239929b5e31e
Parents: 5cb59ca
Author: Carlos Sierra <cs...@apache.org>
Authored: Tue Dec 5 16:46:31 2017 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Thu Dec 7 12:49:25 2017 +0100
----------------------------------------------------------------------
jax-rs.itests/src/main/java/test/JaxrsTest.java | 64 ++++++++++++++++++++
.../internal/CXFJaxRsServiceRegistrator.java | 12 +++-
.../jax/rs/whiteboard/internal/Whiteboard.java | 4 +-
3 files changed, 77 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/f3e0d515/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 988d8af..5be1e74 100644
--- a/jax-rs.itests/src/main/java/test/JaxrsTest.java
+++ b/jax-rs.itests/src/main/java/test/JaxrsTest.java
@@ -25,14 +25,17 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Dictionary;
+import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -61,6 +64,7 @@ import test.types.TestFilter;
import test.types.TestFilterAndExceptionMapper;
import test.types.TestHelper;
+import javax.ws.rs.GET;
import javax.ws.rs.client.InvocationCallback;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.container.ContainerResponseFilter;
@@ -779,6 +783,29 @@ public class JaxrsTest extends TestHelper {
}
@Test
+ public void testDefaultServiceReferencePropertiesAreAvailableInFeatures() {
+ AtomicBoolean executed = new AtomicBoolean();
+ AtomicReference<Object> propertyvalue = new AtomicReference<>();
+
+ registerExtension(
+ Feature.class, featureContext -> {
+ executed.set(true);
+
+ Map<String, Object> properties =
+ (Map<String, Object>)
+ featureContext.getConfiguration().getProperty(
+ "osgi.jaxrs.application.serviceProperties");
+ propertyvalue.set(properties.get(JAX_RS_NAME));
+
+ return false;
+ }, "Feature", JAX_RS_APPLICATION_SELECT,
+ "("+ JAX_RS_NAME + "=" + JAX_RS_DEFAULT_APPLICATION + ")");
+
+ assertTrue(executed.get());
+ assertEquals(JAX_RS_DEFAULT_APPLICATION, propertyvalue.get());
+ }
+
+ @Test
public void testEndpointsOverride() {
WebTarget webTarget = createDefaultTarget().path("conflict");
@@ -1113,6 +1140,43 @@ public class JaxrsTest extends TestHelper {
}
@Test
+ public void testServiceReferencePropertiesAreAvailableInFeatures() {
+ AtomicBoolean executed = new AtomicBoolean();
+ AtomicReference<Object> propertyvalue = new AtomicReference<>();
+
+ registerExtension(
+ Feature.class, featureContext -> {
+ executed.set(true);
+
+ Map<String, Object> properties =
+ (Map<String, Object>)
+ featureContext.getConfiguration().getProperty(
+ "osgi.jaxrs.application.serviceProperties");
+ propertyvalue.set(properties.get("property"));
+
+ return false;
+ }, "Feature", JAX_RS_APPLICATION_SELECT, "(property=true)");
+
+ registerApplication(
+ new Application() {
+ @Override
+ public Set<Object> getSingletons() {
+ return Collections.singleton(
+ new Object() {
+
+ @GET
+ public String hello() {
+ return "hello";
+ }
+ });
+ }
+ }, JAX_RS_NAME, "test", "property", true);
+
+ assertTrue(executed.get());
+ assertEquals(true, propertyvalue.get());
+ }
+
+ @Test
public void testStandaloneEndPoint() throws InterruptedException {
WebTarget webTarget = createDefaultTarget().path("test");
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/f3e0d515/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 3af691e..5789637 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
@@ -20,7 +20,9 @@ package org.apache.aries.jax.rs.whiteboard.internal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.Map;
import java.util.TreeSet;
import java.util.stream.Collectors;
@@ -48,9 +50,12 @@ import static org.apache.aries.jax.rs.whiteboard.internal.Utils.canonicalize;
public class CXFJaxRsServiceRegistrator {
- public CXFJaxRsServiceRegistrator(Bus bus, Application application) {
+ public CXFJaxRsServiceRegistrator(
+ Bus bus, Application application, Map<String, Object> properties) {
_bus = bus;
_application = application;
+ _properties = Collections.unmodifiableMap(new HashMap<>(properties));
+
Comparator<ServiceTuple<?>> comparing = Comparator.comparing(
ServiceTuple::getCachingServiceReference);
@@ -141,6 +146,7 @@ public class CXFJaxRsServiceRegistrator {
}
private final Application _application;
+ private Map<String, Object> _properties;
private final Bus _bus;
private final Collection<ServiceTuple<?>> _providers;
private final Collection<ResourceProvider> _services = new ArrayList<>();
@@ -211,6 +217,10 @@ public class CXFJaxRsServiceRegistrator {
jaxRsServerFactoryBean.setProvider(
(Feature) featureContext -> {
+ featureContext.property(
+ "osgi.jaxrs.application.serviceProperties",
+ _properties);
+
for (ServiceTuple<?> provider : _providers) {
CachingServiceReference<?> cachingServiceReference =
provider.getCachingServiceReference();
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/f3e0d515/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 4fc3dfb..256fa4b 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
@@ -328,9 +328,9 @@ public class Whiteboard {
Bus bus, ServiceTuple<Application> tuple, Map<String, Object> props) {
return
- just(() -> new CXFJaxRsServiceRegistrator(bus, tuple.getService())).
+ just(() -> new CXFJaxRsServiceRegistrator(
+ bus, tuple.getService(), props)).
flatMap(registrator ->
-
onClose(registrator::close).then(
register(CXFJaxRsServiceRegistrator.class, registrator, props)));
}