You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by og...@apache.org on 2011/03/28 21:44:08 UTC
svn commit: r1086358 - in
/incubator/stanbol/branches/http-endpoint-refactoring:
commons/web/src/main/java/org/apache/stanbol/commons/web/
commons/web/src/main/resources/META-INF/templates/org/apache/stanbol/commons/web/resource/StanbolRootResource/
en...
Author: ogrisel
Date: Mon Mar 28 19:44:08 2011
New Revision: 1086358
URL: http://svn.apache.org/viewvc?rev=1086358&view=rev
Log:
STANBOL-120: fixing issues with registration of the enhancer WebFragment
Removed:
incubator/stanbol/branches/http-endpoint-refactoring/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/writers/
incubator/stanbol/branches/http-endpoint-refactoring/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource/
Modified:
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/java/org/apache/stanbol/commons/web/JerseyEndpoint.java
incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/resources/META-INF/templates/org/apache/stanbol/commons/web/resource/StanbolRootResource/index.ftl
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/java/org/apache/stanbol/commons/web/JerseyEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/java/org/apache/stanbol/commons/web/JerseyEndpoint.java?rev=1086358&r1=1086357&r2=1086358&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/java/org/apache/stanbol/commons/web/JerseyEndpoint.java (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/java/org/apache/stanbol/commons/web/JerseyEndpoint.java Mon Mar 28 19:44:08 2011
@@ -54,10 +54,14 @@ public class JerseyEndpoint {
@Reference
HttpService httpService;
+ protected ComponentContext componentContext;
+
protected ServletContext servletContext;
protected final List<WebFragment> webFragments = new ArrayList<WebFragment>();
+ protected ArrayList<String> registeredAlias;
+
public Dictionary<String,String> getInitParams() {
Dictionary<String,String> initParams = new Hashtable<String,String>();
// make jersey automatically turn resources into Viewable models and
@@ -68,6 +72,8 @@ public class JerseyEndpoint {
@Activate
protected void activate(ComponentContext ctx) throws IOException, ServletException, NamespaceException {
+ this.componentContext = ctx;
+ this.registeredAlias = new ArrayList<String>();
// register all the JAX-RS resources into a a JAX-RS application and bind it to a configurable URL
// prefix
@@ -82,24 +88,28 @@ public class JerseyEndpoint {
// register the root of static resources
httpService.registerResources(staticUrlRoot, staticClasspath, null);
+ registeredAlias.add(staticUrlRoot);
// incrementally contribute fragment resources
for (WebFragment fragment : webFragments) {
+ log.info("Registering web fragment '{}' into jaxrs application", fragment.getName());
app.contributeClasses(fragment.getJaxrsResourceClasses());
app.contributeSingletons(fragment.getJaxrsResourceSingletons());
app.contributeTemplateLoader(fragment.getTemplateLoader());
- httpService.registerResources(staticUrlRoot + '/' + fragment.getName(),
- fragment.getStaticResourceClassPath(), null);
+ String resourceAlias = staticUrlRoot + '/' + fragment.getName();
+ httpService.registerResources(resourceAlias, fragment.getStaticResourceClassPath(), null);
+ registeredAlias.add(resourceAlias);
}
- log.info("Registering servlets with HTTP service " + httpService.toString());
+
ServletContainer container = new ServletContainer(app);
String alias = (String) ctx.getProperties().get(ALIAS_PROPERTY);
-
+
// TODO: check whether this class-loading hack is still necessary or not
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
try {
httpService.registerServlet(alias, container, getInitParams(), null);
+ registeredAlias.add(alias);
} finally {
Thread.currentThread().setContextClassLoader(classLoader);
}
@@ -109,14 +119,14 @@ public class JerseyEndpoint {
servletContext = container.getServletContext();
servletContext.setAttribute(BundleContext.class.getName(), ctx.getBundleContext());
servletContext.setAttribute(STATIC_RESOURCES_URL_ROOT_PROPERTY, staticUrlRoot);
- log.info("Jersey servlet registered at {}", alias);
+ log.info("JerseyEndpoint servlet registered at {}", alias);
}
@Deactivate
protected void deactivate(ComponentContext ctx) {
- log.info("Deactivating jersey bundle");
- String alias = (String) ctx.getProperties().get(ALIAS_PROPERTY);
- httpService.unregister(alias);
+ for (String alias : registeredAlias) {
+ httpService.unregister(alias);
+ }
servletContext = null;
}
@@ -128,13 +138,25 @@ public class JerseyEndpoint {
this.httpService = null;
}
- protected void bindWebFragment(WebFragment webFragment) {
+ protected void bindWebFragment(WebFragment webFragment) throws IOException,
+ ServletException,
+ NamespaceException {
// TODO: support some ordering for jax-rs resource and template overrides?
webFragments.add(webFragment);
+ if (componentContext != null) {
+ deactivate(componentContext);
+ activate(componentContext);
+ }
}
- protected void unbindWebFragment(WebFragment webFragment) {
+ protected void unbindWebFragment(WebFragment webFragment) throws IOException,
+ ServletException,
+ NamespaceException {
webFragments.remove(webFragment);
+ if (componentContext != null) {
+ deactivate(componentContext);
+ activate(componentContext);
+ }
}
}
Modified: incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/resources/META-INF/templates/org/apache/stanbol/commons/web/resource/StanbolRootResource/index.ftl
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/resources/META-INF/templates/org/apache/stanbol/commons/web/resource/StanbolRootResource/index.ftl?rev=1086358&r1=1086357&r2=1086358&view=diff
==============================================================================
--- incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/resources/META-INF/templates/org/apache/stanbol/commons/web/resource/StanbolRootResource/index.ftl (original)
+++ incubator/stanbol/branches/http-endpoint-refactoring/commons/web/src/main/resources/META-INF/templates/org/apache/stanbol/commons/web/resource/StanbolRootResource/index.ftl Mon Mar 28 19:44:08 2011
@@ -1,5 +1,4 @@
<#import "/imports/common.ftl" as common>
-<#import "/imports/sparql.ftl" as sparql>
<#escape x as x?html>
<@common.page title="Welcome to Apache Stanbol!" hasrestapi=false>