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