Use the Jackson JSON support for JAX-RS, and make it an integration project
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/7ceb8f19 Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/7ceb8f19 Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/7ceb8f19 Branch: refs/heads/master Commit: 7ceb8f1912a0a5848f2f277db7d9903e921e64f2 Parents: 16da112 Author: Tim Ward <[email protected]> Authored: Wed Aug 8 16:48:41 2018 +0100 Committer: Tim Ward <[email protected]> Committed: Wed Aug 8 16:48:41 2018 +0100 ---------------------------------------------------------------------- integrations/jackson/jackson-itest/LICENSE | 202 ++++++++++++ integrations/jackson/jackson-itest/bnd.bnd | 26 ++ integrations/jackson/jackson-itest/itest.bndrun | 69 +++++ integrations/jackson/jackson-itest/logback.xml | 33 ++ integrations/jackson/jackson-itest/pom.xml | 177 +++++++++++ .../src/main/java/test/JaxbJsonTest.java | 41 +++ .../src/main/java/test/types/DataObject.java | 37 +++ .../src/main/java/test/types/TestHelper.java | 309 +++++++++++++++++++ .../src/main/java/test/types/TestJaxbJson.java | 38 +++ integrations/jackson/jackson-jaxrs/LICENSE | 202 ++++++++++++ integrations/jackson/jackson-jaxrs/bnd.bnd | 20 ++ integrations/jackson/jackson-jaxrs/pom.xml | 95 ++++++ .../jax/rs/jackson/JaxbJsonBundleActivator.java | 105 +++++++ .../JsonProviderPrototypeServiceFactory.java | 84 +++++ integrations/jackson/pom.xml | 50 +++ integrations/pom.xml | 1 + jax-rs.itests-jaxb-json/LICENSE | 202 ------------ jax-rs.itests-jaxb-json/bnd.bnd | 24 -- jax-rs.itests-jaxb-json/itest.bndrun | 64 ---- jax-rs.itests-jaxb-json/logback.xml | 33 -- jax-rs.itests-jaxb-json/pom.xml | 194 ------------ .../src/main/java/test/JaxbJsonTest.java | 41 --- .../src/main/java/test/types/DataObject.java | 37 --- .../src/main/java/test/types/TestHelper.java | 309 ------------------- .../src/main/java/test/types/TestJaxbJson.java | 38 --- jax-rs.jaxb-json/LICENSE | 202 ------------ jax-rs.jaxb-json/bnd.bnd | 58 ---- jax-rs.jaxb-json/pom.xml | 105 ------- .../json/activator/JaxbJsonBundleActivator.java | 142 --------- .../JsonProviderPrototypeServiceFactory.java | 188 ----------- .../rs/jaxb/json/activator/PropertyWrapper.java | 51 --- pom.xml | 2 - 32 files changed, 1489 insertions(+), 1690 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/integrations/jackson/jackson-itest/LICENSE ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/LICENSE b/integrations/jackson/jackson-itest/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/integrations/jackson/jackson-itest/LICENSE @@ -0,0 +1,202 @@ + + 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/integrations/jackson/jackson-itest/bnd.bnd ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/bnd.bnd b/integrations/jackson/jackson-itest/bnd.bnd new file mode 100644 index 0000000..1a7d5e2 --- /dev/null +++ b/integrations/jackson/jackson-itest/bnd.bnd @@ -0,0 +1,26 @@ +# 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-Description: Integration Test bundle for the JSON-P Whiteboard support + +Test-Cases: \ + ${classes;CONCRETE;EXTENDS;junit.framework.TestCase},\ + ${classes;CONCRETE;ANNOTATED;org.junit.Test} + +Require-Capability: osgi.service;filter:="(objectClass=org.osgi.service.cm.ConfigurationAdmin)" + +-contract: * http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/integrations/jackson/jackson-itest/itest.bndrun ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/itest.bndrun b/integrations/jackson/jackson-itest/itest.bndrun new file mode 100644 index 0000000..39171b6 --- /dev/null +++ b/integrations/jackson/jackson-itest/itest.bndrun @@ -0,0 +1,69 @@ +# 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.jackson.itest)',\ + osgi.identity;filter:='(osgi.identity=org.apache.aries.jax.rs.whiteboard)',\ + osgi.identity;filter:='(osgi.identity=org.apache.aries.jax.rs.jackson)',\ + 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.annotation-api-1.3;version='[1.3.0,1.3.1)',\ + com.fasterxml.jackson.core.jackson-annotations;version='[2.9.0,2.9.1)',\ + com.fasterxml.jackson.core.jackson-core;version='[2.9.6,2.9.7)',\ + com.fasterxml.jackson.core.jackson-databind;version='[2.9.6,2.9.7)',\ + com.fasterxml.jackson.jaxrs.jackson-jaxrs-base;version='[2.9.6,2.9.7)',\ + com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider;version='[2.9.6,2.9.7)',\ + org.apache.aries.component-dsl.component-dsl;version='[1.1.0,1.1.1)',\ + org.apache.aries.javax.jax.rs-api;version='[1.0.0,1.0.1)',\ + org.apache.aries.jax.rs.jackson;version='[1.0.0,1.0.1)',\ + org.apache.aries.jax.rs.jackson.itest;version='[1.0.0,1.0.1)',\ + org.apache.aries.jax.rs.whiteboard;version='[1.0.0,1.0.1)',\ + com.fasterxml.jackson.module.jackson-module-jaxb-annotations;version='[2.9.6,2.9.7)' +-include: -personal.bnd http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/integrations/jackson/jackson-itest/logback.xml ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/logback.xml b/integrations/jackson/jackson-itest/logback.xml new file mode 100644 index 0000000..b3a37f9 --- /dev/null +++ b/integrations/jackson/jackson-itest/logback.xml @@ -0,0 +1,33 @@ +<?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/integrations/jackson/jackson-itest/pom.xml ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/pom.xml b/integrations/jackson/jackson-itest/pom.xml new file mode 100644 index 0000000..01fc033 --- /dev/null +++ b/integrations/jackson/jackson-itest/pom.xml @@ -0,0 +1,177 @@ +<?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>jackson-integration</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>..</relativePath> + </parent> + + <artifactId>org.apache.aries.jax.rs.jackson.itest</artifactId> + <description>Apache Aries Jackson JAX-RS Integration Tests</description> + <name>Apache Aries Jackson 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>${aries.jaxrs.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.aries.jax.rs</groupId> + <artifactId>org.apache.aries.jax.rs.jackson</artifactId> + <version>1.0.0-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.aries.spec</groupId> + <artifactId>org.apache.aries.javax.jax.rs-api</artifactId> + <version>${aries.jaxrs.version}</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> + </dependencies> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/integrations/jackson/jackson-itest/src/main/java/test/JaxbJsonTest.java ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/src/main/java/test/JaxbJsonTest.java b/integrations/jackson/jackson-itest/src/main/java/test/JaxbJsonTest.java new file mode 100644 index 0000000..0a9ee48 --- /dev/null +++ b/integrations/jackson/jackson-itest/src/main/java/test/JaxbJsonTest.java @@ -0,0 +1,41 @@ +/* + * 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/integrations/jackson/jackson-itest/src/main/java/test/types/DataObject.java ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/src/main/java/test/types/DataObject.java b/integrations/jackson/jackson-itest/src/main/java/test/types/DataObject.java new file mode 100644 index 0000000..2e806b7 --- /dev/null +++ b/integrations/jackson/jackson-itest/src/main/java/test/types/DataObject.java @@ -0,0 +1,37 @@ +/* + * 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/integrations/jackson/jackson-itest/src/main/java/test/types/TestHelper.java ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/src/main/java/test/types/TestHelper.java b/integrations/jackson/jackson-itest/src/main/java/test/types/TestHelper.java new file mode 100644 index 0000000..a9ae9fc --- /dev/null +++ b/integrations/jackson/jackson-itest/src/main/java/test/types/TestHelper.java @@ -0,0 +1,309 @@ +/* + * 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/integrations/jackson/jackson-itest/src/main/java/test/types/TestJaxbJson.java ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-itest/src/main/java/test/types/TestJaxbJson.java b/integrations/jackson/jackson-itest/src/main/java/test/types/TestJaxbJson.java new file mode 100644 index 0000000..42ae28e --- /dev/null +++ b/integrations/jackson/jackson-itest/src/main/java/test/types/TestJaxbJson.java @@ -0,0 +1,38 @@ +/* + * 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/integrations/jackson/jackson-jaxrs/LICENSE ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-jaxrs/LICENSE b/integrations/jackson/jackson-jaxrs/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/integrations/jackson/jackson-jaxrs/LICENSE @@ -0,0 +1,202 @@ + + 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/integrations/jackson/jackson-jaxrs/bnd.bnd ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-jaxrs/bnd.bnd b/integrations/jackson/jackson-jaxrs/bnd.bnd new file mode 100644 index 0000000..f303122 --- /dev/null +++ b/integrations/jackson/jackson-jaxrs/bnd.bnd @@ -0,0 +1,20 @@ +# 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.jackson.JaxbJsonBundleActivator + +-contract: * http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/integrations/jackson/jackson-jaxrs/pom.xml ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-jaxrs/pom.xml b/integrations/jackson/jackson-jaxrs/pom.xml new file mode 100644 index 0000000..9f3a14a --- /dev/null +++ b/integrations/jackson/jackson-jaxrs/pom.xml @@ -0,0 +1,95 @@ +<?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>jackson-integration</artifactId> + <version>1.0.0-SNAPSHOT</version> + </parent> + + <artifactId>org.apache.aries.jax.rs.jackson</artifactId> + <description>Apache Aries JAX-RS Jackson JSON Support</description> + <name>Apache Aries JAX-RS JAX-RS Jackson</name> + + <dependencies> + <dependency> + <groupId>com.fasterxml.jackson.jaxrs</groupId> + <artifactId>jackson-jaxrs-json-provider</artifactId> + <version>${jackson.version}</version> + </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.apache.aries.spec</groupId> + <artifactId>org.apache.aries.javax.jax.rs-api</artifactId> + <version>${aries.jaxrs.version}</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/integrations/jackson/jackson-jaxrs/src/main/java/org/apache/aries/jax/rs/jackson/JaxbJsonBundleActivator.java ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-jaxrs/src/main/java/org/apache/aries/jax/rs/jackson/JaxbJsonBundleActivator.java b/integrations/jackson/jackson-jaxrs/src/main/java/org/apache/aries/jax/rs/jackson/JaxbJsonBundleActivator.java new file mode 100644 index 0000000..a3c49a0 --- /dev/null +++ b/integrations/jackson/jackson-jaxrs/src/main/java/org/apache/aries/jax/rs/jackson/JaxbJsonBundleActivator.java @@ -0,0 +1,105 @@ +/* + * 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.jackson; + +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.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 java.util.Dictionary; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Map; + +import javax.ws.rs.ext.MessageBodyReader; +import javax.ws.rs.ext.MessageBodyWriter; + +import org.apache.aries.component.dsl.OSGi; +import org.apache.aries.component.dsl.OSGiResult; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.Constants; +import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; + +public class JaxbJsonBundleActivator implements BundleActivator { + + public static final String CONFIG_PID = "org.apache.aries.jax.rs.jackson"; + + 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 -> + register( + new String[]{ + MessageBodyReader.class.getName(), + MessageBodyWriter.class.getName() + }, + new JsonProviderPrototypeServiceFactory(properties), + getRegistrationProperties(properties) + )). + run(context); + } + + @Override + public void stop(BundleContext context) throws Exception { + _result.close(); + } + private OSGiResult _result; + + @SuppressWarnings("serial") + 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); + // Note that these are useful information, and bind us to the Jackson JAXB API + // which is otherwise only optionally required + put("jackson.jaxb.version", new com.fasterxml.jackson.module.jaxb.PackageVersion().version().toString()); + put("jackson.jaxrs.json.version", new com.fasterxml.jackson.jaxrs.json.PackageVersion().version().toString()); + }}; + + Enumeration<String> keys = properties.keys(); + + while (keys.hasMoreElements()) { + String key = keys.nextElement(); + + if(!key.startsWith(".")) { + 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/integrations/jackson/jackson-jaxrs/src/main/java/org/apache/aries/jax/rs/jackson/JsonProviderPrototypeServiceFactory.java ---------------------------------------------------------------------- diff --git a/integrations/jackson/jackson-jaxrs/src/main/java/org/apache/aries/jax/rs/jackson/JsonProviderPrototypeServiceFactory.java b/integrations/jackson/jackson-jaxrs/src/main/java/org/apache/aries/jax/rs/jackson/JsonProviderPrototypeServiceFactory.java new file mode 100644 index 0000000..11db30f --- /dev/null +++ b/integrations/jackson/jackson-jaxrs/src/main/java/org/apache/aries/jax/rs/jackson/JsonProviderPrototypeServiceFactory.java @@ -0,0 +1,84 @@ +/* + * 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.jackson; + +import java.util.ArrayList; +import java.util.Dictionary; +import java.util.List; + +import org.osgi.framework.Bundle; +import org.osgi.framework.PrototypeServiceFactory; +import org.osgi.framework.ServiceRegistration; + +import com.fasterxml.jackson.jaxrs.cfg.Annotations; +import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; + +public class JsonProviderPrototypeServiceFactory + implements PrototypeServiceFactory<JacksonJsonProvider> { + + JsonProviderPrototypeServiceFactory(Dictionary<String, ?> properties) { + _properties = properties; + } + + @Override + public JacksonJsonProvider getService( + Bundle bundle, + ServiceRegistration<JacksonJsonProvider> registration) { + + return createJsonProvider(_properties); + } + + @Override + public void ungetService( + Bundle bundle, + ServiceRegistration<JacksonJsonProvider> registration, + JacksonJsonProvider service) { + + } + + private Dictionary<String, ?> _properties; + + private JacksonJsonProvider createJsonProvider( + Dictionary<String, ?> properties) { + + List<Annotations> list = new ArrayList<>(); + + if(getBooleanProperty(properties, "jackson.annotations.enabled", true)) { + list.add(Annotations.JACKSON); + } + + if(getBooleanProperty(properties, "jaxb.annotations.enabled", true)) { + list.add(Annotations.JAXB); + } + + JacksonJsonProvider jsonProvider = new JacksonJsonProvider(list.toArray(new Annotations[list.size()])); + + // Do we want to enable any SerializationFeature, DeserializationFeature or JaxRSFeature? + + return jsonProvider; + } + + private boolean getBooleanProperty(Dictionary<String, ?> properties, String key, boolean defaultValue) { + Object object = properties.get(key); + if(object == null) { + return defaultValue; + } else { + return Boolean.parseBoolean(String.valueOf(object)); + } + } +} http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/integrations/jackson/pom.xml ---------------------------------------------------------------------- diff --git a/integrations/jackson/pom.xml b/integrations/jackson/pom.xml new file mode 100644 index 0000000..18d9e60 --- /dev/null +++ b/integrations/jackson/pom.xml @@ -0,0 +1,50 @@ +<?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.0</version> + <relativePath /> + </parent> + + <artifactId>jackson-integration</artifactId> + <name>Jackson JAXB-JSON JAX-RS Integration Project</name> + <version>1.0.0-SNAPSHOT</version> + <packaging>pom</packaging> + <properties> + <aries.jaxrs.version>1.0.0</aries.jaxrs.version> + <jackson.version>2.9.6</jackson.version> + </properties> + + <scm> + <connection>scm:git:https://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard.git</connection> + <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard.git</developerConnection> + <url>https://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard.git</url> + <tag>HEAD</tag> + </scm> + + <modules> + <module>jackson-jaxrs</module> + <module>jackson-itest</module> + </modules> + +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/7ceb8f19/integrations/pom.xml ---------------------------------------------------------------------- diff --git a/integrations/pom.xml b/integrations/pom.xml index d3004f3..e25f428 100644 --- a/integrations/pom.xml +++ b/integrations/pom.xml @@ -39,6 +39,7 @@ <modules> <module>shiro</module> + <module>jackson</module> </modules> </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/LICENSE ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/LICENSE b/jax-rs.itests-jaxb-json/LICENSE deleted file mode 100644 index d645695..0000000 --- a/jax-rs.itests-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.itests-jaxb-json/bnd.bnd ---------------------------------------------------------------------- diff --git a/jax-rs.itests-jaxb-json/bnd.bnd b/jax-rs.itests-jaxb-json/bnd.bnd deleted file mode 100644 index 422f326..0000000 --- a/jax-rs.itests-jaxb-json/bnd.bnd +++ /dev/null @@ -1,24 +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-Description: Integration Test bundle for the JSON-P Whiteboard support - -Test-Cases: \ - ${classes;CONCRETE;EXTENDS;junit.framework.TestCase},\ - ${classes;CONCRETE;ANNOTATED;org.junit.Test} - -Require-Capability: osgi.service;filter:="(objectClass=org.osgi.service.cm.ConfigurationAdmin)"
