Repository: aries-jax-rs-whiteboard Updated Branches: refs/heads/master 16da11274 -> 7ceb8f191
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.itests-jaxb-json/itest.bndrun ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/itest.bndrun b/jax-rs.itests-jaxb-json/itest.bndrun deleted file mode 100644 index 7409868..0000000 --- a/jax-rs.itests-jaxb-json/itest.bndrun +++ /dev/null @@ -1,64 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - --standalone: ${.}/target/index.xml - --runrequires: \ - osgi.identity;filter:='(osgi.identity=org.apache.aries.jax.rs.itests-jaxb-json)',\ - osgi.identity;filter:='(osgi.identity=org.apache.aries.jax.rs.whiteboard)',\ - osgi.identity;filter:='(osgi.identity=org.apache.aries.jax.rs.jaxb.json)',\ - osgi.identity;filter:='(osgi.identity=ch.qos.logback.classic)' - --runfw: org.eclipse.osgi;version='[3.10.100.v20150529-1857,3.10.100.v20150529-1857]' - -#-runtrace: true - --runee: JavaSE-1.8 --resolve.effective: resolve, active - --runsystemcapabilities: ${native_capability} --runproperties: \ - logback.configurationFile=file:${.}/logback.xml,\ - osgi.console.enable.builtin=false, \ - osgi.console=, \ - org.apache.felix.http.host=localhost,\ - org.osgi.service.http.port=* --runblacklist:\ - osgi.identity;filter:='(osgi.identity=org.osgi.compendium)',\ - osgi.identity;filter:='(osgi.identity=osgi.cmpn)' --runbundles: \ - ch.qos.logback.classic;version='[1.2.3,1.2.4)',\ - ch.qos.logback.core;version='[1.2.3,1.2.4)',\ - org.apache.felix.configadmin;version='[1.8.14,1.8.15)',\ - org.apache.felix.eventadmin;version='[1.4.8,1.4.9)',\ - org.apache.felix.http.api;version='[3.0.0,3.0.1)',\ - org.apache.felix.http.jetty;version='[3.4.0,3.4.1)',\ - org.apache.felix.http.servlet-api;version='[1.1.2,1.1.3)',\ - org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\ - org.osgi.util.function;version='[1.1.0,1.1.1)',\ - org.osgi.util.promise;version='[1.1.0,1.1.1)',\ - osgi.enroute.hamcrest.wrapper;version='[1.3.0,1.3.1)',\ - osgi.enroute.junit.wrapper;version='[4.12.0,4.12.1)',\ - slf4j.api;version='[1.7.25,1.7.26)',\ - org.apache.servicemix.specs.json-api-1.1;version='[2.9.0,2.9.1)',\ - org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ - org.apache.aries.javax.jax.rs-api;version='[1.0.1,1.0.2)',\ - org.apache.aries.jax.rs.itests-fragment;version='[1.0.1,1.0.2)',\ - org.apache.aries.jax.rs.itests-jaxb-json;version='[1.0.1,1.0.2)',\ - org.apache.aries.jax.rs.jaxb.json;version='[1.0.1,1.0.2)',\ - org.apache.aries.jax.rs.whiteboard;version='[1.0.1,1.0.2)' --include: -personal.bnd http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.itests-jaxb-json/logback.xml ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/logback.xml b/jax-rs.itests-jaxb-json/logback.xml deleted file mode 100644 index b3a37f9..0000000 --- a/jax-rs.itests-jaxb-json/logback.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. ---> - -<configuration> - <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> - <resetJUL>true</resetJUL> - </contextListener> - - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> - <encoder> - <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> - </encoder> - </appender> - - <root level="error"> - <appender-ref ref="STDOUT" /> - </root> -</configuration> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.itests-jaxb-json/pom.xml ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/pom.xml b/jax-rs.itests-jaxb-json/pom.xml deleted file mode 100644 index a6d55fd..0000000 --- a/jax-rs.itests-jaxb-json/pom.xml +++ /dev/null @@ -1,194 +0,0 @@ -<?xml version='1.0' encoding='UTF-8' ?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.aries.jax.rs</groupId> - <artifactId>org.apache.aries.jax.rs</artifactId> - <version>1.0.1-SNAPSHOT</version> - <relativePath>..</relativePath> - </parent> - - <artifactId>org.apache.aries.jax.rs.itests-jaxb-json</artifactId> - <description>Apache Aries JAX-RS Integration Tests</description> - <name>Apache Aries JAX-RS Integration Tests</name> - - <properties> - <maven.deploy.skip>true</maven.deploy.skip> - <maven.install.skip>true</maven.install.skip> - </properties> - - <build> - <plugins> - <plugin> - <groupId>biz.aQute.bnd</groupId> - <artifactId>bnd-indexer-maven-plugin</artifactId> - <configuration> - <includeJar>true</includeJar> - <localURLs>REQUIRED</localURLs> - </configuration> - </plugin> - <plugin> - <groupId>biz.aQute.bnd</groupId> - <artifactId>bnd-maven-plugin</artifactId> - </plugin> - <plugin> - <groupId>biz.aQute.bnd</groupId> - <artifactId>bnd-resolver-maven-plugin</artifactId> - <configuration> - <failOnChanges>false</failOnChanges> - <bndruns> - <bndrun>itest.bndrun</bndrun> - </bndruns> - </configuration> - </plugin> - <plugin> - <groupId>biz.aQute.bnd</groupId> - <artifactId>bnd-testing-maven-plugin</artifactId> - <configuration> - <failOnChanges>true</failOnChanges> - <resolve>false</resolve> - <bndruns> - <bndrun>itest.bndrun</bndrun> - </bndruns> - </configuration> - </plugin> - </plugins> - </build> - <dependencies> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <version>1.2.3</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>osgi.core</artifactId> - <version>6.0.0</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.service.cm</artifactId> - <version>1.5.0</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.service.http.whiteboard</artifactId> - <version>1.0.0</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.aries.jax.rs</groupId> - <artifactId>org.apache.aries.jax.rs.whiteboard</artifactId> - <version>1.0.1-SNAPSHOT</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.apache.aries.jax.rs</groupId> - <artifactId>org.apache.aries.jax.rs.itests-fragment</artifactId> - <version>1.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.aries.jax.rs</groupId> - <artifactId>org.apache.aries.jax.rs.jaxb.json</artifactId> - <version>1.0.1-SNAPSHOT</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.apache.aries.spec</groupId> - <artifactId>org.apache.aries.javax.jax.rs-api</artifactId> - <version>1.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.configadmin</artifactId> - <version>1.8.14</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.eventadmin</artifactId> - <version>1.4.8</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.http.jetty</artifactId> - <version>3.4.0</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr</artifactId> - <version>2.0.8</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.eclipse.osgi</artifactId> - <version>3.10.100.v20150529-1857</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.apache.servicemix.specs</groupId> - <artifactId>org.apache.servicemix.specs.json-api-1.1</artifactId> - <version>2.9.0</version> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.service.jaxrs</artifactId> - <version>1.0.0</version> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.util.function</artifactId> - <version>1.1.0</version> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.util.promise</artifactId> - <version>1.1.0</version> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>osgi.enroute.junit.wrapper</artifactId> - <version>4.12.0</version> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>osgi.enroute.hamcrest.wrapper</artifactId> - <version>1.3.0</version> - </dependency> - <dependency> - <groupId>org.apache.cxf</groupId> - <artifactId>cxf-core</artifactId> - <version>${cxf.version}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.cxf</groupId> - <artifactId>cxf-rt-frontend-jaxrs</artifactId> - <version>${cxf.version}</version> - <scope>provided</scope> - </dependency> - </dependencies> -</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.itests-jaxb-json/src/main/java/test/JaxbJsonTest.java ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/src/main/java/test/JaxbJsonTest.java b/jax-rs.itests-jaxb-json/src/main/java/test/JaxbJsonTest.java deleted file mode 100644 index 0a9ee48..0000000 --- a/jax-rs.itests-jaxb-json/src/main/java/test/JaxbJsonTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package test; - -import org.junit.Test; -import test.types.TestHelper; -import test.types.TestJaxbJson; - -import javax.ws.rs.client.WebTarget; - -import static org.junit.Assert.assertTrue; - -public class JaxbJsonTest extends TestHelper { - - @Test - public void testJSONPEndpoint() { - WebTarget webTarget = createDefaultTarget().path("jaxbjson"); - - registerAddon(new TestJaxbJson()); - - String response = webTarget.request().get(String.class); - - assertTrue(response.contains("value")); - } - -} http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.itests-jaxb-json/src/main/java/test/types/DataObject.java ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/src/main/java/test/types/DataObject.java b/jax-rs.itests-jaxb-json/src/main/java/test/types/DataObject.java deleted file mode 100644 index 2e806b7..0000000 --- a/jax-rs.itests-jaxb-json/src/main/java/test/types/DataObject.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package test.types; - -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement -public class DataObject { - - private String value; - - public DataObject() { - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.itests-jaxb-json/src/main/java/test/types/TestHelper.java ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/src/main/java/test/types/TestHelper.java b/jax-rs.itests-jaxb-json/src/main/java/test/types/TestHelper.java deleted file mode 100644 index a9ae9fc..0000000 --- a/jax-rs.itests-jaxb-json/src/main/java/test/types/TestHelper.java +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package test.types; - -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.container.ContainerResponseFilter; -import javax.ws.rs.core.Application; - -import org.junit.After; -import org.junit.Before; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.FrameworkUtil; -import org.osgi.framework.PrototypeServiceFactory; -import org.osgi.framework.ServiceFactory; -import org.osgi.framework.ServiceReference; -import org.osgi.framework.ServiceRegistration; -import org.osgi.service.cm.ConfigurationAdmin; -import org.osgi.service.jaxrs.client.SseEventSourceFactory; -import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntime; -import org.osgi.service.jaxrs.runtime.dto.RuntimeDTO; -import org.osgi.util.tracker.ServiceTracker; - -import static org.junit.Assert.assertTrue; -import static org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants.JAX_RS_APPLICATION_BASE; -import static org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants.JAX_RS_EXTENSION; -import static org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants.JAX_RS_NAME; -import static org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants.JAX_RS_RESOURCE; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Dictionary; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.function.Function; -import java.util.function.Predicate; - -public class TestHelper { - - public static BundleContext bundleContext = - FrameworkUtil. - getBundle(TestHelper.class). - getBundleContext(); - - protected Collection<ServiceRegistration<?>> _registrations = - new ArrayList<>(); - protected ServiceTracker<JaxrsServiceRuntime, JaxrsServiceRuntime> - _runtimeTracker; - protected ServiceTracker<ClientBuilder, ClientBuilder> - _clientBuilderTracker; - protected JaxrsServiceRuntime _runtime; - protected ServiceReference<JaxrsServiceRuntime> _runtimeServiceReference; - - @After - public void tearDown() { - Iterator<ServiceRegistration<?>> iterator = _registrations.iterator(); - - while (iterator.hasNext()) { - ServiceRegistration<?> registration = iterator.next(); - - try { - registration.unregister(); - } - catch(Exception e) { - } - finally { - iterator.remove(); - } - } - - if (_runtimeTracker != null) { - _runtimeTracker.close(); - } - - _clientBuilderTracker.close(); - - _configurationAdminTracker.close(); - - _sseEventSourceFactoryTracker.close(); - } - - @Before - public void before() { - _clientBuilderTracker = new ServiceTracker<>( - bundleContext, ClientBuilder.class, null); - - _clientBuilderTracker.open(); - - _configurationAdminTracker = new ServiceTracker<>( - bundleContext, ConfigurationAdmin.class, null); - - _configurationAdminTracker.open(); - - _sseEventSourceFactoryTracker = new ServiceTracker<>( - bundleContext, SseEventSourceFactory.class, null); - - _sseEventSourceFactoryTracker.open(); - - _runtimeTracker = new ServiceTracker<>( - bundleContext, JaxrsServiceRuntime.class, null); - - _runtimeTracker.open(); - - try { - _runtime = _runtimeTracker.waitForService(15000L); - } - catch (InterruptedException e) { - throw new RuntimeException(e); - } - - _runtimeServiceReference = _runtimeTracker.getServiceReference(); - } - - private ServiceTracker<ConfigurationAdmin, ConfigurationAdmin> - _configurationAdminTracker; - - private ServiceTracker<SseEventSourceFactory, SseEventSourceFactory> - _sseEventSourceFactoryTracker; - - @SuppressWarnings("unchecked") - private static String[] canonicalize(Object propertyValue) { - if (propertyValue == null) { - return new String[0]; - } - if (propertyValue instanceof String[]) { - return (String[]) propertyValue; - } - if (propertyValue instanceof Collection) { - return ((Collection<String>) propertyValue).toArray(new String[0]); - } - - return new String[]{propertyValue.toString()}; - } - - public ConfigurationAdmin getConfigurationAdmin() { - - try { - return _configurationAdminTracker.waitForService(5000); - } - catch (InterruptedException e) { - throw new IllegalStateException(e); - } - } - - protected Client createClient() { - ClientBuilder clientBuilder; - - try { - clientBuilder = _clientBuilderTracker.waitForService(5000); - - return clientBuilder.build(); - } - catch (InterruptedException ie) { - throw new RuntimeException(ie); - } - } - - protected SseEventSourceFactory createSseFactory() { - try { - return _sseEventSourceFactoryTracker.waitForService(5000); - } - catch (InterruptedException ie) { - throw new RuntimeException(ie); - } - } - - protected WebTarget createDefaultTarget() { - Client client = createClient(); - - String[] runtimes = canonicalize( - _runtimeServiceReference.getProperty("osgi.jaxrs.endpoint")); - - if (runtimes.length == 0) { - throw new IllegalStateException( - "No runtimes could be found on \"osgi.jaxrs.endpoint\" " + - "runtime service property "); - } - - String runtime = runtimes[0]; - - return client.target(runtime); - } - - protected static long getServiceId(ServiceRegistration<?> propertyHolder) { - return (long)propertyHolder.getReference().getProperty("service.id"); - } - - protected <T> void assertThatInRuntime( - Function<RuntimeDTO, T[]> getter, Predicate<T> predicate) { - - assertTrue( - Arrays.stream(getter.apply(getRuntimeDTO())).anyMatch(predicate)); - } - - protected JaxrsServiceRuntime getJaxrsServiceRuntime() - throws InterruptedException { - - _runtimeTracker = new ServiceTracker<>( - bundleContext, JaxrsServiceRuntime.class, null); - - _runtimeTracker.open(); - - return _runtimeTracker.waitForService(15000L); - } - - protected RuntimeDTO getRuntimeDTO() { - return _runtime.getRuntimeDTO(); - } - - protected ServiceRegistration<?> registerAddon( - Object instance, Object... keyValues) { - - Dictionary<String, Object> properties = new Hashtable<>(); - - properties.put(JAX_RS_RESOURCE, "true"); - - for (int i = 0; i < keyValues.length; i = i + 2) { - properties.put(keyValues[i].toString(), keyValues[i + 1]); - } - - ServiceRegistration<Object> serviceRegistration = - bundleContext.registerService(Object.class, instance, properties); - - _registrations.add(serviceRegistration); - - return serviceRegistration; - } - - protected ServiceRegistration<Application> registerApplication( - Application application, Object... keyValues) { - - Dictionary<String, Object> properties = new Hashtable<>(); - - for (int i = 0; i < keyValues.length; i = i + 2) { - properties.put(keyValues[i].toString(), keyValues[i + 1]); - } - - if (properties.get(JAX_RS_APPLICATION_BASE) == null) { - properties.put(JAX_RS_APPLICATION_BASE, "/test-application"); - } - - ServiceRegistration<Application> serviceRegistration = - bundleContext.registerService( - Application.class, application, properties); - - _registrations.add(serviceRegistration); - - return serviceRegistration; - } - - protected ServiceRegistration<Application> registerApplication( - ServiceFactory<Application> serviceFactory, Object... keyValues) { - - Dictionary<String, Object> properties = new Hashtable<>(); - - properties.put(JAX_RS_APPLICATION_BASE, "/test-application"); - - for (int i = 0; i < keyValues.length; i = i + 2) { - properties.put(keyValues[i].toString(), keyValues[i + 1]); - } - - ServiceRegistration<Application> serviceRegistration = - bundleContext.registerService( - Application.class, serviceFactory, properties); - - _registrations.add(serviceRegistration); - - return serviceRegistration; - } - - protected <T> ServiceRegistration<T> registerExtension( - Class<T> clazz, T extension, String name, Object... keyValues) { - - Dictionary<String, Object> properties = new Hashtable<>(); - - properties.put(JAX_RS_EXTENSION, true); - properties.put(JAX_RS_NAME, name); - - for (int i = 0; i < keyValues.length; i = i + 2) { - properties.put(keyValues[i].toString(), keyValues[i + 1]); - } - - ServiceRegistration<T> serviceRegistration = - bundleContext.registerService(clazz, extension, properties); - - _registrations.add(serviceRegistration); - - return serviceRegistration; - } - -} http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.itests-jaxb-json/src/main/java/test/types/TestJaxbJson.java ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/src/main/java/test/types/TestJaxbJson.java b/jax-rs.itests-jaxb-json/src/main/java/test/types/TestJaxbJson.java deleted file mode 100644 index 42ae28e..0000000 --- a/jax-rs.itests-jaxb-json/src/main/java/test/types/TestJaxbJson.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package test.types; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; - -public class TestJaxbJson { - - @GET - @Produces(MediaType.APPLICATION_JSON) - @Path("/jaxbjson") - public DataObject getJsonObject() { - DataObject dataObject = new DataObject(); - - dataObject.setValue("value"); - - return dataObject; - } - -} http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.jaxb-json/LICENSE ---------------------------------------------------------------------- diff --git a/jax-rs.jaxb-json/LICENSE b/jax-rs.jaxb-json/LICENSE deleted file mode 100644 index d645695..0000000 --- a/jax-rs.jaxb-json/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.jaxb-json/bnd.bnd ---------------------------------------------------------------------- diff --git a/jax-rs.jaxb-json/bnd.bnd b/jax-rs.jaxb-json/bnd.bnd deleted file mode 100644 index 8af5b8a..0000000 --- a/jax-rs.jaxb-json/bnd.bnd +++ /dev/null @@ -1,58 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -Bundle-Activator: org.apache.aries.jax.rs.jaxb.json.activator.JaxbJsonBundleActivator - -Import-Package:\ - !com.sun.*,\ - !javax.cache.*,\ - !javax.imageio.*,\ - !javax.jws.*,\ - !javax.security.*,\ - !javax.tools.*,\ - !javax.validation.*,\ - !javax.wsdl.*,\ - !net.sf.cglib.proxy.*,\ - !org.apache.abdera.*,\ - !org.apache.aries.*,\ - !org.apache.cxf.aegis.*,\ - !org.apache.log4j.*,\ - !org.apache.neethi.*,\ - !org.apache.velocity.*,\ - !org.apache.xerces.*,\ - !org.apache.xml.resolver.*,\ - !org.apache.xmlbeans.*,\ - !org.atmosphere.*,\ - !org.dom4j.*,\ - !org.junit.*,\ - !org.jvnet.fastinfoset.*,\ - !org.jvnet.staxex.*,\ - !org.ietf.jgss.*,\ - !org.objectweb.asm.*,\ - !org.osgi.service.blueprint.*,\ - !org.osgi.service.http,\ - !org.relaxng.datatype.*,\ - !org.slf4j.spi.*,\ - !org.springframework.*,\ - !org.codehaus.*,\ - * - --includeresource:\ - lib/component-dsl.jar=org.apache.aries.component-dsl.component-dsl-*.jar;lib:=true,\ - lib/cxf-rt-rs-extension-providers.jar=cxf-rt-rs-extension-providers-*.jar;lib:=true,\ - lib/cxf-rt-rs-json-basic.jar=cxf-rt-rs-json-basic-*.jar;lib:=true,\ - @jettison-*.jar http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.jaxb-json/pom.xml ---------------------------------------------------------------------- diff --git a/jax-rs.jaxb-json/pom.xml b/jax-rs.jaxb-json/pom.xml deleted file mode 100644 index e9e65a8..0000000 --- a/jax-rs.jaxb-json/pom.xml +++ /dev/null @@ -1,105 +0,0 @@ -<?xml version='1.0' encoding='UTF-8' ?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.aries.jax.rs</groupId> - <artifactId>org.apache.aries.jax.rs</artifactId> - <version>1.0.1-SNAPSHOT</version> - </parent> - - <artifactId>org.apache.aries.jax.rs.jaxb.json</artifactId> - <description>Apache Aries JAX-RS JAXB JSON</description> - <name>Apache Aries JAX-RS JAX-RS JAXB JSON</name> - - <dependencies> - <dependency> - <groupId>org.apache.cxf</groupId> - <artifactId>cxf-rt-rs-extension-providers</artifactId> - <version>${cxf.version}</version> - </dependency> - <dependency> - <groupId>org.apache.cxf</groupId> - <artifactId>cxf-rt-rs-json-basic</artifactId> - <version>${cxf.version}</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - <version>6.0.0</version> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.service.jaxrs</artifactId> - <version>1.0.0</version> - </dependency> - <dependency> - <groupId>org.codehaus.jettison</groupId> - <artifactId>jettison</artifactId> - <version>1.3.8</version> - </dependency> - <dependency> - <groupId>org.apache.aries.component-dsl</groupId> - <artifactId>org.apache.aries.component-dsl.component-dsl</artifactId> - <version>1.1.0</version> - </dependency> - </dependencies> - - <build> - <pluginManagement> - <plugins> - <plugin> - <groupId>com.github.hazendaz.spotbugs</groupId> - <artifactId>spotbugs-maven-plugin</artifactId> - <version>3.0.6</version> - <configuration> - <effort>Max</effort> - <threshold>Low</threshold> - <failOnError>false</failOnError> - <plugins> - <plugin> - <groupId>com.h3xstream.findsecbugs</groupId> - <artifactId>findsecbugs-plugin</artifactId> - <version>LATEST</version> - </plugin> - </plugins> - </configuration> - </plugin> - </plugins> - </pluginManagement> - <plugins> - <plugin> - <groupId>biz.aQute.bnd</groupId> - <artifactId>bnd-maven-plugin</artifactId> - </plugin> - </plugins> - </build> - - <reporting> - <plugins> - <plugin> - <groupId>com.github.hazendaz.spotbugs</groupId> - <artifactId>spotbugs-maven-plugin</artifactId> - <version>3.0.6</version> - </plugin> - </plugins> - </reporting> - -</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/JaxbJsonBundleActivator.java ---------------------------------------------------------------------- diff --git a/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/JaxbJsonBundleActivator.java b/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/JaxbJsonBundleActivator.java deleted file mode 100644 index ab549a0..0000000 --- a/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/JaxbJsonBundleActivator.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.aries.jax.rs.jaxb.json.activator; - -import org.apache.aries.component.dsl.OSGi; -import org.apache.aries.component.dsl.OSGiResult; -import org.apache.cxf.jaxrs.utils.schemas.SchemaHandler; -import org.codehaus.jettison.mapped.TypeConverter; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; -import org.osgi.framework.Constants; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; - -import javax.ws.rs.ext.MessageBodyReader; -import javax.ws.rs.ext.MessageBodyWriter; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; -import java.util.Dictionary; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Map; -import java.util.Optional; - -import static org.apache.aries.component.dsl.OSGi.all; -import static org.apache.aries.component.dsl.OSGi.coalesce; -import static org.apache.aries.component.dsl.OSGi.combine; -import static org.apache.aries.component.dsl.OSGi.configuration; -import static org.apache.aries.component.dsl.OSGi.configurations; -import static org.apache.aries.component.dsl.OSGi.just; -import static org.apache.aries.component.dsl.OSGi.register; -import static org.apache.aries.component.dsl.OSGi.service; -import static org.apache.aries.component.dsl.OSGi.serviceReferences; -import static org.apache.aries.component.dsl.Utils.highest; - -public class JaxbJsonBundleActivator implements BundleActivator { - - public static final String CONFIG_PID = "org.apache.aries.jax.rs.jaxb.json"; - - public static OSGi<Dictionary<String, ?>> CONFIGURATION = - coalesce( - all( - configurations(CONFIG_PID), - configuration(CONFIG_PID) - ), - just(Hashtable::new) - ); - - @Override - public void start(BundleContext context) throws Exception { - _result = - CONFIGURATION.flatMap(properties -> - createJsonFactory(properties).flatMap(jsonFactory -> - register( - new String[]{ - MessageBodyReader.class.getName(), - MessageBodyWriter.class.getName() - }, - () -> jsonFactory, - () -> getRegistrationProperties(properties) - ))). - run(context); - } - - @Override - public void stop(BundleContext context) throws Exception { - _result.close(); - } - private OSGiResult _result; - - private static OSGi<JsonProviderPrototypeServiceFactory> createJsonFactory( - Dictionary<String, ?> properties) { - - Object nameObject = properties.get("osgi.jaxrs.name"); - String name; - - if (nameObject == null) { - name = "jaxb-json"; - } - else { - name = nameObject.toString(); - } - - return combine( - JsonProviderPrototypeServiceFactory::new, - just(properties), - getStaticOptionalServices(name, TypeConverter.class), - getStaticOptionalServices(name, Marshaller.Listener.class), - getStaticOptionalServices(name, Unmarshaller.Listener.class), - getStaticOptionalServices(name, SchemaHandler.class) - ); - } - - private static <T> OSGi<Optional<T>> getStaticOptionalServices( - String name, Class<T> clazz) { - - return coalesce( - service( - highest( - serviceReferences( - clazz, "(osgi.jaxrs.name=" + name + ")"))). - map(Optional::of), - just(Optional.empty())); - } - - private Map<String, ?> getRegistrationProperties( - Dictionary<String, ?> properties) { - - Hashtable<String, Object> serviceProps = - new Hashtable<String, Object>() {{ - put(JaxrsWhiteboardConstants.JAX_RS_EXTENSION, true); - putIfAbsent( - JaxrsWhiteboardConstants.JAX_RS_NAME, "jaxb-json"); - put(Constants.SERVICE_RANKING, Integer.MIN_VALUE); - }}; - - Enumeration<String> keys = properties.keys(); - - while (keys.hasMoreElements()) { - String key = keys.nextElement(); - - serviceProps.put(key, properties.get(key)); - } - - return serviceProps; - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/JsonProviderPrototypeServiceFactory.java ---------------------------------------------------------------------- diff --git a/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/JsonProviderPrototypeServiceFactory.java b/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/JsonProviderPrototypeServiceFactory.java deleted file mode 100644 index f37d5fe..0000000 --- a/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/JsonProviderPrototypeServiceFactory.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.aries.jax.rs.jaxb.json.activator; - -import org.apache.cxf.jaxrs.provider.json.JSONProvider; -import org.apache.cxf.jaxrs.utils.schemas.SchemaHandler; -import org.codehaus.jettison.mapped.TypeConverter; -import org.osgi.framework.Bundle; -import org.osgi.framework.PrototypeServiceFactory; -import org.osgi.framework.ServiceRegistration; - -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; -import java.util.Arrays; -import java.util.Dictionary; -import java.util.Optional; - -public class JsonProviderPrototypeServiceFactory - implements PrototypeServiceFactory<JSONProvider<?>> { - - JsonProviderPrototypeServiceFactory( - Dictionary<String, ?> properties, - Optional<TypeConverter> typeConverter, - Optional<Marshaller.Listener> marshallerListener, - Optional<Unmarshaller.Listener> unmarshallerListener, - Optional<SchemaHandler> schemaHandler - ) { - _properties = properties; - _typeConverter = typeConverter; - _marshallerListener = marshallerListener; - _unmarshallerListener = unmarshallerListener; - _schemaHandler = schemaHandler; - } - - @Override - public JSONProvider<?> getService( - Bundle bundle, - ServiceRegistration<JSONProvider<?>> registration) { - - return createJsonProvider(_properties); - } - - @Override - public void ungetService( - Bundle bundle, - ServiceRegistration<JSONProvider<?>> registration, - JSONProvider<?> service) { - - } - private final Optional<Marshaller.Listener> _marshallerListener; - private final Optional<SchemaHandler> _schemaHandler; - private final Optional<Unmarshaller.Listener> _unmarshallerListener; - private Dictionary<String, ?> _properties; - private Optional<TypeConverter> _typeConverter; - - private JSONProvider<?> createJsonProvider( - Dictionary<String, ?> properties) { - - PropertyWrapper wrapper = new PropertyWrapper(properties); - - JSONProvider<Object> jsonProvider = new JSONProvider<>(); - - _typeConverter.ifPresent(jsonProvider::setTypeConverter); - _marshallerListener.ifPresent(jsonProvider::setMarshallerListener); - _unmarshallerListener.ifPresent(jsonProvider::setUnmarshallerListener); - _schemaHandler.ifPresent(jsonProvider::setSchemaHandler); - - wrapper.applyBoolean( - "drop.root.element", jsonProvider::setDropRootElement); - wrapper.applyBoolean( - "attributes.to.elements", - jsonProvider::setAttributesToElements); - wrapper.applyBoolean( - "convert.types.to.strings", - jsonProvider::setConvertTypesToStrings); - wrapper.applyBoolean( - "drop.collection.wrapper.element", - jsonProvider::setDropCollectionWrapperElement); - wrapper.applyBoolean( - "drop.elements.in.xml.stream", - jsonProvider::setDropElementsInXmlStream); - wrapper.applyBoolean( - "enable.buffering", jsonProvider::setEnableBuffering); - wrapper.applyBoolean( - "escape.forward.slashes.always", - jsonProvider::setEscapeForwardSlashesAlways); - wrapper.applyBoolean( - "ignore.empty.array.values", - jsonProvider::setIgnoreEmptyArrayValues); - wrapper.applyBoolean( - "ignore.mixed.content", - jsonProvider::setIgnoreMixedContent); - wrapper.applyBoolean( - "ignore.namespaces", jsonProvider::setIgnoreNamespaces); - wrapper.applyBoolean( - "read.xsi.type", jsonProvider::setReadXsiType); - wrapper.applyBoolean( - "serialize.as.array", - jsonProvider::setSerializeAsArray); - wrapper.applyBoolean( - "support.unwrapped", - jsonProvider::setSupportUnwrapped); - wrapper.applyBoolean( - "write.null.as.string", - jsonProvider::setWriteNullAsString); - wrapper.applyBoolean( - "marshall.as.jaxb.element", - jsonProvider::setMarshallAsJaxbElement); - wrapper.applyBoolean( - "single.jaxb.context", - jsonProvider::setSingleJaxbContext); - wrapper.applyBoolean( - "skip.jaxb.checks", - jsonProvider::setSkipJaxbChecks); - wrapper.applyBoolean( - "unmarshall.as.jaxb.element", - jsonProvider::setUnmarshallAsJaxbElement); - wrapper.applyBoolean( - "use.single.context.for.packages", - jsonProvider::setUseSingleContextForPackages); - wrapper.applyBoolean( - "validate.before.write", - jsonProvider::setValidateBeforeWrite); - wrapper.applyBoolean( - "validate.input", - jsonProvider::setValidateInput); - wrapper.applyBoolean( - "validate.output", - jsonProvider::setValidateOutput); - wrapper.applyBoolean( - "xml.root.as.jaxb.element", - jsonProvider::setXmlRootAsJaxbElement); - wrapper.applyBoolean( - "validate.output", - jsonProvider::setValidateOutput); - wrapper.applyBoolean( - "validate.output", - jsonProvider::setValidateOutput); - wrapper.applyBoolean( - "xml.type.as.jaxb.element.only", - jsonProvider::setXmlTypeAsJaxbElementOnly); - wrapper.applyBoolean( - "write.xsi.type", jsonProvider::setWriteXsiType); - - wrapper.applyString( - "array.keys", - s -> jsonProvider.setArrayKeys( - Arrays.asList(s.split(",")))); - wrapper.applyString( - "consume.media.types", - s -> jsonProvider.setArrayKeys( - Arrays.asList(s.split(",")))); - wrapper.applyString( - "convention", jsonProvider::setConvention); - wrapper.applyString( - "namespace.separator", - jsonProvider::setNamespaceSeparator); - wrapper.applyString( - "produce.media.types", - s -> jsonProvider.setProduceMediaTypes( - Arrays.asList(s.split(",")))); - wrapper.applyString( - "out.drop.elements", - s -> jsonProvider.setOutDropElements( - Arrays.asList(s.split(",")))); - wrapper.applyString( - "schema.locations", - s -> jsonProvider.setSchemaLocations( - Arrays.asList(s.split(",")))); - - return jsonProvider; - } -} http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/PropertyWrapper.java ---------------------------------------------------------------------- diff --git a/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/PropertyWrapper.java b/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/PropertyWrapper.java deleted file mode 100644 index 419c2de..0000000 --- a/jax-rs.jaxb-json/src/main/java/org/apache/aries/jax/rs/jaxb/json/activator/PropertyWrapper.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.aries.jax.rs.jaxb.json.activator; - -import java.util.Dictionary; -import java.util.function.Consumer; - -public class PropertyWrapper { - - public PropertyWrapper(Dictionary<String, ?> properties) { - this._properties = properties; - } - - public void applyBoolean(String property, Consumer<Boolean> consumer) { - - Object value = _properties.get(property); - - if ((value != null) && (value instanceof Boolean)) { - consumer.accept((Boolean) value); - } - if ((value != null) && (value instanceof String)) { - consumer.accept(Boolean.parseBoolean((String) value)); - } - } - - public void applyString(String property, Consumer<String> consumer) { - - Object value = _properties.get(property); - - if ((value != null)) { - consumer.accept(value.toString()); - } - } - - private Dictionary<String, ?> _properties; -} http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 86ea2be..c18123e 100644 --- a/pom.xml +++ b/pom.xml @@ -49,8 +49,6 @@ <module>jax-rs.whiteboard</module> <module>jax-rs.itests</module> <module>jax-rs.itests-fragment</module> - <module>jax-rs.itests-jaxb-json</module> - <module>jax-rs.jaxb-json</module> </modules> <build>