[jboss-cvs] JBossAS SVN: r106616 - in trunk/resteasy-int: jar/src/main/java/org/jboss/resteasy/integration/deployers and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jul 12 18:12:06 EDT 2010
Author: bill.burke at jboss.com
Date: 2010-07-12 18:12:05 -0400 (Mon, 12 Jul 2010)
New Revision: 106616
Modified:
trunk/resteasy-int/jar/pom.xml
trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyDeploymentScanningData.java
trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyEjbDeployer.java
trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyIntegrationDeployer.java
trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyScannerDeployer.java
trunk/resteasy-int/zip/assembly.xml
trunk/resteasy-int/zip/pom.xml
Log:
Modified: trunk/resteasy-int/jar/pom.xml
===================================================================
--- trunk/resteasy-int/jar/pom.xml 2010-07-12 21:23:14 UTC (rev 106615)
+++ trunk/resteasy-int/jar/pom.xml 2010-07-12 22:12:05 UTC (rev 106616)
@@ -62,6 +62,21 @@
</dependency>
<dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>async-http-servlet-3.0</artifactId>
+ <version>${version.org.jboss.resteasy}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.xml.stream</groupId>
+ <artifactId>stax-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
<groupId>org.jboss.jbossas</groupId>
<artifactId>jboss-as-server</artifactId>
<scope>provided</scope>
Modified: trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyDeploymentScanningData.java
===================================================================
--- trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyDeploymentScanningData.java 2010-07-12 21:23:14 UTC (rev 106615)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyDeploymentScanningData.java 2010-07-12 22:12:05 UTC (rev 106616)
@@ -1,5 +1,6 @@
package org.jboss.resteasy.integration.deployers;
+import javax.ws.rs.core.Application;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -15,8 +16,19 @@
private boolean createDispatcher;
private Set<String> resources = new LinkedHashSet<String>();
private Set<String> providers = new LinkedHashSet<String>();
+ private Class<? extends Application> applicationClass;
private boolean bootClasses;
+ public Class<? extends Application> getApplicationClass()
+ {
+ return applicationClass;
+ }
+
+ public void setApplicationClass(Class<? extends Application> applicationClass)
+ {
+ this.applicationClass = applicationClass;
+ }
+
public boolean hasBootClasses()
{
return bootClasses;
Modified: trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyEjbDeployer.java
===================================================================
--- trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyEjbDeployer.java 2010-07-12 21:23:14 UTC (rev 106615)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyEjbDeployer.java 2010-07-12 22:12:05 UTC (rev 106616)
@@ -10,18 +10,14 @@
import org.jboss.logging.Logger;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.javaee.spec.ParamValueMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.resteasy.plugins.server.servlet.ResteasyContextParameters;
import org.jboss.resteasy.util.GetRestful;
-import javax.ejb.EJBException;
import javax.ejb.Local;
import javax.ejb.LocalHome;
import javax.ejb.Remote;
-import java.util.ArrayList;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
/**
@@ -61,7 +57,7 @@
// right now I only support resources
if (!resteasy.isScanResources()) return;
- if (((VFSDeploymentUnit)du).getMetaDataFile("beans.xml") != null) return;
+ if (((VFSDeploymentUnit) du).getMetaDataFile("beans.xml") != null) return;
JBossWebMetaData webdata = du.getAttachment(JBossWebMetaData.class);
JBossMetaData ejbs = (JBossMetaData) du
@@ -99,20 +95,8 @@
{
resteasy.createDispatcher();
String paramValue = buf.toString();
- ParamValueMetaData param = new ParamValueMetaData();
- param.setParamName(ResteasyContextParameters.RESTEASY_JNDI_COMPONENT_RESOURCES);
- param.setParamValue(paramValue);
- List<ParamValueMetaData> params = webdata.getContextParams();
- if (params == null)
- {
- params = new ArrayList<ParamValueMetaData>();
- webdata.setContextParams(params);
- }
- params.add(param);
- param = new ParamValueMetaData();
- param.setParamName(ResteasyContextParameters.RESTEASY_UNWRAPPED_EXCEPTIONS);
- param.setParamValue(EJBException.class.getName());
- params.add(param);
+ log.info("*** Adding RESTEasy JNDi Component Resources: " + paramValue);
+ ResteasyIntegrationDeployer.setContextParameter(webdata, ResteasyContextParameters.RESTEASY_JNDI_COMPONENT_RESOURCES, paramValue);
}
}
Modified: trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyIntegrationDeployer.java
===================================================================
--- trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyIntegrationDeployer.java 2010-07-12 21:23:14 UTC (rev 106615)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyIntegrationDeployer.java 2010-07-12 22:12:05 UTC (rev 106616)
@@ -11,9 +11,10 @@
import org.jboss.metadata.web.spec.FilterMappingMetaData;
import org.jboss.metadata.web.spec.FilterMetaData;
import org.jboss.metadata.web.spec.FiltersMetaData;
-import org.jboss.resteasy.plugins.server.servlet.FilterDispatcher;
+import org.jboss.resteasy.plugins.server.servlet.Filter30Dispatcher;
import org.jboss.resteasy.plugins.server.servlet.ResteasyContextParameters;
+import javax.ws.rs.ApplicationPath;
import java.util.ArrayList;
import java.util.List;
@@ -56,6 +57,21 @@
}
+ public static ParamValueMetaData findContextParam(JBossWebMetaData webdata, String name)
+ {
+ List<ParamValueMetaData> params = webdata.getContextParams();
+ if (params == null) return null;
+ for (ParamValueMetaData param : params)
+ {
+ if (param.getParamName().equals(name))
+ {
+ return param;
+ }
+ }
+ return null;
+ }
+
+
public static void setContextParameter(JBossWebMetaData webdata, String name, String value)
{
ParamValueMetaData param = new ParamValueMetaData();
@@ -75,7 +91,6 @@
{
JBossWebMetaData webdata = du.getAttachment(JBossWebMetaData.class);
ResteasyDeploymentScanningData resteasy = du.getAttachment(ResteasyDeploymentScanningData.class);
- if (!resteasy.shouldCreateDispatcher()) return;
if (!resteasy.getResources().isEmpty())
{
@@ -93,6 +108,7 @@
}
}
String resources = buf.toString();
+ log.info("*** Adding JAX-RS resource classes: " + resources);
setContextParameter(webdata, ResteasyContextParameters.RESTEASY_RESOURCES, resources);
}
if (!resteasy.getProviders().isEmpty())
@@ -110,15 +126,29 @@
buf.append(",").append(provider);
}
}
- setContextParameter(webdata, ResteasyContextParameters.RESTEASY_PROVIDERS, buf.toString());
+ String providers = buf.toString();
+ log.info("*** Adding JAX-RS provider classes: " + providers);
+ setContextParameter(webdata, ResteasyContextParameters.RESTEASY_PROVIDERS, providers);
}
+ boolean useScannedApplicationClass = false;
+
+ if (resteasy.getApplicationClass() != null)
+ {
+ if (findContextParam(webdata, "javax.ws.rs.Application") == null)
+ {
+ useScannedApplicationClass = true;
+ setContextParameter(webdata, "javax.ws.rs.Application", resteasy.getApplicationClass().getName());
+ }
+ }
+
try
{
Thread.currentThread().getContextClassLoader().loadClass(CDI_INJECTOR_FACTORY_CLASS);
// don't set this param if CDI is not in classpath
- if (((VFSDeploymentUnit)du).getMetaDataFile("beans.xml") != null)
+ if (((VFSDeploymentUnit) du).getMetaDataFile("beans.xml") != null)
{
+ log.info("***** Found CDI, adding injector factory class");
setContextParameter(webdata, "resteasy.injector.factory", CDI_INJECTOR_FACTORY_CLASS);
}
}
@@ -126,16 +156,29 @@
{
}
+ ResteasyIntegrationDeployer.setContextParameter(webdata, ResteasyContextParameters.RESTEASY_UNWRAPPED_EXCEPTIONS, "javax.ejb.EJBException");
+
if (resteasy.hasBootClasses()) return;
FilterMetaData filter = new FilterMetaData();
- filter.setFilterClass(FilterDispatcher.class.getName());
+ filter.setFilterClass(Filter30Dispatcher.class.getName());
filter.setName("Resteasy");
+ filter.setAsyncSupported(true);
FilterMappingMetaData mapping = new FilterMappingMetaData();
mapping.setFilterName("Resteasy");
List<String> patterns = new ArrayList<String>();
- patterns.add("/*");
+ if (useScannedApplicationClass && resteasy.getApplicationClass().isAnnotationPresent(ApplicationPath.class))
+ {
+ ApplicationPath path = resteasy.getApplicationClass().getAnnotation(ApplicationPath.class);
+ String pathValue = path.value();
+ patterns.add(pathValue + "/*");
+ setContextParameter(webdata, "resteasy.servlet.mapping.prefix", pathValue);
+ }
+ else
+ {
+ patterns.add("/*");
+ }
mapping.setUrlPatterns(patterns);
if (webdata.getFilters() == null)
Modified: trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyScannerDeployer.java
===================================================================
--- trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyScannerDeployer.java 2010-07-12 21:23:14 UTC (rev 106615)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyScannerDeployer.java 2010-07-12 22:12:05 UTC (rev 106616)
@@ -10,7 +10,7 @@
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.metadata.web.spec.FilterMetaData;
import org.jboss.metadata.web.spec.ServletMetaData;
-import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
+import org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher;
import org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrapClasses;
import org.jboss.resteasy.plugins.server.servlet.ResteasyContextParameters;
import org.jboss.scanning.annotations.spi.AnnotationIndex;
@@ -118,7 +118,8 @@
}
if (Application.class.isAssignableFrom(clazz))
{
- servlet.setServletClass(HttpServletDispatcher.class.getName());
+ servlet.setServletClass(HttpServlet30Dispatcher.class.getName());
+ servlet.setAsyncSupported(true);
ParamValueMetaData param = new ParamValueMetaData();
param.setParamName("javax.ws.rs.Application");
param.setParamValue(servletClass);
@@ -129,11 +130,12 @@
servlet.setInitParam(params);
}
params.add(param);
+ ResteasyIntegrationDeployer.setContextParameter(webdata, ResteasyContextParameters.RESTEASY_UNWRAPPED_EXCEPTIONS, "javax.ejb.EJBException");
try
{
Thread.currentThread().getContextClassLoader().loadClass(ResteasyIntegrationDeployer.CDI_INJECTOR_FACTORY_CLASS);
// don't set this param if it is not in classpath
- if (((VFSDeploymentUnit)du).getMetaDataFile("beans.xml") != null)
+ if (((VFSDeploymentUnit) du).getMetaDataFile("beans.xml") != null)
{
ResteasyIntegrationDeployer.setContextParameter(webdata, "resteasy.injector.factory", ResteasyIntegrationDeployer.CDI_INJECTOR_FACTORY_CLASS);
}
@@ -148,12 +150,17 @@
}
+ protected void addApplicationClass(Class<? extends Application> applicationClass, DeploymentUnit du, JBossWebMetaData webdata)
+ {
+
+ }
+
protected void scan(DeploymentUnit du, JBossWebMetaData webdata)
throws DeploymentException
{
ResteasyDeploymentScanningData scanningData = new ResteasyDeploymentScanningData();
- // If there is a resteasy boot class in web.xml, then the default should not be to scan
+ // If there is a resteasy boot class in web.xml, then the default should be to not scan
boolean hasBoot = hasBootClasses(du, webdata);
scanningData.setBootClasses(hasBoot);
@@ -227,9 +234,45 @@
}
return;
}
+ else
+ {
+ }
du.addAttachment(ResteasyDeploymentScanningData.class, scanningData);
+ // look for Application class, return if there is one
+
+ HierarchyIndex hier = du.getAttachment(HierarchyIndex.class);
+ if (hier != null)
+ {
+ Set<Class<? extends Application>> applicationClass = hier.getSubClassesOf(null, Application.class);
+ if (applicationClass != null)
+ {
+ if (applicationClass.size() > 1)
+ {
+ StringBuilder builder = new StringBuilder("Only one JAX-RS Application Class allowed.");
+ for (Class c : applicationClass)
+ {
+ builder.append(" ").append(c.getName());
+ }
+ throw new DeploymentException(builder.toString());
+ }
+ else if (applicationClass.size() == 1)
+ {
+ Class<? extends Application> aClass = applicationClass.iterator().next();
+ scanningData.setApplicationClass(aClass);
+
+ // don't scan for anything else
+ return;
+ }
+ }
+ }
+ else
+ {
+ LOGGER.debug("Expecting HierarchyIndex class for scanning WAR for JAX-RS Application class");
+ }
+
+ // Looked for annotated resources and providers
AnnotationIndex env = du.getAttachment(AnnotationIndex.class);
if (env == null)
{
@@ -237,6 +280,7 @@
return;
}
+
Set<Element<Path, Class<?>>> resources = null;
Set<Element<Provider, Class<?>>> providers = null;
if (scanningData.isScanResources())
Modified: trunk/resteasy-int/zip/assembly.xml
===================================================================
--- trunk/resteasy-int/zip/assembly.xml 2010-07-12 21:23:14 UTC (rev 106615)
+++ trunk/resteasy-int/zip/assembly.xml 2010-07-12 22:12:05 UTC (rev 106616)
@@ -31,6 +31,7 @@
<include>org.jboss.resteasy:resteasy-jackson-provider</include>
<include>org.jboss.resteasy:resteasy-yaml-provider</include>
<include>org.jboss.resteasy:resteasy-cdi</include>
+ <include>org.jboss.resteasy:async-http-servlet-3.0</include>
</includes>
<outputDirectory>resteasy.deployer</outputDirectory>
</dependencySet>
Modified: trunk/resteasy-int/zip/pom.xml
===================================================================
--- trunk/resteasy-int/zip/pom.xml 2010-07-12 21:23:14 UTC (rev 106615)
+++ trunk/resteasy-int/zip/pom.xml 2010-07-12 22:12:05 UTC (rev 106616)
@@ -114,6 +114,11 @@
<artifactId>resteasy-cdi</artifactId>
<version>${version.org.jboss.resteasy}</version>
</dependency>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>async-http-servlet-3.0</artifactId>
+ <version>${version.org.jboss.resteasy}</version>
+ </dependency>
</dependencies>
<build>
More information about the jboss-cvs-commits
mailing list