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==--