Repository: clerezza Updated Branches: refs/heads/master ea0996014 -> c3676000e
renamed package Project: http://git-wip-us.apache.org/repos/asf/clerezza/repo Commit: http://git-wip-us.apache.org/repos/asf/clerezza/commit/c3676000 Tree: http://git-wip-us.apache.org/repos/asf/clerezza/tree/c3676000 Diff: http://git-wip-us.apache.org/repos/asf/clerezza/diff/c3676000 Branch: refs/heads/master Commit: c3676000e7874cc3285c01f1b7b10c4c369be12d Parents: ea09960 Author: Reto Gmür <[email protected]> Authored: Sat Sep 5 12:01:53 2015 +0200 Committer: Reto Gmür <[email protected]> Committed: Sat Sep 5 12:01:53 2015 +0200 ---------------------------------------------------------------------- jaxrs.whiteboard.jersey/pom.xml | 9 +- .../whiteboard/jersey/DefaultApplication.java | 69 +++++++++ .../jaxrs/whiteboard/jersey/JerseyEndpoint.java | 148 +++++++++++++++++++ .../web/base/jersey/DefaultApplication.java | 69 --------- .../commons/web/base/jersey/JerseyEndpoint.java | 148 ------------------- 5 files changed, 218 insertions(+), 225 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/clerezza/blob/c3676000/jaxrs.whiteboard.jersey/pom.xml ---------------------------------------------------------------------- diff --git a/jaxrs.whiteboard.jersey/pom.xml b/jaxrs.whiteboard.jersey/pom.xml index 432d87d..b0181f8 100644 --- a/jaxrs.whiteboard.jersey/pom.xml +++ b/jaxrs.whiteboard.jersey/pom.xml @@ -56,15 +56,8 @@ <configuration> <instructions> <Private-Package> - org.apache.stanbol.commons.web.base.jersey;version=${project.version} + org.apache.clerezza.jaxrs.whiteboard.jersey;version=${project.version} </Private-Package> - <!-- <Import-Package> - javax.servlet; version="[2.5.0,4.0.0)", - javax.servlet.http; version="[2.5.0,4.0.0)", - org.apache.stanbol.commons.web.base, - org.apache.stanbol.commons.web.base.*, - * - </Import-Package> --> </instructions> </configuration> </plugin> http://git-wip-us.apache.org/repos/asf/clerezza/blob/c3676000/jaxrs.whiteboard.jersey/src/main/java/org/apache/clerezza/jaxrs/whiteboard/jersey/DefaultApplication.java ---------------------------------------------------------------------- diff --git a/jaxrs.whiteboard.jersey/src/main/java/org/apache/clerezza/jaxrs/whiteboard/jersey/DefaultApplication.java b/jaxrs.whiteboard.jersey/src/main/java/org/apache/clerezza/jaxrs/whiteboard/jersey/DefaultApplication.java new file mode 100644 index 0000000..535fdeb --- /dev/null +++ b/jaxrs.whiteboard.jersey/src/main/java/org/apache/clerezza/jaxrs/whiteboard/jersey/DefaultApplication.java @@ -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. +*/ +package org.apache.clerezza.jaxrs.whiteboard.jersey; + +import java.util.HashSet; +import java.util.Set; + +import javax.ws.rs.core.Application; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * Define the list of available resources and providers to be used by the Stanbol JAX-RS Endpoint. + */ +public class DefaultApplication extends Application { + + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(DefaultApplication.class); + + protected final Set<Class<?>> contributedClasses = new HashSet<Class<?>>(); + + protected final Set<Object> contributedSingletons = new HashSet<Object>(); + + + @Override + public Set<Class<?>> getClasses() { + Set<Class<?>> classes = new HashSet<Class<?>>(); + // resources contributed buy other bundles + classes.addAll(contributedClasses); + //TODO check if clerezza rdf.jaxrs prvoder fits the purpose + // message body writers, hard-coded for now + //classes.add(GraphWriter.class); + //classes.add(JenaModelWriter.class); + //classes.add(ResultSetWriter.class); + return classes; + } + + @Override + public Set<Object> getSingletons() { + Set<Object> singletons = new HashSet<Object>(); + singletons.addAll(contributedSingletons); + return singletons; + } + + public void contributeClasses(Set<Class<?>> classes) { + contributedClasses.addAll(classes); + } + + public void contributeSingletons(Set<Object> singletons) { + contributedSingletons.addAll(singletons); + } + +} http://git-wip-us.apache.org/repos/asf/clerezza/blob/c3676000/jaxrs.whiteboard.jersey/src/main/java/org/apache/clerezza/jaxrs/whiteboard/jersey/JerseyEndpoint.java ---------------------------------------------------------------------- diff --git a/jaxrs.whiteboard.jersey/src/main/java/org/apache/clerezza/jaxrs/whiteboard/jersey/JerseyEndpoint.java b/jaxrs.whiteboard.jersey/src/main/java/org/apache/clerezza/jaxrs/whiteboard/jersey/JerseyEndpoint.java new file mode 100644 index 0000000..b0364a5 --- /dev/null +++ b/jaxrs.whiteboard.jersey/src/main/java/org/apache/clerezza/jaxrs/whiteboard/jersey/JerseyEndpoint.java @@ -0,0 +1,148 @@ +/* + * 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.clerezza.jaxrs.whiteboard.jersey; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Dictionary; +import java.util.HashSet; +import java.util.Hashtable; +import java.util.List; +import java.util.Set; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + +import org.apache.felix.scr.annotations.Activate; +import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Deactivate; +import org.apache.felix.scr.annotations.Property; +import org.apache.felix.scr.annotations.Reference; +import org.apache.felix.scr.annotations.ReferenceCardinality; +import org.apache.felix.scr.annotations.ReferencePolicy; +import org.apache.felix.scr.annotations.ReferencePolicyOption; +import org.osgi.framework.BundleContext; +import org.osgi.service.cm.ConfigurationException; +import org.osgi.service.component.ComponentContext; +import org.osgi.service.http.HttpService; +import org.osgi.service.http.NamespaceException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +import org.apache.felix.scr.annotations.References; +import org.glassfish.jersey.server.ResourceConfig; +import org.glassfish.jersey.servlet.ServletContainer; + +/** + * Jersey-based JAXRS whiteboard implementation. + * + * This exposes JAX-RS resources available as services exposing Object with the property javax.ws.rs=true + */ +@Component(immediate = true, metatype = true) +@References({ + @Reference(name="component", referenceInterface=Object.class, + target="(javax.ws.rs=true)", + cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE, + policy=ReferencePolicy.STATIC, + policyOption=ReferencePolicyOption.GREEDY)}) +public class JerseyEndpoint { + + private final Logger log = LoggerFactory.getLogger(getClass()); + + @Property(value = "/") + public static final String ALIAS_PROPERTY = "org.apache.stanbol.commons.web.alias"; + + @Property(value = "/static") + public static final String STATIC_RESOURCES_URL_ROOT_PROPERTY = "org.apache.stanbol.commons.web.static.url"; + + @Reference + HttpService httpService; + + protected ComponentContext componentContext; + + protected ServletContext servletContext; + + + protected final List<String> registeredAliases = new ArrayList<String>(); + + protected Set<String> exposedHeaders; + private Set<Object> components = new HashSet<Object>(); + + public Dictionary<String,String> getInitParams() { + Dictionary<String,String> initParams = new Hashtable<String,String>(); + // make jersey automatically turn resources into Viewable models and + // hence lookup matching freemarker templates + initParams.put("com.sun.jersey.config.feature.ImplicitViewables", "true"); + return initParams; + } + + @Activate + protected void activate(ComponentContext componentContext) throws IOException, + ServletException, + NamespaceException, + ConfigurationException { + + log.info("Activating Jersey subsystem"); + + // register all the JAX-RS resources into a a JAX-RS application and bind it to a configurable URL + // prefix + DefaultApplication app = new DefaultApplication(); + String applicationAlias = (String) componentContext.getProperties().get(ALIAS_PROPERTY); + + app.contributeSingletons(components); + + // bind the aggregate JAX-RS application to a dedicated servlet + ServletContainer container = new ServletContainer( + ResourceConfig.forApplication(app)); + httpService.registerServlet(applicationAlias, container, getInitParams(), null); + registeredAliases.add(applicationAlias); + + // forward the main Stanbol OSGi runtime context so that JAX-RS resources can lookup arbitrary + // services + servletContext = container.getServletContext(); + servletContext.setAttribute(BundleContext.class.getName(), componentContext.getBundleContext()); + log.info("JerseyEndpoint servlet registered at {}", applicationAlias); + } + + /** Shutdown Jersey, if there's anything to do */ + private synchronized void shutdownJersey() { + log.debug("Unregistering aliases {}", registeredAliases); + for (String alias : registeredAliases) { + httpService.unregister(alias); + } + registeredAliases.clear(); + } + + @Deactivate + protected void deactivate(ComponentContext ctx) { + shutdownJersey(); + servletContext = null; + } + + protected void bindComponent(Object component) throws IOException, + ServletException, + NamespaceException { + components.add(component); + } + + protected void unbindComponent(Object component) throws IOException, + ServletException, + NamespaceException { + components.remove(component); + } +} http://git-wip-us.apache.org/repos/asf/clerezza/blob/c3676000/jaxrs.whiteboard.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/DefaultApplication.java ---------------------------------------------------------------------- diff --git a/jaxrs.whiteboard.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/DefaultApplication.java b/jaxrs.whiteboard.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/DefaultApplication.java deleted file mode 100644 index 6d1c292..0000000 --- a/jaxrs.whiteboard.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/DefaultApplication.java +++ /dev/null @@ -1,69 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.apache.stanbol.commons.web.base.jersey; - -import java.util.HashSet; -import java.util.Set; - -import javax.ws.rs.core.Application; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * Define the list of available resources and providers to be used by the Stanbol JAX-RS Endpoint. - */ -public class DefaultApplication extends Application { - - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(DefaultApplication.class); - - protected final Set<Class<?>> contributedClasses = new HashSet<Class<?>>(); - - protected final Set<Object> contributedSingletons = new HashSet<Object>(); - - - @Override - public Set<Class<?>> getClasses() { - Set<Class<?>> classes = new HashSet<Class<?>>(); - // resources contributed buy other bundles - classes.addAll(contributedClasses); - //TODO check if clerezza rdf.jaxrs prvoder fits the purpose - // message body writers, hard-coded for now - //classes.add(GraphWriter.class); - //classes.add(JenaModelWriter.class); - //classes.add(ResultSetWriter.class); - return classes; - } - - @Override - public Set<Object> getSingletons() { - Set<Object> singletons = new HashSet<Object>(); - singletons.addAll(contributedSingletons); - return singletons; - } - - public void contributeClasses(Set<Class<?>> classes) { - contributedClasses.addAll(classes); - } - - public void contributeSingletons(Set<Object> singletons) { - contributedSingletons.addAll(singletons); - } - -} http://git-wip-us.apache.org/repos/asf/clerezza/blob/c3676000/jaxrs.whiteboard.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java ---------------------------------------------------------------------- diff --git a/jaxrs.whiteboard.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java b/jaxrs.whiteboard.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java deleted file mode 100644 index e98ab04..0000000 --- a/jaxrs.whiteboard.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.stanbol.commons.web.base.jersey; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Dictionary; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.List; -import java.util.Set; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.ReferencePolicy; -import org.apache.felix.scr.annotations.ReferencePolicyOption; -import org.osgi.framework.BundleContext; -import org.osgi.service.cm.ConfigurationException; -import org.osgi.service.component.ComponentContext; -import org.osgi.service.http.HttpService; -import org.osgi.service.http.NamespaceException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -import org.apache.felix.scr.annotations.References; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.servlet.ServletContainer; - -/** - * Jersey-based JAXRS whiteboard implementation. - * - * This exposes JAX-RS resources available as services exposing Object with the property javax.ws.rs=true - */ -@Component(immediate = true, metatype = true) -@References({ - @Reference(name="component", referenceInterface=Object.class, - target="(javax.ws.rs=true)", - cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE, - policy=ReferencePolicy.STATIC, - policyOption=ReferencePolicyOption.GREEDY)}) -public class JerseyEndpoint { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Property(value = "/") - public static final String ALIAS_PROPERTY = "org.apache.stanbol.commons.web.alias"; - - @Property(value = "/static") - public static final String STATIC_RESOURCES_URL_ROOT_PROPERTY = "org.apache.stanbol.commons.web.static.url"; - - @Reference - HttpService httpService; - - protected ComponentContext componentContext; - - protected ServletContext servletContext; - - - protected final List<String> registeredAliases = new ArrayList<String>(); - - protected Set<String> exposedHeaders; - private Set<Object> components = new HashSet<Object>(); - - public Dictionary<String,String> getInitParams() { - Dictionary<String,String> initParams = new Hashtable<String,String>(); - // make jersey automatically turn resources into Viewable models and - // hence lookup matching freemarker templates - initParams.put("com.sun.jersey.config.feature.ImplicitViewables", "true"); - return initParams; - } - - @Activate - protected void activate(ComponentContext componentContext) throws IOException, - ServletException, - NamespaceException, - ConfigurationException { - - log.info("Activating Jersey subsystem"); - - // register all the JAX-RS resources into a a JAX-RS application and bind it to a configurable URL - // prefix - DefaultApplication app = new DefaultApplication(); - String applicationAlias = (String) componentContext.getProperties().get(ALIAS_PROPERTY); - - app.contributeSingletons(components); - - // bind the aggregate JAX-RS application to a dedicated servlet - ServletContainer container = new ServletContainer( - ResourceConfig.forApplication(app)); - httpService.registerServlet(applicationAlias, container, getInitParams(), null); - registeredAliases.add(applicationAlias); - - // forward the main Stanbol OSGi runtime context so that JAX-RS resources can lookup arbitrary - // services - servletContext = container.getServletContext(); - servletContext.setAttribute(BundleContext.class.getName(), componentContext.getBundleContext()); - log.info("JerseyEndpoint servlet registered at {}", applicationAlias); - } - - /** Shutdown Jersey, if there's anything to do */ - private synchronized void shutdownJersey() { - log.debug("Unregistering aliases {}", registeredAliases); - for (String alias : registeredAliases) { - httpService.unregister(alias); - } - registeredAliases.clear(); - } - - @Deactivate - protected void deactivate(ComponentContext ctx) { - shutdownJersey(); - servletContext = null; - } - - protected void bindComponent(Object component) throws IOException, - ServletException, - NamespaceException { - components.add(component); - } - - protected void unbindComponent(Object component) throws IOException, - ServletException, - NamespaceException { - components.remove(component); - } -}
