From seam-commits at lists.jboss.org Tue Jun 29 09:38:43 2010
Content-Type: multipart/mixed; boundary="===============3923764385663514421=="
MIME-Version: 1.0
From: seam-commits at lists.jboss.org
To: seam-commits at lists.jboss.org
Subject: [seam-commits] Seam SVN: r13320 - in modules/resteasy/trunk:
api/src/main/java/org/jboss/seam/resteasy/configuration and 4 other
directories.
Date: Tue, 29 Jun 2010 09:38:43 -0400
Message-ID: <201006291338.o5TDchYd005859@svn01.web.mwc.hst.phx2.redhat.com>
--===============3923764385663514421==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: jharting
Date: 2010-06-29 09:38:42 -0400 (Tue, 29 Jun 2010)
New Revision: 13320
Added:
modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/config=
uration/SeamResteasyBootstrap.java
modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/S=
eamResteasyClientTest.java
modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/S=
tudent.java
modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/c=
onfiguration/ExcludedResource.java
modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/c=
onfiguration/ExclusionTest.java
modules/resteasy/trunk/impl/src/test/resources/org/jboss/seam/resteasy/t=
est/configuration/excluded-web.xml
Modified:
modules/resteasy/trunk/api/src/main/java/org/jboss/seam/resteasy/configu=
ration/SeamResteasyConfiguration.java
modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/config=
uration/ConfigurationListener.java
modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/config=
uration/GenericExceptionMapper.java
modules/resteasy/trunk/pom.xml
Log:
Get configuration working again.
Modified: modules/resteasy/trunk/api/src/main/java/org/jboss/seam/resteasy/=
configuration/SeamResteasyConfiguration.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/api/src/main/java/org/jboss/seam/resteasy/config=
uration/SeamResteasyConfiguration.java 2010-06-29 13:07:52 UTC (rev 13319)
+++ modules/resteasy/trunk/api/src/main/java/org/jboss/seam/resteasy/config=
uration/SeamResteasyConfiguration.java 2010-06-29 13:38:42 UTC (rev 13320)
@@ -10,10 +10,10 @@
/**
* Holds configuration options for seam-resteasy extension. It can be used=
to configure the extension via XML descriptor
* using seam-xml extension. Alternatively, you can configure the extensio=
n programatically by providing an =
- * @{link @Alternative} subclass of SeamResteasyConfiguration.
+ * {@link @Alternative} subclass of SeamResteasyConfiguration.
* =
* This class allows declarative exception mapping to be used. The way exc=
eptions are treated in the application is based on
- * what @{link {@link #getExceptionMappings()} returns. Override this meth=
od or use seam-xml module to set up exception mapping
+ * what {@link #getExceptionMappings()} returns. Override this method or u=
se seam-xml module to set up exception mapping
* declaratively.
* =
* @author Jozef Hartinger
Modified: modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy=
/configuration/ConfigurationListener.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/confi=
guration/ConfigurationListener.java 2010-06-29 13:07:52 UTC (rev 13319)
+++ modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/confi=
guration/ConfigurationListener.java 2010-06-29 13:38:42 UTC (rev 13320)
@@ -33,7 +33,7 @@
{
if (sce.getServletContext().getAttribute(Dispatcher.class.getName())=
=3D=3D null)
{
- // RESTEasy has not been initialized
+ // RESTEasy has not been started yet, let's start it
bootstrapResteasy(sce.getServletContext());
}
=
@@ -45,16 +45,19 @@
=
registerProviders();
registerResources();
- unregisterResources(); // remove excluded resources
+ unregisterResources();
dispatcher.setLanguageMappings(configuration.getLanguageMappings());
registerMediaTypeMappings();
registerExceptionMappings();
}
=
+ /**
+ * Bootstrap RESTEasy
+ */
protected void bootstrapResteasy(ServletContext servletContext)
{
log.info("Starting RESTEasy.");
- SeamResteasyListenerBootstrap bootstrap =3D new SeamResteasyListener=
Bootstrap(servletContext);
+ SeamResteasyBootstrap bootstrap =3D new SeamResteasyBootstrap(servle=
tContext);
ResteasyDeployment deployment =3D bootstrap.createDeployment();
deployment.start();
=
@@ -63,7 +66,10 @@
servletContext.setAttribute(Registry.class.getName(), deployment.get=
Registry());
}
=
- private void registerResources()
+ /**
+ * Register resources specified in {@link SeamResteasyConfiguration}.
+ */
+ protected void registerResources()
{
for (Class> clazz : configuration.getResources())
{
@@ -72,7 +78,12 @@
}
}
=
- private void unregisterResources()
+ /**
+ * Unregister resources specified in {@link SeamResteasyConfiguration}.
+ * This method is used for explicit exclusion of resources that would be
+ * registered by auto-scanning.
+ */
+ protected void unregisterResources()
{
for (Class> clazz : configuration.getExcludedResources())
{
@@ -81,7 +92,10 @@
}
}
=
- private void registerProviders()
+ /**
+ * Register providers specified in {@link SeamResteasyConfiguration}.
+ */
+ protected void registerProviders()
{
for (Class> clazz : configuration.getProviders())
{
@@ -90,7 +104,10 @@
}
}
=
- private void registerExceptionMappings()
+ /**
+ * Register exception mappers based on {@link SeamResteasyConfiguration=
}.
+ */
+ protected void registerExceptionMappings()
{
for (Entry, Integer> item : configuration=
.getExceptionMappings().entrySet())
{
@@ -122,7 +139,10 @@
}
}
=
- private void registerMediaTypeMappings()
+ /**
+ * Register media mappings based on {@link SeamResteasyConfiguration}.
+ */
+ protected void registerMediaTypeMappings()
{
Map mediaTypeMappings =3D new HashMap();
for (Entry entry : configuration.getMediaTypeMapping=
s().entrySet())
Modified: modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy=
/configuration/GenericExceptionMapper.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/confi=
guration/GenericExceptionMapper.java 2010-06-29 13:07:52 UTC (rev 13319)
+++ modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/confi=
guration/GenericExceptionMapper.java 2010-06-29 13:38:42 UTC (rev 13320)
@@ -3,6 +3,12 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
=
+/**
+ * GenericExceptionMapper allows exceptions to be mapped to HTTP status co=
des declaratively (at runtime).
+ * @author Jozef Hartinger
+ *
+ * @param exception
+ */
public class GenericExceptionMapper implements Except=
ionMapper
{
private int status;
Added: modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/co=
nfiguration/SeamResteasyBootstrap.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/confi=
guration/SeamResteasyBootstrap.java (rev 0)
+++ modules/resteasy/trunk/impl/src/main/java/org/jboss/seam/resteasy/confi=
guration/SeamResteasyBootstrap.java 2010-06-29 13:38:42 UTC (rev 13320)
@@ -0,0 +1,50 @@
+package org.jboss.seam.resteasy.configuration;
+
+import javax.servlet.FilterRegistration;
+import javax.servlet.ServletContext;
+
+import org.jboss.resteasy.plugins.server.servlet.ListenerBootstrap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * =
+ * @author Jozef Hartinger
+ *
+ */
+public class SeamResteasyBootstrap extends ListenerBootstrap
+{
+ private FilterRegistration filter;
+ private static final Logger log =3D LoggerFactory.getLogger(SeamResteas=
yBootstrap.class);
+ =
+ public SeamResteasyBootstrap(ServletContext servletContext)
+ {
+ super(servletContext);
+ filter =3D servletContext.getFilterRegistration("Resteasy");
+ if (filter !=3D null)
+ {
+ log.debug("Found RESTEasy filter registration.");
+ }
+ }
+
+ @Override
+ public String getInitParameter(String name)
+ {
+ return getParameter(name);
+ }
+
+ @Override
+ public String getParameter(String name)
+ {
+ String value =3D null;
+ if (filter !=3D null)
+ {
+ value =3D filter.getInitParameter(name);
+ }
+ if (value =3D=3D null)
+ {
+ value =3D super.getInitParameter(name);
+ }
+ return value;
+ }
+}
Added: modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/te=
st/SeamResteasyClientTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/=
SeamResteasyClientTest.java (rev 0)
+++ modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/=
SeamResteasyClientTest.java 2010-06-29 13:38:42 UTC (rev 13320)
@@ -0,0 +1,80 @@
+package org.jboss.seam.resteasy.test;
+
+import static org.testng.Assert.assertEquals;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.jboss.arquillian.api.Deployment;
+import org.jboss.arquillian.api.Run;
+import org.jboss.arquillian.api.RunModeType;
+import org.jboss.arquillian.testng.Arquillian;
+import org.jboss.seam.resteasy.configuration.ConfigurationListener;
+import org.jboss.seam.resteasy.configuration.GenericExceptionMapper;
+import org.jboss.seam.resteasy.configuration.SeamResteasyConfiguration;
+import org.jboss.seam.resteasy.configuration.SeamResteasyBootstrap;
+import org.jboss.seam.resteasy.test.configuration.CustomSeamResteasyConfig=
uration;
+import org.jboss.seam.resteasy.test.configuration.EntityNotFoundException;
+import org.jboss.seam.resteasy.test.configuration.ExcludedResource;
+import org.jboss.seam.resteasy.test.configuration.TestProvider;
+import org.jboss.seam.resteasy.test.configuration.TestResource;
+import org.jboss.seam.resteasy.validation.ValidationException;
+import org.jboss.seam.resteasy.validation.ValidationExceptionMapper;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+
+(a)Run(RunModeType.AS_CLIENT)
+public abstract class SeamResteasyClientTest extends Arquillian
+{
+ protected HttpClient client =3D new HttpClient();
+ =
+ @Deployment
+ public static WebArchive createDeployment()
+ {
+ JavaArchive jar =3D createSeamResteasyLibrary();
+ WebArchive war =3D createTestApplication();
+ war.addLibrary(jar);
+ return war;
+ }
+ =
+ public static JavaArchive createSeamResteasyLibrary()
+ {
+ JavaArchive jar =3D ShrinkWrap.create("seam-resteasy.jar", JavaArchi=
ve.class);
+ jar.addManifestResource("META-INF/web-fragment.xml", "web-fragment.x=
ml");
+ jar.addManifestResource("META-INF/beans.xml", ArchivePaths.create("b=
eans.xml"));
+ jar.addClass(SeamResteasyConfiguration.class);
+ jar.addClass(SeamResteasyBootstrap.class);
+ jar.addClass(ConfigurationListener.class);
+ jar.addClass(GenericExceptionMapper.class);
+ jar.addClass(ValidationExceptionMapper.class);
+ jar.addClass(ValidationException.class);
+ jar.addClass(SeamResteasyClientTest.class); // ARQ-165
+ return jar;
+ }
+ =
+ public static WebArchive createTestApplication()
+ {
+ WebArchive war =3D ShrinkWrap.create("test.war", WebArchive.class);
+ war.addClass(CustomSeamResteasyConfiguration.class);
+ war.addClass(EntityNotFoundException.class);
+ war.addClass(TestProvider.class);
+ war.addClass(TestResource.class);
+ war.addClass(ExcludedResource.class);
+ war.addClass(Student.class);
+ war.addResource("META-INF/beans.xml", ArchivePaths.create("WEB-INF/b=
eans.xml"));
+ war.setWebXML("org/jboss/seam/resteasy/test/configuration/web.xml");
+ return war;
+ }
+ =
+ protected void test(String url, int expectedStatus, String expectedBody=
) throws Exception
+ {
+ GetMethod get =3D new GetMethod(url);
+ get.setRequestHeader("Accept", "text/plain");
+ assertEquals(client.executeMethod(get), expectedStatus);
+ if (expectedBody !=3D null)
+ {
+ assertEquals(get.getResponseBodyAsString(), expectedBody);
+ }
+ }
+}
Added: modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/te=
st/Student.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/=
Student.java (rev 0)
+++ modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/=
Student.java 2010-06-29 13:38:42 UTC (rev 13320)
@@ -0,0 +1,24 @@
+package org.jboss.seam.resteasy.test;
+
+/**
+ * Sample domain class
+ */
+public class Student
+{
+ private String name;
+
+ public Student(String name)
+ {
+ this.name =3D name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name =3D name;
+ }
+}
Added: modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/te=
st/configuration/ExcludedResource.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/=
configuration/ExcludedResource.java (rev 0)
+++ modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/=
configuration/ExcludedResource.java 2010-06-29 13:38:42 UTC (rev 13320)
@@ -0,0 +1,22 @@
+package org.jboss.seam.resteasy.test.configuration;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+import org.jboss.seam.resteasy.configuration.SeamResteasyConfiguration;
+
+/**
+ * This resource is registered by auto-scanning and is later on excluded v=
ia {@link SeamResteasyConfiguration}
+ * @author Jozef Hartinger
+ *
+ */
+(a)Path("/excluded")
+(a)Produces("text/plain")
+public class ExcludedResource
+{
+ @GET
+ public void echo()
+ {
+ }
+}
Added: modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/te=
st/configuration/ExclusionTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/=
configuration/ExclusionTest.java (rev 0)
+++ modules/resteasy/trunk/impl/src/test/java/org/jboss/seam/resteasy/test/=
configuration/ExclusionTest.java 2010-06-29 13:38:42 UTC (rev 13320)
@@ -0,0 +1,30 @@
+package org.jboss.seam.resteasy.test.configuration;
+
+import org.jboss.arquillian.api.Deployment;
+import org.jboss.arquillian.api.Run;
+import org.jboss.arquillian.api.RunModeType;
+import org.jboss.seam.resteasy.test.SeamResteasyClientTest;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.testng.annotations.Test;
+
+(a)Run(RunModeType.AS_CLIENT)
+public class ExclusionTest extends SeamResteasyClientTest
+{
+ @Deployment
+ public static WebArchive createDeployment()
+ {
+ JavaArchive jar =3D createSeamResteasyLibrary();
+ WebArchive war =3D createTestApplication();
+ war.setWebXML("org/jboss/seam/resteasy/test/configuration/excluded-w=
eb.xml");
+ war.addLibrary(jar);
+ return war;
+ }
+ =
+ @Test
+ public void testExcludedResourceNotRegistered() throws Exception
+ {
+ // the resource should be added by auto-scanning and then removed by=
seam-resteasy configuration =
+ test("http://localhost:8080/test/excluded", 404, null);
+ }
+}
Added: modules/resteasy/trunk/impl/src/test/resources/org/jboss/seam/restea=
sy/test/configuration/excluded-web.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/impl/src/test/resources/org/jboss/seam/resteasy/=
test/configuration/excluded-web.xml (rev 0)
+++ modules/resteasy/trunk/impl/src/test/resources/org/jboss/seam/resteasy/=
test/configuration/excluded-web.xml 2010-06-29 13:38:42 UTC (rev 13320)
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
Modified: modules/resteasy/trunk/pom.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- modules/resteasy/trunk/pom.xml 2010-06-29 13:07:52 UTC (rev 13319)
+++ modules/resteasy/trunk/pom.xml 2010-06-29 13:38:42 UTC (rev 13320)
@@ -72,7 +72,7 @@
org.jboss.resteasy
resteasy-jaxrs
- 2.0-beta-3
+ 2.0-beta-4
provided
@@ -102,7 +102,8 @@
org.jboss.jbossas
jboss-as-client
- 6.0.0.20100429-M3
+ 6.0.0-SNAPSHOT
+
pom
test
@@ -128,7 +129,7 @@
org.apache.maven.plugins
maven-dependency-plugin
- arquillian-testng,arquillian-api,arquillian-spi,c=
ommons-httpclient,testng,shrinkwrap-api,shrinkwrap-impl-base,resteasy-jaxrs=
+ arquillian-testng,arquillian-api,arquillian-spi,c=
ommons-httpclient,testng,shrinkwrap-api,shrinkwrap-impl-base
${basedir}/test-dependencies
--===============3923764385663514421==--