You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2014/03/17 15:31:20 UTC

[2/4] git commit: register exception mappers separately in JettyMarmotta for testing, because Jetty uses a different way to initialise RESTEasy (MARMOTTA-466)

register exception mappers separately in JettyMarmotta for testing, because Jetty uses a different way to initialise RESTEasy (MARMOTTA-466)


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/30dd4282
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/30dd4282
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/30dd4282

Branch: refs/heads/develop
Commit: 30dd42820c064bcf77e5b9cd7187bbf50a57fa7b
Parents: 290ec30
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Mon Mar 17 15:28:42 2014 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Mon Mar 17 15:28:42 2014 +0100

----------------------------------------------------------------------
 .../core/api/jaxrs/ExceptionMapperService.java  |  3 +++
 .../jaxrs/ExceptionMapperServiceImpl.java       |  9 ++++++++-
 .../platform/core/test/base/JettyMarmotta.java  | 21 +++++++++++++++-----
 3 files changed, 27 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/30dd4282/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/jaxrs/ExceptionMapperService.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/jaxrs/ExceptionMapperService.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/jaxrs/ExceptionMapperService.java
index 970f6ee..b305848 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/jaxrs/ExceptionMapperService.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/jaxrs/ExceptionMapperService.java
@@ -17,6 +17,8 @@
 
 package org.apache.marmotta.platform.core.api.jaxrs;
 
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
+
 /**
  * This service auto-registers JAX-RS exception mappers implementing the CDIExceptionMapper interface and
  * registers them with RESTEasy. This allows applications based on Marmotta to easily implement and register their
@@ -28,4 +30,5 @@ package org.apache.marmotta.platform.core.api.jaxrs;
  * @author Sebastian Schaffert (sschaffert@apache.org)
  */
 public interface ExceptionMapperService {
+    void register(ResteasyProviderFactory factory);
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/30dd4282/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/jaxrs/ExceptionMapperServiceImpl.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/jaxrs/ExceptionMapperServiceImpl.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/jaxrs/ExceptionMapperServiceImpl.java
index 0b6e93b..2306686 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/jaxrs/ExceptionMapperServiceImpl.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/jaxrs/ExceptionMapperServiceImpl.java
@@ -53,10 +53,17 @@ public class ExceptionMapperServiceImpl implements ExceptionMapperService {
      */
     @PostConstruct
     public void initialise() {
-        log.info("initialising JAX-RS exception mappers");
 
         ResteasyProviderFactory factory = ResteasyProviderFactory.getInstance();
 
+        register(factory);
+    }
+
+
+    @Override
+    public void register(ResteasyProviderFactory factory) {
+        log.info("initialising JAX-RS exception mappers");
+
         for(CDIExceptionMapper<?> mapper : mappers) {
             log.debug("registering exception mapper: {}", mapper.getClass().getName());
 

http://git-wip-us.apache.org/repos/asf/marmotta/blob/30dd4282/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/JettyMarmotta.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/JettyMarmotta.java b/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/JettyMarmotta.java
index c1a965f..979d89e 100644
--- a/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/JettyMarmotta.java
+++ b/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/JettyMarmotta.java
@@ -17,10 +17,7 @@
  */
 package org.apache.marmotta.platform.core.test.base;
 
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.util.*;
-
+import org.apache.marmotta.platform.core.api.jaxrs.ExceptionMapperService;
 import org.apache.marmotta.platform.core.servlet.MarmottaResourceFilter;
 import org.apache.marmotta.platform.core.test.base.jetty.TestApplication;
 import org.apache.marmotta.platform.core.test.base.jetty.TestInjectorFactory;
@@ -28,11 +25,15 @@ import org.apache.marmotta.platform.core.util.CDIContext;
 import org.apache.marmotta.platform.core.webservices.CoreApplication;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.FilterMapping;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
+import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
 
 import javax.servlet.DispatcherType;
+import javax.servlet.ServletException;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.util.*;
 
 /**
  * An extended version of the EmbeddedMarmotta which also starts a jetty servlet 
@@ -124,6 +125,8 @@ public class JettyMarmotta extends AbstractMarmotta {
         //ctx.addFilter(restEasyFilter,"/*", Handler.ALL);
         ctx.addServlet(restEasyFilter, "/*");
 
+
+
         try {
             jetty.start(); 
             String url = "http://localhost:" + this.port + this.context + "/";
@@ -131,6 +134,14 @@ public class JettyMarmotta extends AbstractMarmotta {
         } catch (Exception e) {
             log.error("could not start up embedded jetty server", e);
         }
+
+        // make sure exception mappers are loaded and registered before jetty starts up
+        ExceptionMapperService mapperService = CDIContext.getInstance(ExceptionMapperService.class);
+        try {
+            mapperService.register(((HttpServletDispatcher) restEasyFilter.getServlet()).getDispatcher().getProviderFactory());
+        } catch (ServletException e) {
+            log.warn("could not register exception mappers");
+        }
     }
 
     @Override