You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2016/11/24 10:53:44 UTC
[40/50] [abbrv] aries-jax-rs-whiteboard git commit: renaming and
restructuring
renaming and restructuring
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/76e7db85
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/76e7db85
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/76e7db85
Branch: refs/heads/master
Commit: 76e7db853f4adfd8ae1d1cd13162972fabf1d906
Parents: 17c51be
Author: Raymond Auge <ra...@liferay.com>
Authored: Mon Nov 7 15:00:24 2016 -0500
Committer: Raymond Auge <ra...@liferay.com>
Committed: Mon Nov 7 15:00:24 2016 -0500
----------------------------------------------------------------------
jax-rs.example-run/augments.bnd | 77 +++++++++
jax-rs.example-run/example.bndrun | 47 ++++++
jax-rs.example-run/pom.xml | 71 +++++++++
jax-rs.example/.gitignore | 2 +
jax-rs.example/pom.xml | 27 ++++
.../portal/rest/example/ExampleAddon.java | 50 ++++++
.../portal/rest/example/ExampleApplication.java | 46 ++++++
.../portal/rest/example/ExampleFilter.java | 44 +++++
jax-rs.itests-run/itest.bndrun | 50 ++++++
jax-rs.itests-run/pom.xml | 64 ++++++++
jax-rs.itests/bnd.bnd | 5 +
jax-rs.itests/pom.xml | 33 ++++
jax-rs.itests/src/main/java/test/JaxrsTest.java | 53 +++++++
.../src/main/java/test/types/TestAddon.java | 41 +++++
.../main/java/test/types/TestApplication.java | 38 +++++
.../src/main/java/test/types/TestFilter.java | 37 +++++
jax-rs.whiteboard/.gitignore | 2 +
jax-rs.whiteboard/bnd.bnd | 61 +++++++
jax-rs.whiteboard/pom.xml | 82 ++++++++++
.../activator/CXFJaxRsBundleActivator.java | 101 ++++++++++++
.../extender/activator/ServicesRegistrator.java | 144 +++++++++++++++++
.../AddonsServiceTrackerCustomizer.java | 102 ++++++++++++
.../ApplicationServiceTrackerCustomizer.java | 141 ++++++++++++++++
.../internal/BusServiceTrackerCustomizer.java | 117 ++++++++++++++
.../internal/CXFJaxRsServiceRegistrator.java | 148 +++++++++++++++++
...AndInterceptorsServiceTrackerCustomizer.java | 123 ++++++++++++++
.../ServicesServiceTrackerCustomizer.java | 104 ++++++++++++
.../SingletonServiceTrackerCustomizer.java | 159 +++++++++++++++++++
org.apache.aries.jax-rs.bndrun/augments.bnd | 82 ----------
org.apache.aries.jax-rs.bndrun/pom.xml | 69 --------
org.apache.aries.jax-rs.bndrun/run.bndrun | 52 ------
org.apache.aries.jax-rs.example/.gitignore | 2 -
org.apache.aries.jax-rs.example/pom.xml | 27 ----
.../portal/rest/example/ExampleAddon.java | 50 ------
.../portal/rest/example/ExampleApplication.java | 46 ------
.../portal/rest/example/ExampleFilter.java | 44 -----
org.apache.aries.jax-rs.extender/.gitignore | 2 -
org.apache.aries.jax-rs.extender/bnd.bnd | 58 -------
org.apache.aries.jax-rs.extender/pom.xml | 82 ----------
.../activator/CXFJaxRsBundleActivator.java | 102 ------------
.../extender/activator/ServicesRegistrator.java | 151 ------------------
.../AddonsServiceTrackerCustomizer.java | 102 ------------
.../ApplicationServiceTrackerCustomizer.java | 141 ----------------
.../internal/BusServiceTrackerCustomizer.java | 117 --------------
.../internal/CXFJaxRsServiceRegistrator.java | 148 -----------------
...AndInterceptorsServiceTrackerCustomizer.java | 123 --------------
.../ServicesServiceTrackerCustomizer.java | 104 ------------
.../SingletonServiceTrackerCustomizer.java | 159 -------------------
.../integration-test.bndrun | 50 ------
.../pom.xml | 64 --------
org.apache.aries.jax-rs.tests/bnd.bnd | 5 -
org.apache.aries.jax-rs.tests/pom.xml | 33 ----
.../src/main/java/test/JaxrsTest.java | 55 -------
.../src/main/java/test/types/TestAddon.java | 41 -----
.../main/java/test/types/TestApplication.java | 38 -----
.../src/main/java/test/types/TestFilter.java | 37 -----
pom.xml | 12 +-
57 files changed, 1975 insertions(+), 1990 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.example-run/augments.bnd
----------------------------------------------------------------------
diff --git a/jax-rs.example-run/augments.bnd b/jax-rs.example-run/augments.bnd
new file mode 100644
index 0000000..aa1cca1
--- /dev/null
+++ b/jax-rs.example-run/augments.bnd
@@ -0,0 +1,77 @@
+-augment.javax.servlet-api: \
+ javax.servlet-api; \
+ requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.http)'"
+
+-augment.javax.ws.rs-api: \
+ javax.ws.rs-api; \
+ requirement:="osgi.implementation;filter:='(osgi.implementation=aries.jax-rs)'"
+
+-augment.org.apache.commons.fileupload: \
+ org.apache.commons.fileupload; \
+ capability:=" generic.dependency;generic.dependency='commons.fileupload'"
+
+-augment.org.apache.felix.gogo.command: \
+ org.apache.felix.gogo.command; \
+ capability:=" generic.dependency;generic.dependency='gogo.shell.command';version:Version='1.0.0'"; \
+ version='1.0.0'
+
+-augment.org.apache.felix.gogo.shell: \
+ org.apache.felix.gogo.shell; \
+ capability:=" osgi.implementation;osgi.implementation='gogo.shell';version:Version='1.0.0'"; \
+ requirement:="generic.dependency;filter:='(generic.dependency=gogo.shell.command)';effective:=active"; \
+ version='1.0.0'
+
+-augment.org.apache.felix.gogo.jline: \
+ org.apache.felix.gogo.jline; \
+ capability:=" osgi.implementation;osgi.implementation='gogo.jline';version:Version='1.0.0'"; \
+ requirement:="generic.dependency;filter:='(generic.dependency=gogo.shell.command)';effective:=active"; \
+ version='1.0.0'
+
+-augment.org.apache.felix.log: \
+ org.apache.felix.log; \
+ capability:=" osgi.implementation;osgi.implementation=osgi.log"
+
+-augment.org.apache.felix.scr: \
+ org.apache.felix.scr; \
+ requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.metatype)'"
+
+-augment.org.eclipse.equinox.coordinator: \
+ org.eclipse.equinox.coordinator; \
+ capability:=" osgi.service;objectClass=org.osgi.service.coordinator.Coordinator;effective:=active, \
+ osgi.implementation;osgi.implementation=osgi.coordinator"
+
+-augment.org.eclipse.equinox.event: \
+ org.eclipse.equinox.event; \
+ capability:=" osgi.service;objectClass=org.osgi.service.event.EventAdmin;effective:=active, \
+ osgi.implementation;osgi.implementation=osgi.event"; \
+ requirement:="osgi.extender;filter:='(osgi.extender=osgi.component)'"
+
+-augment.org.eclipse.equinox.http.jetty: \
+ org.eclipse.equinox.http.jetty; \
+ capability:=" equinox.module.data;activation.policy=eager, \
+ generic.dependency;generic.dependency='osgi.servlet.container';version:Version='1.0.0'"
+
+-augment.org.eclipse.equinox.http.servlet: \
+ org.eclipse.equinox.http.servlet; \
+ capability:=" equinox.module.data;activation.policy=eager"; \
+ requirement:="generic.dependency;filter:='(generic.dependency=commons.fileupload)';effective:=active,\
+ generic.dependency;filter:='(generic.dependency=osgi.servlet.container)';effective:=active"
+
+-augment.org.knopflerfish.bundle.useradmin: \
+ org.knopflerfish.bundle.useradmin; \
+ capability:=" osgi.service;objectClass:List<String>=org.osgi.service.useradmin.UserAdmin;effective:=active, \
+ osgi.implementation;osgi.implementation=osgi.useradmin"
+
+-augment.org.osgi.service.event: \
+ org.osgi.service.event; \
+ requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.event)'"
+
+-augment.org.osgi.service.metatype: \
+ org.osgi.service.metatype; \
+ requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.metatype)'"
+
+-augment.org.osgi.service.remoteserviceadmin: \
+ org.osgi.service.remoteserviceadmin; \
+ requirement:="osgi.remoteserviceadmin.distribution;filter:='(configs=*)', \
+ osgi.remoteserviceadmin.topology;filter:='(policy=*)', \
+ osgi.remoteserviceadmin.discovery;filter:='(protocols=*)'"
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.example-run/example.bndrun
----------------------------------------------------------------------
diff --git a/jax-rs.example-run/example.bndrun b/jax-rs.example-run/example.bndrun
new file mode 100644
index 0000000..0a28b1b
--- /dev/null
+++ b/jax-rs.example-run/example.bndrun
@@ -0,0 +1,47 @@
+-standalone:
+-include: ${.}/augments.bnd
+-resourceonly: true
+
+-plugin.A.pom.repo = \
+ aQute.bnd.repository.maven.pom.provider.BndPomRepository; \
+ snapshotUrls=https://oss.sonatype.org/content/repositories/osgi/; \
+ releaseUrls=https://repo1.maven.org/maven2/; \
+ pom=${.}/pom.xml; \
+ name=pom.repo; \
+ location=${.}/target/cached.xml
+
+-runrequires: \
+ osgi.identity;filter:='(osgi.identity=org.apache.aries.jax-rs.example)',\
+ osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.jline)'
+
+ # ,\
+# osgi.identity;filter:='(osgi.identity=org.apache.aries.jax-rs.whiteboard)'
+
+-runfw: org.eclipse.osgi;version='[3.10.100.v20150529-1857,3.10.100.v20150529-1857]'
+-runbundles: \
+ javax.annotation-api;version='[1.2.0,1.2.1)',\
+ javax.json-api;version='[1.0.0,1.0.1)',\
+ javax.ws.rs-api;version='[2.0.1,2.0.2)',\
+ log4j;version='[1.2.17,1.2.18)',\
+ org.apache.aries.jax-rs.example;version='[1.0.0,1.0.1)',\
+ org.apache.aries.jax-rs.whiteboard;version='[1.0.0,1.0.1)',\
+ org.apache.felix.configadmin;version='[1.8.8,1.8.9)',\
+ 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.apache.felix.scr;version='[2.0.2,2.0.3)',\
+ org.apache.ws.xmlschema.core;version='[2.2.1,2.2.2)',\
+ org.eclipse.equinox.event;version='[1.3.100,1.3.101)',\
+ org.eclipse.equinox.metatype;version='[1.4.100,1.4.101)',\
+ org.objectweb.asm;version='[5.0.4,5.0.5)',\
+ org.osgi.service.event;version='[1.3.1,1.3.2)',\
+ org.osgi.service.metatype;version='[1.3.0,1.3.1)',\
+ slf4j.api;version='[1.7.21,1.7.22)',\
+ slf4j.log4j12;version='[1.6.1,1.6.2)'
+
+-runee: JavaSE-1.8
+-resolve.effective: resolve, active
+-runproperties.eqnx: \
+ osgi.console.enable.builtin=false, \
+ osgi.console=, \
+ org.osgi.service.http.port=8080
+-runsystemcapabilities.dflt: ${native_capability}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.example-run/pom.xml
----------------------------------------------------------------------
diff --git a/jax-rs.example-run/pom.xml b/jax-rs.example-run/pom.xml
new file mode 100644
index 0000000..31407b2
--- /dev/null
+++ b/jax-rs.example-run/pom.xml
@@ -0,0 +1,71 @@
+<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</groupId>
+ <artifactId>org.apache.aries.jax-rs</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.apache.aries.jax-rs.example-run</artifactId>
+
+ <packaging>pom</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>bnd-export-maven-plugin</artifactId>
+ <version>3.4.0-SNAPSHOT</version>
+ <configuration>
+ <failOnChanges>false</failOnChanges>
+ <resolve>true</resolve>
+ <bndruns>
+ <bndrun>example.bndrun</bndrun>
+ </bndruns>
+ <targetDir>.</targetDir>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>export</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.aries</groupId>
+ <artifactId>org.apache.aries.jax-rs.example</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.aries</groupId>
+ <artifactId>org.apache.aries.jax-rs.whiteboard</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.http.jetty</artifactId>
+ <version>3.4.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.gogo.command</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.gogo.jline</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.enroute.pom.distro</artifactId>
+ <version>2.0.0</version>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.example/.gitignore
----------------------------------------------------------------------
diff --git a/jax-rs.example/.gitignore b/jax-rs.example/.gitignore
new file mode 100644
index 0000000..83ccc54
--- /dev/null
+++ b/jax-rs.example/.gitignore
@@ -0,0 +1,2 @@
+/build/
+/bin/
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.example/pom.xml
----------------------------------------------------------------------
diff --git a/jax-rs.example/pom.xml b/jax-rs.example/pom.xml
new file mode 100644
index 0000000..a6473c4
--- /dev/null
+++ b/jax-rs.example/pom.xml
@@ -0,0 +1,27 @@
+<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</groupId>
+ <artifactId>org.apache.aries.jax-rs</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.apache.aries.jax-rs.example</artifactId>
+ <packaging>jar</packaging>
+ <description>Apache Aries JAX-RS Example</description>
+ <dependencies>
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>javax.ws.rs-api</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.component.annotations</artifactId>
+ <version>1.3.0</version>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleAddon.java
----------------------------------------------------------------------
diff --git a/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleAddon.java b/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleAddon.java
new file mode 100644
index 0000000..5431e76
--- /dev/null
+++ b/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleAddon.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.rest.example;
+
+import org.osgi.service.component.annotations.Component;
+
+import javax.annotation.PostConstruct;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.UriInfo;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+@Component(
+ immediate = true,
+ property = "osgi.jaxrs.resource.base=/examples/example-addon",
+ service = ExampleAddon.class
+)
+public class ExampleAddon {
+
+ @GET
+ @Path("/{name}")
+ public String sayHello(@PathParam("name") String name) {
+ return "Hello " + name;
+ }
+
+ @PostConstruct
+ public void init() {
+ System.out.println("URIINFO: " + _uriInfo);
+ }
+
+ @Context
+ UriInfo _uriInfo;
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleApplication.java
----------------------------------------------------------------------
diff --git a/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleApplication.java b/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleApplication.java
new file mode 100644
index 0000000..25234b2
--- /dev/null
+++ b/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleApplication.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p/>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p/>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.rest.example;
+
+import org.osgi.service.component.annotations.Component;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Application;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+@Component(
+ immediate = true,
+ property = "osgi.jaxrs.application.base=/example-application",
+ service = Application.class
+)
+public class ExampleApplication extends Application {
+
+ @Override
+ public Set<Object> getSingletons() {
+ return Collections.<Object>singleton(this);
+ }
+
+ @GET
+ @Produces("text/plain")
+ public String sayHello() {
+ return "Hello world";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleFilter.java
----------------------------------------------------------------------
diff --git a/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleFilter.java b/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleFilter.java
new file mode 100644
index 0000000..c2e89ac
--- /dev/null
+++ b/jax-rs.example/src/main/java/com/liferay/portal/rest/example/ExampleFilter.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.rest.example;
+
+import org.osgi.service.component.annotations.Component;
+
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.ext.Provider;
+import java.io.IOException;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+@Component(
+ immediate = true,
+ property = {
+ "jaxrs.application.select=(component.name=com.liferay.portal.rest.example.ExampleApplication)",
+ "osgi.jaxrs.filter.base=/examples"
+ }
+)
+@Provider
+public class ExampleFilter implements ContainerRequestFilter {
+
+ @Override
+ public void filter(ContainerRequestContext requestContext)
+ throws IOException {
+
+ System.out.println("FILTERED!");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.itests-run/itest.bndrun
----------------------------------------------------------------------
diff --git a/jax-rs.itests-run/itest.bndrun b/jax-rs.itests-run/itest.bndrun
new file mode 100644
index 0000000..e610def
--- /dev/null
+++ b/jax-rs.itests-run/itest.bndrun
@@ -0,0 +1,50 @@
+-standalone:
+
+-plugin.integration.test = \
+ aQute.bnd.repository.maven.pom.provider.BndPomRepository; \
+ snapshotUrls=https://oss.sonatype.org/content/repositories/osgi/; \
+ releaseUrls=https://repo1.maven.org/maven2/; \
+ pom=${.}/pom.xml; \
+ name=integration.test; \
+ location=${.}/target/cached.xml
+
+-runrequires: \
+ osgi.identity;filter:='(osgi.identity=org.apache.aries.jax-rs.itests)'
+
+-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
+
+-runsystempackages.eqnx: javax.script
+-runsystemcapabilities.dflt: ${native_capability}
+-runproperties.eqnx: \
+ osgi.console.enable.builtin=false, \
+ osgi.console=, \
+ org.osgi.service.http.port=8080
+-runbundles: \
+ javax.annotation-api; version='[1.2.0,1.2.1)',\
+ javax.json-api; version='[1.0.0,1.0.1)',\
+ javax.ws.rs-api; version='[2.0.1,2.0.2)',\
+ log4j; version='[1.2.17,1.2.18)',\
+ org.apache.aries.jax-rs.itests; version='[1.0.0,1.0.1)',\
+ org.apache.aries.jax-rs.whiteboard; version='[1.0.0,1.0.1)',\
+ org.apache.felix.bundlerepository; version='[1.6.0,1.6.1)',\
+ org.apache.felix.configadmin; version='[1.8.8,1.8.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.apache.felix.scr; version='[2.0.2,2.0.3)',\
+ org.apache.ws.xmlschema.core; version='[2.2.1,2.2.2)',\
+ org.eclipse.equinox.event; version='[1.3.100,1.3.101)',\
+ org.eclipse.equinox.metatype; version='[1.4.100,1.4.101)',\
+ org.objectweb.asm; version='[5.0.4,5.0.5)',\
+ org.osgi.compendium; version='[4.1.0,4.1.1)',\
+ org.osgi.service.event; version='[1.3.1,1.3.2)',\
+ org.osgi.service.metatype; version='[1.3.0,1.3.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.21,1.7.22)',\
+ slf4j.log4j12; version='[1.6.1,1.6.2)'
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.itests-run/pom.xml
----------------------------------------------------------------------
diff --git a/jax-rs.itests-run/pom.xml b/jax-rs.itests-run/pom.xml
new file mode 100644
index 0000000..63ea8fe
--- /dev/null
+++ b/jax-rs.itests-run/pom.xml
@@ -0,0 +1,64 @@
+<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</groupId>
+ <artifactId>org.apache.aries.jax-rs</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.apache.aries.jax-rs.itests-run</artifactId>
+
+ <packaging>pom</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>bnd-testing-maven-plugin</artifactId>
+ <version>3.4.0-SNAPSHOT</version>
+ <configuration>
+ <failOnChanges>false</failOnChanges>
+ <resolve>false</resolve>
+ <bndruns>
+ <bndrun>itest.bndrun</bndrun>
+ </bndruns>
+ <targetDir>.</targetDir>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>testing</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.aries</groupId>
+ <artifactId>org.apache.aries.jax-rs.itests</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.aries</groupId>
+ <artifactId>org.apache.aries.jax-rs.whiteboard</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.http.jetty</artifactId>
+ <version>3.4.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.enroute.pom.distro</artifactId>
+ <version>2.0.0</version>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.itests/bnd.bnd
----------------------------------------------------------------------
diff --git a/jax-rs.itests/bnd.bnd b/jax-rs.itests/bnd.bnd
new file mode 100644
index 0000000..264db93
--- /dev/null
+++ b/jax-rs.itests/bnd.bnd
@@ -0,0 +1,5 @@
+Bundle-Description: Integration Test bundle for the JAX-RS extender
+
+Test-Cases: \
+ ${classes;CONCRETE;EXTENDS;junit.framework.TestCase},\
+ ${classes;CONCRETE;ANNOTATED;org.junit.Test}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.itests/pom.xml
----------------------------------------------------------------------
diff --git a/jax-rs.itests/pom.xml b/jax-rs.itests/pom.xml
new file mode 100644
index 0000000..42ed192
--- /dev/null
+++ b/jax-rs.itests/pom.xml
@@ -0,0 +1,33 @@
+<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</groupId>
+ <artifactId>org.apache.aries.jax-rs</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.apache.aries.jax-rs.itests</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>javax.ws.rs-api</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>5.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.enroute.junit.wrapper</artifactId>
+ <version>4.12.0</version>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.itests/src/main/java/test/JaxrsTest.java
----------------------------------------------------------------------
diff --git a/jax-rs.itests/src/main/java/test/JaxrsTest.java b/jax-rs.itests/src/main/java/test/JaxrsTest.java
new file mode 100644
index 0000000..c4afe0a
--- /dev/null
+++ b/jax-rs.itests/src/main/java/test/JaxrsTest.java
@@ -0,0 +1,53 @@
+package test;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.ServiceTracker;
+
+import junit.framework.TestCase;
+import test.types.TestAddon;
+
+public class JaxrsTest extends TestCase {
+
+ static BundleContext bundleContext = FrameworkUtil.getBundle(
+ JaxrsTest.class).getBundleContext();
+
+ public void testEndPoint() throws Exception {
+ ServiceRegistration<?> serviceRegistration = null;
+
+ try {
+ TestAddon testAddon = new TestAddon();
+
+ Dictionary<String, Object> properties = new Hashtable<>();
+ properties.put("osgi.jaxrs.resource.base", "/test-addon");
+
+ serviceRegistration = bundleContext.registerService(
+ Object.class, testAddon, properties);
+
+ // TODO this availability should be checked through a jaxrs runtime service
+
+ Filter filter = bundleContext.createFilter("(CXF_ENDPOINT_ADDRESS=/test-addon)");
+
+ ServiceTracker<?, ?> st = new ServiceTracker<>(bundleContext, filter, null);
+
+ st.open();
+
+ if (st.waitForService(5000) == null) {
+ fail();
+ }
+
+ // TODO add http client to connect to the endpoint
+ }
+ finally {
+ if (serviceRegistration != null) {
+ serviceRegistration.unregister();
+ }
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.itests/src/main/java/test/types/TestAddon.java
----------------------------------------------------------------------
diff --git a/jax-rs.itests/src/main/java/test/types/TestAddon.java b/jax-rs.itests/src/main/java/test/types/TestAddon.java
new file mode 100644
index 0000000..849d582
--- /dev/null
+++ b/jax-rs.itests/src/main/java/test/types/TestAddon.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package test.types;
+
+import javax.annotation.PostConstruct;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.UriInfo;
+
+//property = "osgi.jaxrs.resource.base=/test-addon",
+public class TestAddon {
+
+ @GET
+ @Path("/{name}")
+ public String sayHello(@PathParam("name") String name) {
+ return "Hello " + name;
+ }
+
+ @PostConstruct
+ public void init() {
+ System.out.println("URIINFO: " + _uriInfo);
+ }
+
+ @Context
+ UriInfo _uriInfo;
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.itests/src/main/java/test/types/TestApplication.java
----------------------------------------------------------------------
diff --git a/jax-rs.itests/src/main/java/test/types/TestApplication.java b/jax-rs.itests/src/main/java/test/types/TestApplication.java
new file mode 100644
index 0000000..c7e65f3
--- /dev/null
+++ b/jax-rs.itests/src/main/java/test/types/TestApplication.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p/>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p/>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package test.types;
+
+import java.util.Collections;
+import java.util.Set;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Application;
+
+// property = "osgi.jaxrs.application.base=/example-application",
+public class TestApplication extends Application {
+
+ @Override
+ public Set<Object> getSingletons() {
+ return Collections.<Object>singleton(this);
+ }
+
+ @GET
+ @Produces("text/plain")
+ public String sayHello() {
+ return "Hello world";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.itests/src/main/java/test/types/TestFilter.java
----------------------------------------------------------------------
diff --git a/jax-rs.itests/src/main/java/test/types/TestFilter.java b/jax-rs.itests/src/main/java/test/types/TestFilter.java
new file mode 100644
index 0000000..928221a
--- /dev/null
+++ b/jax-rs.itests/src/main/java/test/types/TestFilter.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package test.types;
+
+import java.io.IOException;
+
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.ext.Provider;
+
+// property = {
+// "jaxrs.application.select=(component.name=com.liferay.portal.rest.example.ExampleApplication)",
+// "osgi.jaxrs.filter.base=/examples"
+// }
+@Provider
+public class TestFilter implements ContainerRequestFilter {
+
+ @Override
+ public void filter(ContainerRequestContext requestContext)
+ throws IOException {
+
+ System.out.println("FILTERED!");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/.gitignore
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/.gitignore b/jax-rs.whiteboard/.gitignore
new file mode 100644
index 0000000..83ccc54
--- /dev/null
+++ b/jax-rs.whiteboard/.gitignore
@@ -0,0 +1,2 @@
+/build/
+/bin/
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/bnd.bnd
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/bnd.bnd b/jax-rs.whiteboard/bnd.bnd
new file mode 100644
index 0000000..c18bdf6
--- /dev/null
+++ b/jax-rs.whiteboard/bnd.bnd
@@ -0,0 +1,61 @@
+Bundle-Activator: com.liferay.portal.remote.rest.extender.activator.CXFJaxRsBundleActivator
+Provide-Capability: \
+ osgi.implementation; \
+ osgi.implementation='aries.jax-rs'; \
+ version:Version='${Bundle-Version}'
+Require-Capability: \
+ osgi.implementation; \
+ filter:='(osgi.implementation=osgi.http)'
+Import-Package:\
+ !com.sun.*,\
+ !com.ctc.wstx.*,\
+ !javax.imageio.*,\
+ !javax.jws.*,\
+ !javax.net.*,\
+ !javax.security.*,\
+ !javax.tools.*,\
+ !javax.validation.*,\
+ !javax.wsdl.*,\
+ !net.sf.cglib.proxy.*,\
+ !org.apache.abdera.*,\
+ !org.apache.aries.*,\
+ !org.apache.cxf.*,\
+ !org.apache.neethi.*,\
+ !org.apache.velocity.*,\
+ !org.apache.xerces.*,\
+ !org.apache.xml.resolver.*,\
+ !org.apache.xmlbeans.*,\
+ !org.codehaus.stax2.*,\
+ !org.dom4j.*,\
+ !org.junit.*,\
+ !org.jvnet.fastinfoset.*,\
+ !org.jvnet.staxex.*,\
+ !org.ietf.jgss.*,\
+ !org.osgi.service.blueprint.*,\
+ !org.relaxng.datatype.*,\
+ !org.slf4j.spi.*,\
+ !org.springframework.*,\
+ *
+
+#Provide-Capability:\
+# osgi.contract;\
+# osgi.contract=JavaJAXRS;\
+# uses:="javax.ws.rs,javax.ws.rs.core,javax.ws.rs.client,javax.ws.rs.container,javax.ws.rs.ext";\
+# version:Version=2,\
+# osgi.contract;\
+# osgi.contract=JavaJSONP;\
+# uses:="javax.json,javax.json.spi,javax.json.stream";\
+# version:Version=1
+
+-exportcontents:\
+ org.apache.cxf.jaxrs.ext.*
+
+-includeresource:\
+ lib/cxf-core.jar=cxf-core-*.jar;lib:=true,\
+ lib/cxf-rt-databinding-jaxb.jar=cxf-rt-databinding-jaxb-*.jar;lib:=true,\
+ lib/cxf-rt-frontend-jaxrs.jar=cxf-rt-frontend-jaxrs-*.jar;lib:=true,\
+ lib/cxf-rt-rs-extension-providers.jar=cxf-rt-rs-extension-providers-*.jar;lib:=true,\
+ lib/cxf-rt-transports-http.jar=cxf-rt-transports-http-*.jar;lib:=true,\
+ lib/cxf-tools-common.jar=cxf-tools-common-*.jar;lib:=true,\
+ lib/cxf-tools-validator.jar=cxf-tools-validator-*.jar;lib:=true,\
+ lib/jettison.jar=jettison-*.jar;lib:=true
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/pom.xml
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/pom.xml b/jax-rs.whiteboard/pom.xml
new file mode 100644
index 0000000..10220a1
--- /dev/null
+++ b/jax-rs.whiteboard/pom.xml
@@ -0,0 +1,82 @@
+<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</groupId>
+ <artifactId>org.apache.aries.jax-rs</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.apache.aries.jax-rs.whiteboard</artifactId>
+ <packaging>jar</packaging>
+ <description>Apache Aries JAX-RS Whiteboard</description>
+ <dependencies>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-databinding-jaxb</artifactId>
+ <version>3.1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-extension-providers</artifactId>
+ <version>3.1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+ <version>3.1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http</artifactId>
+ <version>3.1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-tools-common</artifactId>
+ <version>3.1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-tools-validator</artifactId>
+ <version>3.1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ <version>1.3.8</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.annotation</artifactId>
+ <version>6.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>5.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>5.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.http.api</artifactId>
+ <version>3.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.7.2</version>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/activator/CXFJaxRsBundleActivator.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/activator/CXFJaxRsBundleActivator.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/activator/CXFJaxRsBundleActivator.java
new file mode 100644
index 0000000..d81ff31
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/activator/CXFJaxRsBundleActivator.java
@@ -0,0 +1,101 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.activator;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import javax.ws.rs.ext.RuntimeDelegate;
+
+import org.apache.cxf.Bus;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.wiring.BundleWiring;
+import org.osgi.util.tracker.ServiceTracker;
+
+import com.liferay.portal.remote.rest.extender.internal.BusServiceTrackerCustomizer;
+import com.liferay.portal.remote.rest.extender.internal.ServicesServiceTrackerCustomizer;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+public class CXFJaxRsBundleActivator implements BundleActivator {
+
+ private ServiceTracker<?, ?> _busServiceTracker;
+ private ServiceTracker<?, ?> _singletonsTracker;
+ private ServicesRegistrator _servicesRegistrator;
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ Thread thread = Thread.currentThread();
+
+ ClassLoader contextClassLoader = thread.getContextClassLoader();
+
+ Bundle bundle = bundleContext.getBundle();
+
+ BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
+
+ thread.setContextClassLoader(bundleWiring.getClassLoader());
+
+ try {
+
+ // Initialize instance so it is never looked up again
+
+ RuntimeDelegate.getInstance();
+ }
+ finally {
+ thread.setContextClassLoader(contextClassLoader);
+ }
+
+ Dictionary<String, Object> runtimeProperties = new Hashtable<>();
+
+ runtimeProperties.put("endpoints", new ArrayList<String>());
+
+ // TODO make the context path of the JAX-RS Whiteboard configurable.
+
+ _servicesRegistrator = new ServicesRegistrator(bundleContext);
+
+ _servicesRegistrator.start();
+
+ _busServiceTracker = new ServiceTracker<>(
+ bundleContext, Bus.class,
+ new BusServiceTrackerCustomizer(bundleContext));
+
+ _busServiceTracker.open();
+
+ Filter filter = bundleContext.createFilter(
+ "(jaxrs.application.select=*)");
+
+ _singletonsTracker = new ServiceTracker<>(
+ bundleContext, filter,
+ new ServicesServiceTrackerCustomizer(bundleContext));
+
+ _singletonsTracker.open();
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ _busServiceTracker.close();
+
+ _singletonsTracker.close();
+
+ _servicesRegistrator.stop();
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/activator/ServicesRegistrator.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/activator/ServicesRegistrator.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/activator/ServicesRegistrator.java
new file mode 100644
index 0000000..e457674
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/activator/ServicesRegistrator.java
@@ -0,0 +1,144 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.activator;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.CXFBusFactory;
+import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.http.context.ServletContextHelper;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.Servlet;
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+public class ServicesRegistrator
+ implements ServiceTrackerCustomizer<ServletContextHelper, Object> {
+
+ public ServicesRegistrator(BundleContext bundleContext) {
+ _bundleContext = bundleContext;
+ }
+
+ @Override
+ public Object addingService(
+ ServiceReference<ServletContextHelper> reference) {
+
+ String contextPath = (String)reference.getProperty(
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_PATH);
+
+ CXFNonSpringServlet cxfNonSpringServlet = new CXFNonSpringServlet();
+
+ CXFBusFactory cxfBusFactory =
+ (CXFBusFactory) CXFBusFactory.newInstance(
+ CXFBusFactory.class.getName());
+
+ Bus bus = cxfBusFactory.createBus();
+
+ Dictionary<String, Object> properties = new Hashtable<>();
+
+ properties.put(
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT,
+ "(" + HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME + "=" +
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_DEFAULT_CONTEXT_NAME + ")");
+ properties.put(
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/*");
+ properties.put(Constants.SERVICE_RANKING, -1);
+
+ cxfNonSpringServlet.setBus(bus);
+
+ _servletServiceRegistration = _bundleContext.registerService(
+ Servlet.class, cxfNonSpringServlet, properties);
+
+ properties = new Hashtable<>();
+
+ properties.put(
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_PATH,
+ contextPath);
+
+ _busServiceRegistration = _bundleContext.registerService(
+ Bus.class, bus, properties);
+
+ return new Object();
+ }
+
+ @Override
+ public void modifiedService(
+ ServiceReference<ServletContextHelper> reference, Object object) {
+ }
+
+ @Override
+ public void removedService(
+ ServiceReference<ServletContextHelper> reference, Object object) {
+
+ try {
+ _busServiceRegistration.unregister();
+ }
+ catch (Exception e) {
+ if (_logger.isWarnEnabled()) {
+ _logger.warn(
+ "Unable to unregister CXF bus service registration " +
+ _busServiceRegistration);
+ }
+ }
+
+ try {
+ _servletServiceRegistration.unregister();
+ }
+ catch (Exception e) {
+ if (_logger.isWarnEnabled()) {
+ _logger.warn(
+ "Unable to unregister servlet service registration " +
+ _servletServiceRegistration);
+ }
+ }
+ }
+
+ public void start() throws InvalidSyntaxException {
+ Filter filter = _bundleContext.createFilter(
+ "(&(objectClass=" + ServletContextHelper.class.getName() + ")(" +
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME + "=" +
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_DEFAULT_CONTEXT_NAME +"))");
+
+ _serviceTracker = new ServiceTracker<>(_bundleContext, filter, this);
+
+ _serviceTracker.open();
+ }
+
+ public void stop() {
+ _serviceTracker.close();
+ }
+
+ private static final Logger _logger = LoggerFactory.getLogger(
+ ServicesRegistrator.class);
+
+ private final BundleContext _bundleContext;
+ private ServiceRegistration<Bus> _busServiceRegistration;
+ private ServiceTracker<ServletContextHelper, Object> _serviceTracker;
+ private ServiceRegistration<Servlet> _servletServiceRegistration;
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/AddonsServiceTrackerCustomizer.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/AddonsServiceTrackerCustomizer.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/AddonsServiceTrackerCustomizer.java
new file mode 100644
index 0000000..8900ded
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/AddonsServiceTrackerCustomizer.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.internal;
+
+import com.liferay.portal.remote.rest.extender.internal.CXFJaxRsServiceRegistrator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+import javax.ws.rs.ext.Provider;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+public class AddonsServiceTrackerCustomizer
+ implements ServiceTrackerCustomizer<CXFJaxRsServiceRegistrator, CXFJaxRsServiceRegistrator> {
+
+ private final BundleContext _bundleContext;
+ private final ClassLoader _classLoader;
+ private final Class<?> _serviceClass;
+ private final Object _service;
+
+ public AddonsServiceTrackerCustomizer(
+ BundleContext bundleContext, ClassLoader classLoader,
+ Object service) {
+
+ _bundleContext = bundleContext;
+ _classLoader = classLoader;
+ _service = service;
+
+ _serviceClass = service.getClass();
+ }
+
+ @Override
+ public CXFJaxRsServiceRegistrator addingService(
+ ServiceReference<CXFJaxRsServiceRegistrator> reference) {
+
+ Thread thread = Thread.currentThread();
+
+ ClassLoader contextClassLoader =
+ thread.getContextClassLoader();
+
+ CXFJaxRsServiceRegistrator cxfJaxRsServiceRegistrator =
+ _bundleContext.getService(reference);
+
+ try {
+ thread.setContextClassLoader(_classLoader);
+
+ if (_serviceClass.isAnnotationPresent(Provider.class)) {
+ cxfJaxRsServiceRegistrator.addProvider(_service);
+ } else {
+ cxfJaxRsServiceRegistrator.addService(_service);
+ }
+
+ return cxfJaxRsServiceRegistrator;
+ }
+ catch (Exception e) {
+ _bundleContext.ungetService(reference);
+
+ throw e;
+ }
+ finally {
+ thread.setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ @Override
+ public void modifiedService(
+ ServiceReference<CXFJaxRsServiceRegistrator> reference,
+ CXFJaxRsServiceRegistrator registrator) {
+
+ removedService(reference, registrator);
+
+ addingService(reference);
+ }
+
+ @Override
+ public void removedService(
+ ServiceReference<CXFJaxRsServiceRegistrator> reference,
+ CXFJaxRsServiceRegistrator registrator) {
+
+ if (_serviceClass.isAnnotationPresent(Provider.class)) {
+ registrator.removeProvider(_service);
+ } else {
+ registrator.removeService(_service);
+ }
+
+ _bundleContext.ungetService(reference);
+ }
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/ApplicationServiceTrackerCustomizer.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/ApplicationServiceTrackerCustomizer.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/ApplicationServiceTrackerCustomizer.java
new file mode 100644
index 0000000..8296683
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/ApplicationServiceTrackerCustomizer.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.internal;
+
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import javax.ws.rs.core.Application;
+
+import org.apache.cxf.Bus;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+class ApplicationServiceTrackerCustomizer
+ implements ServiceTrackerCustomizer
+ <Application, ApplicationServiceTrackerCustomizer.Tracked> {
+
+ private BundleContext _bundleContext;
+ private Bus _bus;
+
+ public ApplicationServiceTrackerCustomizer(
+ BundleContext bundleContext, Bus bus) {
+
+ _bundleContext = bundleContext;
+ _bus = bus;
+ }
+
+ @Override
+ public Tracked addingService(
+ ServiceReference<Application> serviceReference) {
+
+ Application application = _bundleContext.getService(
+ serviceReference);
+
+ try {
+ String[] propertyKeys = serviceReference.getPropertyKeys();
+
+ Map<String, Object> properties = new HashMap<>(
+ propertyKeys.length);
+
+ for (String propertyKey : propertyKeys) {
+ properties.put(
+ propertyKey, serviceReference.getProperty(propertyKey));
+ }
+
+ properties.put(
+ "CXF_ENDPOINT_ADDRESS",
+ serviceReference.getProperty("osgi.jaxrs.application.base").
+ toString());
+
+ CXFJaxRsServiceRegistrator cxfJaxRsServiceRegistrator =
+ new CXFJaxRsServiceRegistrator(_bus, application, properties);
+
+ return new Tracked(
+ cxfJaxRsServiceRegistrator, application,
+ _bundleContext.registerService(
+ CXFJaxRsServiceRegistrator.class,
+ cxfJaxRsServiceRegistrator, new Hashtable<>(properties)));
+ }
+ catch (Throwable e) {
+ _bundleContext.ungetService(serviceReference);
+
+ throw e;
+ }
+ }
+
+ @Override
+ public void modifiedService(
+ ServiceReference<Application> serviceReference, Tracked tracked) {
+
+ removedService(serviceReference, tracked);
+
+ addingService(serviceReference);
+ }
+
+ @Override
+ public void removedService(
+ ServiceReference<Application> reference, Tracked tracked) {
+
+ _bundleContext.ungetService(reference);
+
+ tracked.getCxfJaxRsServiceRegistrator().close();
+
+ tracked.getCxfJaxRsServiceRegistratorServiceRegistration().unregister();
+ }
+
+ public static class Tracked {
+
+ private final CXFJaxRsServiceRegistrator _cxfJaxRsServiceRegistrator;
+ private final Application _application;
+ private final ServiceRegistration<CXFJaxRsServiceRegistrator>
+ _cxfJaxRsServiceRegistratorServiceRegistration;
+
+ public Application getApplication() {
+ return _application;
+ }
+
+ public CXFJaxRsServiceRegistrator getCxfJaxRsServiceRegistrator() {
+ return _cxfJaxRsServiceRegistrator;
+ }
+
+ public ServiceRegistration<CXFJaxRsServiceRegistrator>
+ getCxfJaxRsServiceRegistratorServiceRegistration() {
+
+ return _cxfJaxRsServiceRegistratorServiceRegistration;
+ }
+
+ public Tracked(
+ CXFJaxRsServiceRegistrator cxfJaxRsServiceRegistrator,
+ Application application,
+ ServiceRegistration<CXFJaxRsServiceRegistrator>
+ cxfJaxRsServiceRegistratorServiceRegistration) {
+
+ _cxfJaxRsServiceRegistrator = cxfJaxRsServiceRegistrator;
+ _application = application;
+ _cxfJaxRsServiceRegistratorServiceRegistration =
+ cxfJaxRsServiceRegistratorServiceRegistration;
+ }
+
+ }
+}
+
+
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/BusServiceTrackerCustomizer.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/BusServiceTrackerCustomizer.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/BusServiceTrackerCustomizer.java
new file mode 100644
index 0000000..ba15c1e
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/BusServiceTrackerCustomizer.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.internal;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import javax.ws.rs.core.Application;
+
+import org.apache.cxf.Bus;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+public class BusServiceTrackerCustomizer
+ implements ServiceTrackerCustomizer<Bus, Collection<ServiceTracker<?, ?>>> {
+
+ private BundleContext _bundleContext;
+
+ public BusServiceTrackerCustomizer(BundleContext bundleContext) {
+ _bundleContext = bundleContext;
+ }
+
+ @Override
+ public Collection<ServiceTracker<?, ?>>
+ addingService(ServiceReference<Bus> serviceReference) {
+
+ Bus bus = _bundleContext.getService(serviceReference);
+
+ try {
+ ServiceTracker<Application,?> applicationTracker =
+ new ServiceTracker<>(_bundleContext, getApplicationFilter(),
+ new ApplicationServiceTrackerCustomizer(
+ _bundleContext, bus));
+
+ applicationTracker.open();
+
+ ServiceTracker<Object, ?> singletonsServiceTracker =
+ new ServiceTracker<>(_bundleContext, getSingletonsFilter(),
+ new SingletonServiceTrackerCustomizer(_bundleContext, bus));
+
+ singletonsServiceTracker.open();
+
+ ServiceTracker<Object, ?> filtersAndInterceptorsServiceTracker =
+ new ServiceTracker<>(_bundleContext, getFiltersFilter(),
+ new FiltersAndInterceptorsServiceTrackerCustomizer(
+ _bundleContext));
+
+ filtersAndInterceptorsServiceTracker.open();
+
+ return Arrays.asList(applicationTracker, singletonsServiceTracker, filtersAndInterceptorsServiceTracker);
+ }
+ catch (InvalidSyntaxException ise) {
+ throw new RuntimeException(ise);
+ }
+ catch (Exception e) {
+ _bundleContext.ungetService(serviceReference);
+
+ throw e;
+ }
+ }
+
+ private Filter getFiltersFilter() throws InvalidSyntaxException {
+ return _bundleContext.createFilter("(osgi.jaxrs.filter.base=*)");
+ }
+
+ private Filter getApplicationFilter() throws InvalidSyntaxException {
+ return _bundleContext.createFilter(
+ "(&(objectClass=" + Application.class.getName() + ")" +
+ "(osgi.jaxrs.application.base=*))");
+ }
+
+ private Filter getSingletonsFilter() throws InvalidSyntaxException {
+ return _bundleContext.createFilter("(osgi.jaxrs.resource.base=*)");
+ }
+
+ @Override
+ public void modifiedService(
+ ServiceReference<Bus> reference,
+ Collection<ServiceTracker<?, ?>> serviceTrackers) {
+
+ removedService(reference, serviceTrackers);
+
+ addingService(reference);
+ }
+
+ @Override
+ public void removedService(
+ ServiceReference<Bus> serviceReference,
+ Collection<ServiceTracker<?, ?>> serviceTrackers) {
+
+ _bundleContext.ungetService(serviceReference);
+
+ for (ServiceTracker<?, ?> serviceTracker : serviceTrackers) {
+ serviceTracker.close();
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/CXFJaxRsServiceRegistrator.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/CXFJaxRsServiceRegistrator.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/CXFJaxRsServiceRegistrator.java
new file mode 100644
index 0000000..7449ec8
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/CXFJaxRsServiceRegistrator.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.internal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+
+import javax.ws.rs.core.Application;
+import javax.ws.rs.ext.RuntimeDelegate;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.apache.cxf.jaxrs.provider.json.JSONProvider;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+public class CXFJaxRsServiceRegistrator {
+
+ public CXFJaxRsServiceRegistrator(
+ Bus bus, Application application, Map<String, Object> properties) {
+
+ _bus = bus;
+ _application = application;
+ _properties = properties;
+
+ rewire();
+ }
+
+ public void close() {
+ if (_closed) {
+ return;
+ }
+
+ if (_server != null) {
+ _server.destroy();
+ }
+
+ _closed = true;
+ }
+
+ public void addProvider(Object provider) {
+ if (_closed) {
+ return;
+ }
+
+ _providers.add(provider);
+
+ rewire();
+ }
+
+ public void addService(Object service) {
+ if (_closed) {
+ return;
+ }
+
+ _services.add(service);
+
+ rewire();
+ }
+
+ public void removeProvider(Object provider) {
+ if (_closed) {
+ return;
+ }
+
+ _providers.remove(provider);
+
+ rewire();
+ }
+
+ public void removeService(Object service) {
+ if (_closed) {
+ return;
+ }
+
+ _services.remove(service);
+
+ rewire();
+ }
+
+ protected synchronized void rewire() {
+ if (_server != null) {
+ _server.destroy();
+ }
+
+ RuntimeDelegate runtimeDelegate = RuntimeDelegate.getInstance();
+
+ JAXRSServerFactoryBean jaxRsServerFactoryBean =
+ runtimeDelegate.createEndpoint(
+ _application, JAXRSServerFactoryBean.class);
+
+ jaxRsServerFactoryBean.setBus(_bus);
+ jaxRsServerFactoryBean.setProperties(_properties);
+
+ JSONProvider<Object> jsonProvider = new JSONProvider<>();
+
+ jsonProvider.setDropCollectionWrapperElement(true);
+ jsonProvider.setDropRootElement(true);
+ jsonProvider.setSerializeAsArray(true);
+ jsonProvider.setSupportUnwrapped(true);
+
+ jaxRsServerFactoryBean.setProvider(jsonProvider);
+
+ for (Object provider : _providers) {
+ jaxRsServerFactoryBean.setProvider(provider);
+ }
+
+ for (Object service : _services) {
+ jaxRsServerFactoryBean.setResourceProvider(
+ new SingletonResourceProvider(service, true));
+ }
+
+ String address = _properties.get("CXF_ENDPOINT_ADDRESS").toString();
+
+ if (address != null) {
+ jaxRsServerFactoryBean.setAddress(address);
+ }
+
+ _server = jaxRsServerFactoryBean.create();
+
+ _server.start();
+ }
+
+ private volatile boolean _closed = false;
+ private final Application _application;
+ private final Bus _bus;
+ private final Map<String, Object> _properties;
+ private final Collection<Object> _providers = new ArrayList<>();
+ private Server _server;
+ private final Collection<Object> _services = new ArrayList<>();
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/FiltersAndInterceptorsServiceTrackerCustomizer.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/FiltersAndInterceptorsServiceTrackerCustomizer.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/FiltersAndInterceptorsServiceTrackerCustomizer.java
new file mode 100644
index 0000000..07e8c7a
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/FiltersAndInterceptorsServiceTrackerCustomizer.java
@@ -0,0 +1,123 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.internal;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+public class FiltersAndInterceptorsServiceTrackerCustomizer
+ implements ServiceTrackerCustomizer<Object, ServiceTracker<?, ?>> {
+
+ private BundleContext _bundleContext;
+
+ public FiltersAndInterceptorsServiceTrackerCustomizer(
+ BundleContext bundleContext) {
+
+ _bundleContext = bundleContext;
+ }
+
+ @Override
+ public ServiceTracker<?, ?> addingService(final ServiceReference<Object> reference) {
+ final String filterBase =
+ reference.getProperty("osgi.jaxrs.filter.base").toString();
+
+ final Object service = _bundleContext.getService(reference);
+
+ ServiceTracker<CXFJaxRsServiceRegistrator, CXFJaxRsServiceRegistrator> serviceTracker = new ServiceTracker<>(
+ _bundleContext, CXFJaxRsServiceRegistrator.class,
+ new ServiceTrackerCustomizer
+ <CXFJaxRsServiceRegistrator, CXFJaxRsServiceRegistrator>() {
+
+ @Override
+ public CXFJaxRsServiceRegistrator addingService(
+ ServiceReference<CXFJaxRsServiceRegistrator> cxfReference) {
+
+ Object resourceBaseObject =
+ cxfReference.getProperty("CXF_ENDPOINT_ADDRESS");
+
+ if (resourceBaseObject == null) {
+ return null;
+ }
+
+ String resourceBase = resourceBaseObject.toString();
+
+ if (resourceBase.startsWith(filterBase)) {
+ CXFJaxRsServiceRegistrator serviceRegistrator =
+ _bundleContext.getService(cxfReference);
+ try {
+ serviceRegistrator.addProvider(service);
+
+ return serviceRegistrator;
+ }
+ finally {
+ _bundleContext.ungetService(reference);
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public void modifiedService(
+ ServiceReference<CXFJaxRsServiceRegistrator> reference,
+ CXFJaxRsServiceRegistrator service) {
+
+ removedService(reference, service);
+ addingService(reference);
+ }
+
+ @Override
+ public void removedService(
+ ServiceReference<CXFJaxRsServiceRegistrator> reference,
+ CXFJaxRsServiceRegistrator service) {
+
+ CXFJaxRsServiceRegistrator serviceRegistrator =
+ _bundleContext.getService(reference);
+ try {
+ serviceRegistrator.removeProvider(service);
+ }
+ finally {
+ _bundleContext.ungetService(reference);
+ }
+ }
+ });
+
+ serviceTracker.open();
+
+ return serviceTracker;
+ }
+
+ @Override
+ public void modifiedService(
+ ServiceReference<Object> reference, ServiceTracker<?, ?> serviceTracker) {
+
+ removedService(reference, serviceTracker);
+ addingService(reference);
+ }
+
+ @Override
+ public void removedService(
+ ServiceReference<Object> reference, ServiceTracker<?, ?> serviceTracker) {
+
+ _bundleContext.ungetService(reference);
+
+ serviceTracker.close();
+ }
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/ServicesServiceTrackerCustomizer.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/ServicesServiceTrackerCustomizer.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/ServicesServiceTrackerCustomizer.java
new file mode 100644
index 0000000..433f70c
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/ServicesServiceTrackerCustomizer.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.internal;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.wiring.BundleWiring;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+public class ServicesServiceTrackerCustomizer
+ implements ServiceTrackerCustomizer
+ <Object, ServiceTracker
+ <CXFJaxRsServiceRegistrator, CXFJaxRsServiceRegistrator>> {
+
+ private final BundleContext _bundleContext;
+
+ public ServicesServiceTrackerCustomizer(BundleContext bundleContext) {
+ _bundleContext = bundleContext;
+ }
+
+ @Override
+ public ServiceTracker
+ <CXFJaxRsServiceRegistrator, CXFJaxRsServiceRegistrator>
+ addingService(ServiceReference<Object> reference) {
+
+ String applicationSelector =
+ reference.getProperty("jaxrs.application.select").toString();
+
+ Bundle bundle = reference.getBundle();
+
+ BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
+
+ ClassLoader classLoader = bundleWiring.getClassLoader();
+
+ Object service = _bundleContext.getService(reference);
+
+ try {
+ Filter filter = _bundleContext.createFilter(
+ "(&(objectClass=" + CXFJaxRsServiceRegistrator.class.getName() + ")" +
+ applicationSelector + ")");
+
+ ServiceTracker
+ <CXFJaxRsServiceRegistrator, CXFJaxRsServiceRegistrator>
+ serviceTracker = new ServiceTracker<>(
+ _bundleContext, filter,
+ new AddonsServiceTrackerCustomizer(
+ _bundleContext, classLoader,
+ service));
+
+ serviceTracker.open();
+
+ return serviceTracker;
+ }
+ catch (InvalidSyntaxException ise) {
+ _bundleContext.ungetService(reference);
+
+ throw new RuntimeException(ise);
+ }
+ }
+
+ @Override
+ public void modifiedService(
+ ServiceReference<Object> reference,
+ ServiceTracker
+ <CXFJaxRsServiceRegistrator, CXFJaxRsServiceRegistrator>
+ serviceTracker) {
+
+ removedService(reference, serviceTracker);
+
+ addingService(reference);
+ }
+
+ @Override
+ public void removedService(
+ ServiceReference<Object> reference,
+ ServiceTracker
+ <CXFJaxRsServiceRegistrator, CXFJaxRsServiceRegistrator>
+ serviceTracker) {
+
+ serviceTracker.close();
+
+ _bundleContext.ungetService(reference);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/SingletonServiceTrackerCustomizer.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/SingletonServiceTrackerCustomizer.java b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/SingletonServiceTrackerCustomizer.java
new file mode 100644
index 0000000..8645504
--- /dev/null
+++ b/jax-rs.whiteboard/src/main/java/com/liferay/portal/remote/rest/extender/internal/SingletonServiceTrackerCustomizer.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.remote.rest.extender.internal;
+
+import org.apache.cxf.Bus;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+import javax.ws.rs.core.Application;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Carlos Sierra Andr�s
+ */
+class SingletonServiceTrackerCustomizer
+ implements ServiceTrackerCustomizer
+ <Object, SingletonServiceTrackerCustomizer.Tracked> {
+
+ private BundleContext _bundleContext;
+ private Bus _bus;
+
+ public SingletonServiceTrackerCustomizer(
+ BundleContext bundleContext, Bus bus) {
+
+ _bundleContext = bundleContext;
+ _bus = bus;
+ }
+
+ @Override
+ public Tracked addingService(
+ ServiceReference<Object> serviceReference) {
+
+ final Object service = _bundleContext.getService(
+ serviceReference);
+
+ try {
+ String[] propertyKeys = serviceReference.getPropertyKeys();
+
+ Map<String, Object> properties = new HashMap<>(
+ propertyKeys.length);
+
+ for (String propertyKey : propertyKeys) {
+ if (propertyKey.equals("osgi.jaxrs.resource.base")) {
+ continue;
+ }
+ properties.put(
+ propertyKey, serviceReference.getProperty(propertyKey));
+ }
+
+ properties.put(
+ "CXF_ENDPOINT_ADDRESS",
+ serviceReference.getProperty("osgi.jaxrs.resource.base").
+ toString());
+
+ CXFJaxRsServiceRegistrator cxfJaxRsServiceRegistrator =
+ new CXFJaxRsServiceRegistrator(
+ _bus,
+ new Application() {
+ @Override
+ public Set<Object> getSingletons() {
+ return Collections.singleton(service);
+ }
+ },
+ properties);
+
+ return new Tracked(
+ cxfJaxRsServiceRegistrator, service,
+ _bundleContext.registerService(
+ CXFJaxRsServiceRegistrator.class,
+ cxfJaxRsServiceRegistrator, new Hashtable<>(properties)));
+ }
+ catch (Exception e) {
+ _bundleContext.ungetService(serviceReference);
+
+ throw e;
+ }
+ }
+
+ @Override
+ public void modifiedService(
+ ServiceReference<Object> serviceReference, Tracked tracked) {
+
+ removedService(serviceReference, tracked);
+
+ addingService(serviceReference);
+ }
+
+ @Override
+ public void removedService(
+ ServiceReference<Object> reference, Tracked tracked) {
+
+ _bundleContext.ungetService(reference);
+
+ Object service = tracked.getService();
+
+ CXFJaxRsServiceRegistrator cxfJaxRsServiceRegistrator =
+ tracked.getCxfJaxRsServiceRegistrator();
+
+ cxfJaxRsServiceRegistrator.close();
+
+ tracked.getCxfJaxRsServiceRegistratorServiceRegistration().unregister();
+ }
+
+ public static class Tracked {
+
+ private final CXFJaxRsServiceRegistrator _cxfJaxRsServiceRegistrator;
+ private final Object _service;
+ private final ServiceRegistration<CXFJaxRsServiceRegistrator>
+ _cxfJaxRsServiceRegistratorServiceRegistration;
+
+ public Object getService() {
+ return _service;
+ }
+
+ public CXFJaxRsServiceRegistrator getCxfJaxRsServiceRegistrator() {
+ return _cxfJaxRsServiceRegistrator;
+ }
+
+ public ServiceRegistration<CXFJaxRsServiceRegistrator>
+ getCxfJaxRsServiceRegistratorServiceRegistration() {
+
+ return _cxfJaxRsServiceRegistratorServiceRegistration;
+ }
+
+ public Tracked(
+ CXFJaxRsServiceRegistrator cxfJaxRsServiceRegistrator,
+ Object service,
+ ServiceRegistration<CXFJaxRsServiceRegistrator>
+ cxfJaxRsServiceRegistratorServiceRegistration) {
+
+ _cxfJaxRsServiceRegistrator = cxfJaxRsServiceRegistrator;
+ _service = service;
+ _cxfJaxRsServiceRegistratorServiceRegistration =
+ cxfJaxRsServiceRegistratorServiceRegistration;
+ }
+
+ }
+
+}
+
+
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/org.apache.aries.jax-rs.bndrun/augments.bnd
----------------------------------------------------------------------
diff --git a/org.apache.aries.jax-rs.bndrun/augments.bnd b/org.apache.aries.jax-rs.bndrun/augments.bnd
deleted file mode 100644
index 4a16ea5..0000000
--- a/org.apache.aries.jax-rs.bndrun/augments.bnd
+++ /dev/null
@@ -1,82 +0,0 @@
--augment.javax.servlet-api: \
- javax.servlet-api; \
- requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.http)'"
-
--augment.javax.ws.rs-api: \
- javax.ws.rs-api; \
- requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.http)'"
-
--augment.org.apache.aries.jax-rs.cxf-common: \
- org.apache.aries.jax-rs.cxf-common; \
- requirement:="osgi.extender;filter:='(&(osgi.extender=aries.jax-rs)(version>=1.0.0)(!(version>=2.0.0)))', \
- osgi.implementation;filter:='(osgi.implementation=osgi.http)'"
-
--augment.org.apache.commons.fileupload: \
- org.apache.commons.fileupload; \
- capability:=" generic.dependency;generic.dependency='commons.fileupload'"
-
--augment.org.apache.felix.gogo.command: \
- org.apache.felix.gogo.command; \
- capability:=" generic.dependency;generic.dependency='gogo.shell.command';version:Version='1.0.0'"; \
- version='1.0.0'
-
--augment.org.apache.felix.gogo.shell: \
- org.apache.felix.gogo.shell; \
- capability:=" osgi.implementation;osgi.implementation='gogo.shell';version:Version='1.0.0'"; \
- requirement:="generic.dependency;filter:='(generic.dependency=gogo.shell.command)';effective:=active"; \
- version='1.0.0'
-
--augment.org.apache.felix.gogo.jline: \
- org.apache.felix.gogo.jline; \
- capability:=" osgi.implementation;osgi.implementation='gogo.jline';version:Version='1.0.0'"; \
- requirement:="generic.dependency;filter:='(generic.dependency=gogo.shell.command)';effective:=active"; \
- version='1.0.0'
-
--augment.org.apache.felix.log: \
- org.apache.felix.log; \
- capability:=" osgi.implementation;osgi.implementation=osgi.log"
-
--augment.org.apache.felix.scr: \
- org.apache.felix.scr; \
- requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.metatype)'"
-
--augment.org.eclipse.equinox.coordinator: \
- org.eclipse.equinox.coordinator; \
- capability:=" osgi.service;objectClass=org.osgi.service.coordinator.Coordinator;effective:=active, \
- osgi.implementation;osgi.implementation=osgi.coordinator"
-
--augment.org.eclipse.equinox.event: \
- org.eclipse.equinox.event; \
- capability:=" osgi.service;objectClass=org.osgi.service.event.EventAdmin;effective:=active, \
- osgi.implementation;osgi.implementation=osgi.event"; \
- requirement:="osgi.extender;filter:='(osgi.extender=osgi.component)'"
-
--augment.org.eclipse.equinox.http.jetty: \
- org.eclipse.equinox.http.jetty; \
- capability:=" equinox.module.data;activation.policy=eager, \
- generic.dependency;generic.dependency='osgi.servlet.container';version:Version='1.0.0'"
-
--augment.org.eclipse.equinox.http.servlet: \
- org.eclipse.equinox.http.servlet; \
- capability:=" equinox.module.data;activation.policy=eager"; \
- requirement:="generic.dependency;filter:='(generic.dependency=commons.fileupload)';effective:=active,\
- generic.dependency;filter:='(generic.dependency=osgi.servlet.container)';effective:=active"
-
--augment.org.knopflerfish.bundle.useradmin: \
- org.knopflerfish.bundle.useradmin; \
- capability:=" osgi.service;objectClass:List<String>=org.osgi.service.useradmin.UserAdmin;effective:=active, \
- osgi.implementation;osgi.implementation=osgi.useradmin"
-
--augment.org.osgi.service.event: \
- org.osgi.service.event; \
- requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.event)'"
-
--augment.org.osgi.service.metatype: \
- org.osgi.service.metatype; \
- requirement:="osgi.implementation;filter:='(osgi.implementation=osgi.metatype)'"
-
--augment.org.osgi.service.remoteserviceadmin: \
- org.osgi.service.remoteserviceadmin; \
- requirement:="osgi.remoteserviceadmin.distribution;filter:='(configs=*)', \
- osgi.remoteserviceadmin.topology;filter:='(policy=*)', \
- osgi.remoteserviceadmin.discovery;filter:='(protocols=*)'"
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/org.apache.aries.jax-rs.bndrun/pom.xml
----------------------------------------------------------------------
diff --git a/org.apache.aries.jax-rs.bndrun/pom.xml b/org.apache.aries.jax-rs.bndrun/pom.xml
deleted file mode 100644
index eecbde1..0000000
--- a/org.apache.aries.jax-rs.bndrun/pom.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<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</groupId>
- <artifactId>org.apache.aries.jax-rs</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.apache.aries.jax-rs.bndrun</artifactId>
-
- <packaging>jar</packaging>
-
- <build>
- <plugins>
- <plugin>
- <groupId>biz.aQute.bnd</groupId>
- <artifactId>bnd-export-maven-plugin</artifactId>
- <version>3.4.0-SNAPSHOT</version>
- <configuration>
- <failOnChanges>false</failOnChanges>
- <resolve>true</resolve>
- <bndruns>
- <bndrun>run.bndrun</bndrun>
- </bndruns>
- <targetDir>.</targetDir>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.apache.aries</groupId>
- <artifactId>org.apache.aries.jax-rs.example</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.aries</groupId>
- <artifactId>org.apache.aries.jax-rs.extender</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.http.jetty</artifactId>
- <version>3.4.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.gogo.command</artifactId>
- <version>1.0.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.gogo.jline</artifactId>
- <version>1.0.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.gogo.runtime</artifactId>
- <version>1.0.0</version>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>osgi.enroute.pom.distro</artifactId>
- <version>2.0.0</version>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/org.apache.aries.jax-rs.bndrun/run.bndrun
----------------------------------------------------------------------
diff --git a/org.apache.aries.jax-rs.bndrun/run.bndrun b/org.apache.aries.jax-rs.bndrun/run.bndrun
deleted file mode 100644
index 248a200..0000000
--- a/org.apache.aries.jax-rs.bndrun/run.bndrun
+++ /dev/null
@@ -1,52 +0,0 @@
--standalone:
--include: ${.}/augments.bnd
--resourceonly: true
-
--plugin.A.pom.repo = \
- aQute.bnd.repository.maven.pom.provider.BndPomRepository; \
- snapshotUrls=https://oss.sonatype.org/content/repositories/osgi/; \
- releaseUrls=https://repo1.maven.org/maven2/; \
- pom=${.}/pom.xml; \
- name=pom.repo; \
- location=${.}/target/cached.xml
-
--runrequires: \
- osgi.identity;filter:='(osgi.identity=org.apache.aries.jax-rs.example)',\
- osgi.identity;filter:='(osgi.identity=org.apache.aries.jax-rs.extender)',\
- osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.jline)'
-
--runfw: org.eclipse.osgi;version='[3.10.100.v20150529-1857,3.10.100.v20150529-1857]'
--runbundles: \
- javax.annotation-api;version='[1.2.0,1.2.1)',\
- javax.json-api;version='[1.0.0,1.0.1)',\
- javax.ws.rs-api;version='[2.0.1,2.0.2)',\
- log4j;version='[1.2.17,1.2.18)',\
- org.apache.aries.jax-rs.example;version='[1.0.0,1.0.1)',\
- org.apache.aries.jax-rs.extender;version='[1.0.0,1.0.1)',\
- org.apache.felix.bundlerepository;version='[1.6.0,1.6.1)',\
- org.apache.felix.configadmin;version='[1.8.8,1.8.9)',\
- org.apache.felix.gogo.command;version='[1.0.0,1.0.1)',\
- org.apache.felix.gogo.jline;version='[1.0.0,1.0.1)',\
- org.apache.felix.gogo.runtime;version='[1.0.0,1.0.1)',\
- 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.apache.felix.scr;version='[2.0.2,2.0.3)',\
- org.apache.ws.xmlschema.core;version='[2.2.1,2.2.2)',\
- org.eclipse.equinox.event;version='[1.3.100,1.3.101)',\
- org.eclipse.equinox.metatype;version='[1.4.100,1.4.101)',\
- org.jline;version='[3.0.0,3.0.1)',\
- org.objectweb.asm;version='[5.0.4,5.0.5)',\
- org.osgi.compendium;version='[4.1.0,4.1.1)',\
- org.osgi.service.event;version='[1.3.1,1.3.2)',\
- org.osgi.service.metatype;version='[1.3.0,1.3.1)',\
- slf4j.api;version='[1.7.21,1.7.22)',\
- slf4j.log4j12;version='[1.6.1,1.6.2)'
-
--runee: JavaSE-1.8
--resolve.effective: resolve, active
--runproperties.eqnx: \
- osgi.console.enable.builtin=false, \
- osgi.console=, \
- org.osgi.service.http.port=8080
--runsystemcapabilities.dflt: ${native_capability}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76e7db85/org.apache.aries.jax-rs.example/.gitignore
----------------------------------------------------------------------
diff --git a/org.apache.aries.jax-rs.example/.gitignore b/org.apache.aries.jax-rs.example/.gitignore
deleted file mode 100644
index 83ccc54..0000000
--- a/org.apache.aries.jax-rs.example/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/build/
-/bin/