[jboss-cvs] JBossAS SVN: r109242 - in trunk: resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers and 37 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Nov 10 13:48:57 EST 2010
Author: bill.burke at jboss.com
Date: 2010-11-10 13:48:56 -0500 (Wed, 10 Nov 2010)
New Revision: 109242
Added:
trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyDeploymentData.java
trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyProviderFactoryInitializer.java
trunk/resteasy-int/test/application-scanned-ejb-war/
trunk/resteasy-int/test/application-scanned-ejb-war/pom.xml
trunk/resteasy-int/test/application-scanned-ejb-war/src/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/AppConfig.java
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyException.java
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyExceptionMapper.java
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyResource.java
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyResourceBean.java
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/WEB-INF/
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/WEB-INF/web.xml
trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/index.jsp
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/jboss/
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/jboss/resteasy/
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/jboss/resteasy/test/
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/jboss/resteasy/test/jboss/
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/jboss/resteasy/test/jboss/EjbTest.java
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/jndi.properties
trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/log4j.xml
trunk/resteasy-int/test/application-uses-scanning/
trunk/resteasy-int/test/application-uses-scanning/pom.xml
trunk/resteasy-int/test/application-uses-scanning/src/
trunk/resteasy-int/test/application-uses-scanning/src/main/
trunk/resteasy-int/test/application-uses-scanning/src/main/java/
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/AppConfig.java
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyContextResolver.java
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyIntf.java
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyIntfResource.java
trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyResource.java
trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/
trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/WEB-INF/
trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/WEB-INF/web.xml
trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/index.jsp
trunk/resteasy-int/test/application-uses-scanning/src/test/
trunk/resteasy-int/test/application-uses-scanning/src/test/java/
trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/
trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/jboss/
trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/jboss/resteasy/
trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/jboss/resteasy/test/
trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/jboss/resteasy/test/jboss/
trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/jboss/resteasy/test/jboss/ScanningTest.java
trunk/resteasy-int/test/application-uses-scanning/src/test/resources/
trunk/resteasy-int/test/application-uses-scanning/src/test/resources/jndi.properties
trunk/resteasy-int/test/application-uses-scanning/src/test/resources/log4j.xml
Modified:
trunk/component-matrix/pom.xml
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/test/pom.xml
Log:
resteasy update/fixes
Modified: trunk/component-matrix/pom.xml
===================================================================
--- trunk/component-matrix/pom.xml 2010-11-10 18:32:44 UTC (rev 109241)
+++ trunk/component-matrix/pom.xml 2010-11-10 18:48:56 UTC (rev 109242)
@@ -121,7 +121,7 @@
<version.org.jboss.profileservice>0.1.0.Alpha1</version.org.jboss.profileservice>
<version.org.jboss.reflect>2.2.0.Alpha9</version.org.jboss.reflect>
<version.org.jboss.reloaded.naming>0.2.0</version.org.jboss.reloaded.naming>
- <version.org.jboss.resteasy>2.0.0.GA</version.org.jboss.resteasy>
+ <version.org.jboss.resteasy>2.1-beta-1</version.org.jboss.resteasy>
<version.org.jboss.remoting>2.5.3</version.org.jboss.remoting>
<version.org.jboss.remoting3>3.1.0.Beta2</version.org.jboss.remoting3>
<version.org.jboss.remoting3.metadata>1.0.0.Beta2</version.org.jboss.remoting3.metadata>
Added: trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyDeploymentData.java
===================================================================
--- trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyDeploymentData.java (rev 0)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyDeploymentData.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,133 @@
+package org.jboss.resteasy.integration.deployers;
+
+import javax.ws.rs.core.Application;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class ResteasyDeploymentData
+{
+ private boolean scanAll;
+ private boolean scanResources;
+ private boolean scanProviders;
+ private boolean dispatcherCreated;
+ private Set<String> scannedResourceClasses = new LinkedHashSet<String>();
+ private Set<String> scannedProviderClasses = new LinkedHashSet<String>();
+ private Class<? extends Application> scannedApplicationClass;
+ private boolean bootClasses;
+ private boolean unwrappedExceptionsParameterSet;
+ private Set<String> scannedJndiComponentResources = new LinkedHashSet<String>();
+
+ public Set<String> getScannedJndiComponentResources()
+ {
+ return scannedJndiComponentResources;
+ }
+
+ public void setScannedJndiComponentResources(Set<String> scannedJndiComponentResources)
+ {
+ this.scannedJndiComponentResources = scannedJndiComponentResources;
+ }
+
+ public boolean isDispatcherCreated()
+ {
+ return dispatcherCreated;
+ }
+
+ public void setDispatcherCreated(boolean dispatcherCreated)
+ {
+ this.dispatcherCreated = dispatcherCreated;
+ }
+
+ public Class<? extends Application> getScannedApplicationClass()
+ {
+ return scannedApplicationClass;
+ }
+
+ public void setScannedApplicationClass(Class<? extends Application> scannedApplicationClass)
+ {
+ this.scannedApplicationClass = scannedApplicationClass;
+ }
+
+ public boolean hasBootClasses()
+ {
+ return bootClasses;
+ }
+
+ public void setBootClasses(boolean bootClasses)
+ {
+ this.bootClasses = bootClasses;
+ }
+
+ public boolean shouldScan()
+ {
+ return scanAll || scanResources || scanProviders;
+ }
+
+ public boolean isScanAll()
+ {
+ return scanAll;
+ }
+
+ public void setScanAll(boolean scanAll)
+ {
+ if (scanAll)
+ {
+ scanResources = true;
+ scanProviders = true;
+ }
+ this.scanAll = scanAll;
+ }
+
+ public boolean isScanResources()
+ {
+ return scanResources;
+ }
+
+ public void setScanResources(boolean scanResources)
+ {
+ this.scanResources = scanResources;
+ }
+
+ public boolean isScanProviders()
+ {
+ return scanProviders;
+ }
+
+ public void setScanProviders(boolean scanProviders)
+ {
+ this.scanProviders = scanProviders;
+ }
+
+ public Set<String> getScannedResourceClasses()
+ {
+ return scannedResourceClasses;
+ }
+
+ public void setScannedResourceClasses(Set<String> scannedResourceClasses)
+ {
+ this.scannedResourceClasses = scannedResourceClasses;
+ }
+
+ public Set<String> getScannedProviderClasses()
+ {
+ return scannedProviderClasses;
+ }
+
+ public void setScannedProviderClasses(Set<String> scannedProviderClasses)
+ {
+ this.scannedProviderClasses = scannedProviderClasses;
+ }
+
+ public boolean isUnwrappedExceptionsParameterSet()
+ {
+ return unwrappedExceptionsParameterSet;
+ }
+
+ public void setUnwrappedExceptionsParameterSet(boolean unwrappedExceptionsParameterSet)
+ {
+ this.unwrappedExceptionsParameterSet = unwrappedExceptionsParameterSet;
+ }
+}
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-11-10 18:32:44 UTC (rev 109241)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyEjbDeployer.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -11,7 +11,6 @@
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
-import org.jboss.resteasy.plugins.server.servlet.ResteasyContextParameters;
import org.jboss.resteasy.util.GetRestful;
import javax.ejb.Local;
@@ -33,7 +32,7 @@
super();
addRequiredInput(JBossWebMetaData.class);
- addRequiredInput(ResteasyDeploymentScanningData.class);
+ addRequiredInput(ResteasyDeploymentData.class);
addRequiredInput(MergedJBossMetaDataDeployer.EJB_MERGED_ATTACHMENT_NAME);
addOutput(JBossWebMetaData.class);
setStage(DeploymentStages.PRE_REAL); // TODO -- right stage?
@@ -41,7 +40,7 @@
protected void internalDeploy(DeploymentUnit du) throws DeploymentException
{
- ResteasyDeploymentScanningData resteasy = du.getAttachment(ResteasyDeploymentScanningData.class);
+ ResteasyDeploymentData resteasy = du.getAttachment(ResteasyDeploymentData.class);
/*
log.info("*******************");
@@ -59,11 +58,9 @@
if (!resteasy.isScanResources()) return;
if (((VFSDeploymentUnit) du).getMetaDataFile("beans.xml") != null) return;
- JBossWebMetaData webdata = du.getAttachment(JBossWebMetaData.class);
JBossMetaData ejbs = (JBossMetaData) du
.getAttachment(MergedJBossMetaDataDeployer.EJB_MERGED_ATTACHMENT_NAME);
ClassLoader loader = du.getClassLoader();
- StringBuffer buf = null;
for (final JBossEnterpriseBeanMetaData ejb : ejbs.getEnterpriseBeans())
{
Class ejbClass = null;
@@ -78,26 +75,13 @@
if (!GetRestful.isRootResource(ejbClass)) continue;
String jndiName = getLocalJndiName(ejb, ejbClass);
log.debug("Found JAX-RS EJB: " + ejbClass.getName() + " local jndi name: " + jndiName);
- if (buf == null)
- {
- buf = new StringBuffer();
- }
- else
- {
- buf.append(",");
- }
+ StringBuffer buf = new StringBuffer();
buf.append(jndiName).append(";").append(ejbClass.getName()).append(";").append("true");
+ resteasy.getScannedJndiComponentResources().add(buf.toString());
// make sure its removed from list
- resteasy.getResources().remove(ejbClass.getName());
+ resteasy.getScannedResourceClasses().remove(ejbClass.getName());
}
- if (buf != null)
- {
- resteasy.createDispatcher();
- String paramValue = buf.toString();
- log.debug("*** Adding RESTEasy JNDi Component Resources: " + paramValue);
- ResteasyIntegrationDeployer.setContextParameter(webdata, ResteasyContextParameters.RESTEASY_JNDI_COMPONENT_RESOURCES, paramValue);
- }
}
private static String getLocalJndiName(JBossEnterpriseBeanMetaData ejb, Class<?> ejbClass)
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-11-10 18:32:44 UTC (rev 109241)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyIntegrationDeployer.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -32,7 +32,7 @@
super();
addRequiredInput(JBossWebMetaData.class);
- addRequiredInput(ResteasyDeploymentScanningData.class);
+ addRequiredInput(ResteasyDeploymentData.class);
addOutput(JBossWebMetaData.class);
setStage(DeploymentStages.PRE_REAL); // TODO -- right stage?
}
@@ -90,12 +90,13 @@
protected void internalDeploy(DeploymentUnit du) throws DeploymentException
{
JBossWebMetaData webdata = du.getAttachment(JBossWebMetaData.class);
- ResteasyDeploymentScanningData resteasy = du.getAttachment(ResteasyDeploymentScanningData.class);
+ ResteasyDeploymentData resteasy = du.getAttachment(ResteasyDeploymentData.class);
+ if (resteasy == null) return;
- if (!resteasy.getResources().isEmpty())
+ if (!resteasy.getScannedResourceClasses().isEmpty())
{
StringBuffer buf = null;
- for (String resource : resteasy.getResources())
+ for (String resource : resteasy.getScannedResourceClasses())
{
if (buf == null)
{
@@ -108,13 +109,13 @@
}
}
String resources = buf.toString();
- log.debug("*** Adding JAX-RS resource classes: " + resources);
- setContextParameter(webdata, ResteasyContextParameters.RESTEASY_RESOURCES, resources);
+ log.info("*** Adding JAX-RS resource classes: " + resources);
+ setContextParameter(webdata, ResteasyContextParameters.RESTEASY_SCANNED_RESOURCES, resources);
}
- if (!resteasy.getProviders().isEmpty())
+ if (!resteasy.getScannedProviderClasses().isEmpty())
{
StringBuffer buf = null;
- for (String provider : resteasy.getProviders())
+ for (String provider : resteasy.getScannedProviderClasses())
{
if (buf == null)
{
@@ -127,18 +128,38 @@
}
}
String providers = buf.toString();
- log.debug("*** Adding JAX-RS provider classes: " + providers);
- setContextParameter(webdata, ResteasyContextParameters.RESTEASY_PROVIDERS, providers);
+ log.info("*** Adding JAX-RS provider classes: " + providers);
+ setContextParameter(webdata, ResteasyContextParameters.RESTEASY_SCANNED_PROVIDERS, providers);
}
+ if (!resteasy.getScannedJndiComponentResources().isEmpty())
+ {
+ StringBuffer buf = null;
+ for (String resource : resteasy.getScannedJndiComponentResources())
+ {
+ if (buf == null)
+ {
+ buf = new StringBuffer();
+ buf.append(resource);
+ }
+ else
+ {
+ buf.append(",").append(resource);
+ }
+ }
+ String providers = buf.toString();
+ log.info("*** Adding JAX-RS jndi component resource classes: " + providers);
+ setContextParameter(webdata, ResteasyContextParameters.RESTEASY_SCANNED_JNDI_RESOURCES, providers);
+ }
+
boolean useScannedApplicationClass = false;
- if (resteasy.getApplicationClass() != null)
+ if (resteasy.getScannedApplicationClass() != null)
{
if (findContextParam(webdata, "javax.ws.rs.Application") == null)
{
useScannedApplicationClass = true;
- setContextParameter(webdata, "javax.ws.rs.Application", resteasy.getApplicationClass().getName());
+ setContextParameter(webdata, "javax.ws.rs.Application", resteasy.getScannedApplicationClass().getName());
}
}
@@ -162,7 +183,11 @@
setContextParameter(webdata, ResteasyContextParameters.RESTEASY_UNWRAPPED_EXCEPTIONS, "javax.ejb.EJBException");
}
- if (resteasy.hasBootClasses()) return;
+ if (resteasy.hasBootClasses() || resteasy.isDispatcherCreated()) return;
+ if (resteasy.getScannedApplicationClass() == null
+ && resteasy.getScannedJndiComponentResources().isEmpty()
+ && resteasy.getScannedProviderClasses().isEmpty()
+ && resteasy.getScannedResourceClasses().isEmpty()) return;
FilterMetaData filter = new FilterMetaData();
filter.setFilterClass(Filter30Dispatcher.class.getName());
@@ -172,12 +197,25 @@
FilterMappingMetaData mapping = new FilterMappingMetaData();
mapping.setFilterName("Resteasy");
List<String> patterns = new ArrayList<String>();
- if (useScannedApplicationClass && resteasy.getApplicationClass().isAnnotationPresent(ApplicationPath.class))
+ if (useScannedApplicationClass && resteasy.getScannedApplicationClass().isAnnotationPresent(ApplicationPath.class))
{
- ApplicationPath path = resteasy.getApplicationClass().getAnnotation(ApplicationPath.class);
- String pathValue = path.value();
- patterns.add(pathValue + "/*");
- setContextParameter(webdata, "resteasy.servlet.mapping.prefix", pathValue);
+ ApplicationPath path = resteasy.getScannedApplicationClass().getAnnotation(ApplicationPath.class);
+ String pathValue = path.value().trim();
+ if (!pathValue.startsWith("/"))
+ {
+ pathValue = "/" + pathValue;
+ }
+ String prefix = pathValue;
+ if (pathValue.endsWith("/"))
+ {
+ pathValue += "*";
+ }
+ else
+ {
+ pathValue += "/*";
+ }
+ patterns.add(pathValue);
+ setContextParameter(webdata, "resteasy.servlet.mapping.prefix", prefix);
}
else
{
Added: trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyProviderFactoryInitializer.java
===================================================================
--- trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyProviderFactoryInitializer.java (rev 0)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyProviderFactoryInitializer.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,38 @@
+package org.jboss.resteasy.integration.deployers;
+
+import org.jboss.resteasy.core.ThreadLocalResteasyProviderFactory;
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class ResteasyProviderFactoryInitializer
+{
+ private boolean useThreadLocalFactory = true;
+
+ public boolean isUseThreadLocalFactory()
+ {
+ return useThreadLocalFactory;
+ }
+
+ public void setUseThreadLocalFactory(boolean useThreadLocalFactory)
+ {
+ this.useThreadLocalFactory = useThreadLocalFactory;
+ }
+
+ public void start()
+ {
+ ResteasyProviderFactory instance = ResteasyProviderFactory.getInstance();
+ if (useThreadLocalFactory)
+ {
+ ThreadLocalResteasyProviderFactory factory = new ThreadLocalResteasyProviderFactory(instance);
+ ResteasyProviderFactory.setInstance(factory);
+ }
+ }
+
+ public void stop()
+ {
+ ResteasyProviderFactory.setInstance(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-11-10 18:32:44 UTC (rev 109241)
+++ trunk/resteasy-int/jar/src/main/java/org/jboss/resteasy/integration/deployers/ResteasyScannerDeployer.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -10,6 +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.Filter30Dispatcher;
import org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher;
import org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrapClasses;
import org.jboss.resteasy.plugins.server.servlet.ResteasyContextParameters;
@@ -21,6 +22,7 @@
import javax.ws.rs.Path;
import javax.ws.rs.core.Application;
import javax.ws.rs.ext.Provider;
+import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -52,18 +54,13 @@
addRequiredInput(JBossWebMetaData.class);
addInput(AnnotationRepository.class);
addOutput(JBossWebMetaData.class);
- addOutput(ResteasyDeploymentScanningData.class);
+ addOutput(ResteasyDeploymentData.class);
setStage(DeploymentStages.PRE_REAL); // TODO -- right stage?
}
protected void internalDeploy(DeploymentUnit du) throws DeploymentException
{
JBossWebMetaData webdata = du.getAttachment(JBossWebMetaData.class);
- boolean applicationClassDeployed = deployApplicationClass(du, webdata);
-
- // If an Application class is present, we assume the user wants to totally control deployment
- if (applicationClassDeployed) return;
-
scan(du, webdata);
}
@@ -78,7 +75,6 @@
*/
protected boolean hasBootClasses(DeploymentUnit du, JBossWebMetaData webdata) throws DeploymentException
{
- ClassLoader loader = du.getClassLoader();
if (webdata.getServlets() != null)
{
for (ServletMetaData servlet : webdata.getServlets())
@@ -98,86 +94,34 @@
}
- protected boolean deployApplicationClass(DeploymentUnit du, JBossWebMetaData webdata) throws DeploymentException
- {
- ClassLoader loader = du.getClassLoader();
- if (webdata.getServlets() == null) return false;
-
- for (ServletMetaData servlet : webdata.getServlets())
- {
- String servletClass = servlet.getServletClass();
- if (servletClass == null) continue;
- Class clazz = null;
- try
- {
- clazz = loader.loadClass(servletClass);
- }
- catch (ClassNotFoundException e)
- {
- throw new DeploymentException(e);
- }
- if (Application.class.isAssignableFrom(clazz))
- {
- servlet.setServletClass(HttpServlet30Dispatcher.class.getName());
- servlet.setAsyncSupported(true);
- ParamValueMetaData param = new ParamValueMetaData();
- param.setParamName("javax.ws.rs.Application");
- param.setParamValue(servletClass);
- List<ParamValueMetaData> params = servlet.getInitParam();
- if (params == null)
- {
- params = new ArrayList<ParamValueMetaData>();
- servlet.setInitParam(params);
- }
- params.add(param);
-
- 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)
- {
- ResteasyIntegrationDeployer.setContextParameter(webdata, "resteasy.injector.factory", ResteasyIntegrationDeployer.CDI_INJECTOR_FACTORY_CLASS);
- }
- }
- catch (ClassNotFoundException ignored)
- {
- }
- return true;
- }
- }
- return false;
-
- }
-
- protected void addApplicationClass(Class<? extends Application> applicationClass, DeploymentUnit du, JBossWebMetaData webdata)
- {
-
- }
-
protected void scan(DeploymentUnit du, JBossWebMetaData webdata)
throws DeploymentException
{
- ResteasyDeploymentScanningData scanningData = new ResteasyDeploymentScanningData();
+ ResteasyDeploymentData resteasyDeploymentData = new ResteasyDeploymentData();
+ du.addAttachment(ResteasyDeploymentData.class, resteasyDeploymentData);
// If there is a resteasy boot class in web.xml, then the default should be to not scan
+ // make sure this call happens before checkDeclaredApplicationClassAsServlet!!!
boolean hasBoot = hasBootClasses(du, webdata);
- scanningData.setBootClasses(hasBoot);
+ resteasyDeploymentData.setBootClasses(hasBoot);
+ Class declaredApplicationClass = checkDeclaredApplicationClassAsServlet(du, webdata);
+ // Assume that checkDeclaredApplicationClassAsServlet created the dispatcher
+ if (declaredApplicationClass != null) resteasyDeploymentData.setDispatcherCreated(true);
+
+
+ // set scanning on only if there are no boot classes
if (hasBoot == false && !webdata.isMetadataComplete())
{
- scanningData.setScanAll(true);
- scanningData.setScanProviders(true);
- scanningData.setScanResources(true);
+ resteasyDeploymentData.setScanAll(true);
+ resteasyDeploymentData.setScanProviders(true);
+ resteasyDeploymentData.setScanResources(true);
}
// check resteasy configuration flags
List<ParamValueMetaData> contextParams = webdata.getContextParams();
- boolean hasResourceParam = false;
- boolean hasProviderParam = false;
- boolean hasJndiParam = false;
if (contextParams != null)
{
@@ -185,96 +129,68 @@
{
if (param.getParamName().equals(ResteasyContextParameters.RESTEASY_SCAN))
{
- scanningData.setScanAll(Boolean.valueOf(param.getParamValue()));
+ resteasyDeploymentData.setScanAll(Boolean.valueOf(param.getParamValue()));
}
else if (param.getParamName().equals(ResteasyContextParameters.RESTEASY_SCAN_PROVIDERS))
{
- scanningData.setScanProviders(Boolean.valueOf(param.getParamValue()));
+ resteasyDeploymentData.setScanProviders(Boolean.valueOf(param.getParamValue()));
}
else if (param.getParamName().equals(ResteasyContextParameters.RESTEASY_SCAN_RESOURCES))
{
- scanningData.setScanResources(Boolean.valueOf(param.getParamValue()));
+ resteasyDeploymentData.setScanResources(Boolean.valueOf(param.getParamValue()));
}
- else if (param.getParamName().equals(ResteasyContextParameters.RESTEASY_RESOURCES))
- {
- hasResourceParam = true;
- }
- else if (param.getParamName().equals(ResteasyContextParameters.RESTEASY_PROVIDERS))
- {
- hasProviderParam = true;
- }
- else if (param.getParamName().equals(ResteasyContextParameters.RESTEASY_JNDI_RESOURCES))
- {
- hasJndiParam = true;
- }
else if (param.getParamName().equals(ResteasyContextParameters.RESTEASY_UNWRAPPED_EXCEPTIONS))
{
- scanningData.setUnwrappedExceptionsParameterSet(true);
+ resteasyDeploymentData.setUnwrappedExceptionsParameterSet(true);
}
}
}
- if (hasResourceParam)
+ if (!resteasyDeploymentData.shouldScan())
{
- scanningData.setScanAll(false);
- scanningData.setScanResources(false);
- }
-
- if (hasProviderParam)
- {
- scanningData.setScanAll(false);
- scanningData.setScanProviders(false);
- }
-
- if (!scanningData.shouldScan())
- {
- if (hasResourceParam || hasProviderParam || hasJndiParam)
- {
- if (hasBoot == false)
- {
- scanningData.createDispatcher();
- du.addAttachment(ResteasyDeploymentScanningData.class, scanningData);
- }
- }
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)
+ // look for Application class. Don't scan for one if there is a declared one.
+ if (declaredApplicationClass == null)
{
- Set<Class<? extends Application>> applicationClass = hier.getSubClassesOf(null, Application.class);
- if (applicationClass != null)
+ HierarchyIndex hier = du.getAttachment(HierarchyIndex.class);
+ if (hier != null)
{
- if (applicationClass.size() > 1)
+ Set<Class<? extends Application>> applicationClass = hier.getSubClassesOf(null, Application.class);
+ if (applicationClass != null)
{
- StringBuilder builder = new StringBuilder("Only one JAX-RS Application Class allowed.");
- for (Class c : applicationClass)
+ if (applicationClass.size() > 1)
{
- builder.append(" ").append(c.getName());
+ StringBuilder builder = new StringBuilder("Only one JAX-RS Application Class allowed.");
+ Set<Class<? extends Application>> aClasses = new HashSet<Class<? extends Application>>();
+ for (Class c : applicationClass)
+ {
+ if (!c.isAnonymousClass() && !Modifier.isAbstract(c.getModifiers()))
+ {
+ aClasses.add(c);
+ }
+ builder.append(" ").append(c.getName());
+ }
+ if (aClasses.size() > 1) throw new DeploymentException(builder.toString());
+ else if (aClasses.size() == 1)
+ {
+ Class<? extends Application> aClass = applicationClass.iterator().next();
+ resteasyDeploymentData.setScannedApplicationClass(aClass);
+ }
}
- throw new DeploymentException(builder.toString());
+ else if (applicationClass.size() == 1)
+ {
+ Class<? extends Application> aClass = applicationClass.iterator().next();
+ resteasyDeploymentData.setScannedApplicationClass(aClass);
+ }
}
- 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");
+ }
}
- 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);
@@ -287,11 +203,11 @@
Set<Element<Path, Class<?>>> resources = null;
Set<Element<Provider, Class<?>>> providers = null;
- if (scanningData.isScanResources())
+ if (resteasyDeploymentData.isScanResources())
{
resources = env.classIsAnnotatedWith(Path.class);
}
- if (scanningData.isScanProviders())
+ if (resteasyDeploymentData.isScanProviders())
{
providers = env.classIsAnnotatedWith(Provider.class);
}
@@ -306,7 +222,7 @@
{
continue;
}
- scanningData.getResources().add(e.getOwnerClassName());
+ resteasyDeploymentData.getScannedResourceClasses().add(e.getOwnerClassName());
}
}
if (providers != null)
@@ -314,12 +230,65 @@
for (Element e : providers)
{
if (e.getOwner().isInterface()) continue;
- scanningData.getProviders().add(e.getOwnerClassName());
+ resteasyDeploymentData.getScannedProviderClasses().add(e.getOwnerClassName());
}
}
Set<String> strings = env.classesImplementingInterfacesAnnotatedWith(Path.class.getName());
- scanningData.getResources().addAll(strings);
+ resteasyDeploymentData.getScannedResourceClasses().addAll(strings);
}
+ protected Class checkDeclaredApplicationClassAsServlet(DeploymentUnit du, JBossWebMetaData webdata) throws DeploymentException
+ {
+ ClassLoader loader = du.getClassLoader();
+ if (webdata.getServlets() == null) return null;
+
+ for (ServletMetaData servlet : webdata.getServlets())
+ {
+ String servletClass = servlet.getServletClass();
+ if (servletClass == null) continue;
+ Class clazz = null;
+ try
+ {
+ clazz = loader.loadClass(servletClass);
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new DeploymentException(e);
+ }
+ if (Application.class.isAssignableFrom(clazz))
+ {
+ servlet.setServletClass(HttpServlet30Dispatcher.class.getName());
+ servlet.setAsyncSupported(true);
+ ParamValueMetaData param = new ParamValueMetaData();
+ param.setParamName("javax.ws.rs.Application");
+ param.setParamValue(servletClass);
+ List<ParamValueMetaData> params = servlet.getInitParam();
+ if (params == null)
+ {
+ params = new ArrayList<ParamValueMetaData>();
+ servlet.setInitParam(params);
+ }
+ params.add(param);
+
+ 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)
+ {
+ ResteasyIntegrationDeployer.setContextParameter(webdata, "resteasy.injector.factory", ResteasyIntegrationDeployer.CDI_INJECTOR_FACTORY_CLASS);
+ }
+ }
+ catch (ClassNotFoundException ignored)
+ {
+ }
+ return clazz;
+ }
+ }
+ return null;
+ }
+
+
+
}
Added: trunk/resteasy-int/test/application-scanned-ejb-war/pom.xml
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/pom.xml (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/pom.xml 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,95 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-parent</artifactId>
+ <version>6.0.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.jbossas.resteasy.test</groupId>
+ <artifactId>application-scanned-ejb-test</artifactId>
+ <packaging>war</packaging>
+ <name>Basic Integration Test</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-jaxrs</artifactId>
+ <version>${version.org.jboss.resteasy}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.spec.javax.ejb</groupId>
+ <artifactId>jboss-ejb-api_3.1_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <finalName>ejb-test</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jboss-maven-plugin</artifactId>
+ <version>1.3.1</version>
+ <configuration>
+ <jbossHome>${jboss.home}</jbossHome>
+ </configuration>
+ <executions>
+ <execution>
+ <id>jboss-deploy</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>deploy</goal>
+ </goals>
+ <configuration>
+ <fileName>${basedir}/target/ejb-test.war</fileName>
+ </configuration>
+ </execution>
+ <execution>
+ <id>jboss-undeploy</id>
+ <phase>post-integration-test</phase>
+ <goals>
+ <goal>undeploy</goal>
+ </goals>
+ <configuration>
+ <fileName>${basedir}/target/ejb-test.war</fileName>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ <executions>
+ <execution>
+ <id>surefire-it</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/AppConfig.java
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/AppConfig.java (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/AppConfig.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,13 @@
+package org.jboss.resteasy.test;
+
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at ApplicationPath("prefixed")
+public class AppConfig extends Application
+{
+}
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyException.java
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyException.java (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyException.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,9 @@
+package org.jboss.resteasy.test;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class MyException extends RuntimeException
+{
+}
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyExceptionMapper.java
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyExceptionMapper.java (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyExceptionMapper.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,18 @@
+package org.jboss.resteasy.test;
+
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Provider
+public class MyExceptionMapper implements ExceptionMapper<MyException>
+{
+ public Response toResponse(MyException e)
+ {
+ return Response.status(412).type("text/plain").entity("MyException thrown").build();
+ }
+}
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyResource.java
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyResource.java (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyResource.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,30 @@
+package org.jboss.resteasy.test;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Path("/scan")
+public interface MyResource
+{
+ @GET
+ @Produces("text/plain")
+ String get();
+
+ @GET
+ @Produces("text/plain")
+ @Path("exception")
+ public String testException();
+
+ @Path("/custom-exception")
+ @GET
+ String throwException();
+
+ @Path("/ejb-exception")
+ @GET
+ String throwEjbException();
+}
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyResourceBean.java
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyResourceBean.java (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/main/java/org/jboss/resteasy/test/MyResourceBean.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,58 @@
+package org.jboss.resteasy.test;
+
+import javax.ejb.EJBException;
+import javax.ws.rs.Path;
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ejb.Stateless;
+import javax.ejb.EJBContext;
+import javax.annotation.Resource;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Path("/scan")
+ at Stateless
+public class MyResourceBean implements MyResource
+{
+ @Resource
+ private EJBContext ctx;
+
+ @GET
+ @Produces("text/plain")
+ public String get()
+ {
+ if (ctx == null)
+ {
+ System.out.println("NO CONTEXT!!!!!");
+ throw new WebApplicationException(500);
+ }
+ System.out.println("CONTEXT WAS THERE!");
+ return "hello world";
+ }
+
+ @GET
+ @Produces("text/plain")
+ @Path("exception")
+ public String testException()
+ {
+ throw new WebApplicationException(412);
+ }
+
+ @Path("/custom-exception")
+ @GET
+ public String throwException()
+ {
+ throw new MyException();
+ }
+
+
+ @Path("/ejb-exception")
+ @GET
+ public String throwEjbException()
+ {
+ throw new EJBException(new MyException());
+ }
+}
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/WEB-INF/web.xml (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/WEB-INF/web.xml 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,4 @@
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+</web-app>
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/index.jsp
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/index.jsp (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/main/webapp/index.jsp 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/jboss/resteasy/test/jboss/EjbTest.java
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/jboss/resteasy/test/jboss/EjbTest.java (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/test/java/org/jboss/resteasy/test/jboss/EjbTest.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,38 @@
+package org.jboss.resteasy.test.jboss;
+
+import org.jboss.resteasy.client.ClientRequest;
+import org.jboss.resteasy.client.ClientResponse;
+import org.junit.Test;
+import org.junit.Assert;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class EjbTest
+{
+ @Test
+ public void testIt() throws Exception
+ {
+ ClientRequest request = new ClientRequest("http://localhost:8080/ejb-test/prefixed/scan");
+ ClientResponse<String> response = request.get(String.class);
+ Assert.assertEquals(200, response.getStatus());
+ Assert.assertEquals("hello world", response.getEntity());
+
+ }
+
+ @Test
+ public void testException() throws Exception
+ {
+ ClientRequest request = new ClientRequest("http://localhost:8080/ejb-test/prefixed/scan/exception");
+ ClientResponse<String> response = request.get(String.class);
+ Assert.assertEquals(412, response.getStatus());
+
+ request = new ClientRequest("http://localhost:8080/ejb-test/prefixed/scan/custom-exception");
+ response = request.get(String.class);
+ Assert.assertEquals(412, response.getStatus());
+
+ request = new ClientRequest("http://localhost:8080/ejb-test/prefixed/scan/ejb-exception");
+ response = request.get(String.class);
+ Assert.assertEquals(412, response.getStatus());
+ }}
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/jndi.properties
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/jndi.properties (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/jndi.properties 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,3 @@
+java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
+java.naming.provider.url=jnp://localhost:1099
\ No newline at end of file
Added: trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/log4j.xml
===================================================================
--- trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/log4j.xml (rev 0)
+++ trunk/resteasy-int/test/application-scanned-ejb-war/src/test/resources/log4j.xml 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!-- -->
+<!-- Log4j Configuration -->
+<!-- -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml 64736 2007-08-21 15:49:48Z anil.saldhana at jboss.com $ -->
+
+<!--
+ | For more configuration infromation and examples see the Jakarta Log4j
+ | owebsite: http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+ <!-- ================================= -->
+ <!-- Preserve messages in a local file -->
+ <!-- ================================= -->
+
+ <!-- A time/date based rolling appender -->
+ <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
+ <param name="File" value="${build.testlog}/test.log"/>
+ <param name="Append" value="true"/>
+
+ <!-- Rollover at midnight each day -->
+ <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+
+ <!-- Rollover at the top of each hour
+ <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
+ -->
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
+
+ <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
+ <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
+ -->
+ </layout>
+ </appender>
+
+ <!-- ============================== -->
+ <!-- Append messages to the console -->
+ <!-- ============================== -->
+
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <param name="Threshold" value="DEBUG"/>
+ <param name="Target" value="System.out"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
+ </layout>
+ </appender>
+
+
+ <!-- ======================= -->
+ <!-- Setup the Root category -->
+ <!-- ======================= -->
+
+ <root>
+ <appender-ref ref="CONSOLE"/>
+ </root>
+
+</log4j:configuration>
Added: trunk/resteasy-int/test/application-uses-scanning/pom.xml
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/pom.xml (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/pom.xml 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,90 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-parent</artifactId>
+ <version>6.0.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.jbossas.resteasy.test</groupId>
+ <artifactId>application-uses-scanning</artifactId>
+ <packaging>war</packaging>
+ <name>Basic Integration Test</name>
+ <url>http://maven.apache.org</url>
+ <build>
+ <finalName>scanned-test</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jboss-maven-plugin</artifactId>
+ <version>1.3.1</version>
+ <configuration>
+ <jbossHome>${jboss.home}</jbossHome>
+ </configuration>
+ <executions>
+ <execution>
+ <id>jboss-deploy</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>deploy</goal>
+ </goals>
+ <configuration>
+ <fileName>${basedir}/target/scanned-test.war</fileName>
+ </configuration>
+ </execution>
+ <execution>
+ <id>jboss-undeploy</id>
+ <phase>post-integration-test</phase>
+ <goals>
+ <goal>undeploy</goal>
+ </goals>
+ <configuration>
+ <fileName>${basedir}/target/scanned-test.war</fileName>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ <executions>
+ <execution>
+ <id>surefire-it</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-jaxrs</artifactId>
+ <version>${version.org.jboss.resteasy}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/AppConfig.java
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/AppConfig.java (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/AppConfig.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,13 @@
+package org.jboss.resteasy.test;
+
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at ApplicationPath("prefixed")
+public class AppConfig extends Application
+{
+}
Added: trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyContextResolver.java
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyContextResolver.java (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyContextResolver.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,17 @@
+package org.jboss.resteasy.test;
+
+import javax.ws.rs.ext.ContextResolver;
+import javax.ws.rs.ext.Provider;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Provider
+public class MyContextResolver implements ContextResolver<Integer>
+{
+ public Integer getContext(Class<?> type)
+ {
+ return new Integer(42);
+ }
+}
Added: trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyIntf.java
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyIntf.java (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyIntf.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,24 @@
+package org.jboss.resteasy.test;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.ext.Providers;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Path("/scan-intf")
+public interface MyIntf
+{
+ @GET
+ @Produces("text/plain")
+ String get();
+
+ @Path("resolver")
+ @GET
+ @Produces("text/plain")
+ String getResolver(@Context Providers providers);
+}
Added: trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyIntfResource.java
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyIntfResource.java (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyIntfResource.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,27 @@
+package org.jboss.resteasy.test;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.ext.Providers;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class MyIntfResource implements MyIntf
+{
+ public String get()
+ {
+ return "hello world";
+ }
+
+ public String getResolver(@Context Providers providers)
+ {
+ System.out.println("IN RESOLVER!!!");
+ MyContextResolver resolver = (MyContextResolver) providers.getContextResolver(Integer.class, MediaType.TEXT_PLAIN_TYPE);
+ return resolver.getContext(null).toString();
+ }
+}
\ No newline at end of file
Added: trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyResource.java
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyResource.java (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/main/java/org/jboss/resteasy/test/MyResource.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,33 @@
+package org.jboss.resteasy.test;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.ext.Providers;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Path("/scan")
+public class MyResource
+{
+ @GET
+ @Produces("text/plain")
+ public String get()
+ {
+ return "hello world";
+ }
+
+ @Path("resolver")
+ @GET
+ @Produces("text/plain")
+ public String getResolver(@Context Providers providers)
+ {
+ System.out.println("IN RESOLVER!!!");
+ MyContextResolver resolver = (MyContextResolver) providers.getContextResolver(Integer.class, MediaType.TEXT_PLAIN_TYPE);
+ return resolver.getContext(null).toString();
+ }
+}
Added: trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/WEB-INF/web.xml (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/WEB-INF/web.xml 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,4 @@
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+</web-app>
Added: trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/index.jsp
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/index.jsp (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/main/webapp/index.jsp 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>
Added: trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/jboss/resteasy/test/jboss/ScanningTest.java
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/jboss/resteasy/test/jboss/ScanningTest.java (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/test/java/org/jboss/resteasy/test/jboss/ScanningTest.java 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,50 @@
+package org.jboss.resteasy.test.jboss;
+
+import org.jboss.resteasy.client.ClientRequest;
+import org.jboss.resteasy.client.ClientResponse;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class ScanningTest
+{
+ @Test
+ public void testIt() throws Exception
+ {
+ ClientRequest request = new ClientRequest("http://localhost:8080/scanned-test/prefixed/scan");
+ ClientResponse<String> response = request.get(String.class);
+ Assert.assertEquals(200, response.getStatus());
+ Assert.assertEquals("hello world", response.getEntity());
+
+ }
+
+ @Test
+ public void testScannedContextResolver() throws Exception
+ {
+ ClientRequest request = new ClientRequest("http://localhost:8080/scanned-test/prefixed/scan/resolver");
+ String res = request.getTarget(String.class);
+ Assert.assertEquals(res, "42");
+ }
+
+
+ @Test
+ public void testItIntf() throws Exception
+ {
+ ClientRequest request = new ClientRequest("http://localhost:8080/scanned-test/prefixed/scan-intf");
+ ClientResponse<String> response = request.get(String.class);
+ Assert.assertEquals(200, response.getStatus());
+ Assert.assertEquals("hello world", response.getEntity());
+
+ }
+
+ @Test
+ public void testScannedContextResolverIntf() throws Exception
+ {
+ ClientRequest request = new ClientRequest("http://localhost:8080/scanned-test/prefixed/scan-intf/resolver");
+ String res = request.getTarget(String.class);
+ Assert.assertEquals(res, "42");
+ }
+}
Added: trunk/resteasy-int/test/application-uses-scanning/src/test/resources/jndi.properties
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/test/resources/jndi.properties (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/test/resources/jndi.properties 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,3 @@
+java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
+java.naming.provider.url=jnp://localhost:1099
\ No newline at end of file
Added: trunk/resteasy-int/test/application-uses-scanning/src/test/resources/log4j.xml
===================================================================
--- trunk/resteasy-int/test/application-uses-scanning/src/test/resources/log4j.xml (rev 0)
+++ trunk/resteasy-int/test/application-uses-scanning/src/test/resources/log4j.xml 2010-11-10 18:48:56 UTC (rev 109242)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!-- -->
+<!-- Log4j Configuration -->
+<!-- -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml 64736 2007-08-21 15:49:48Z anil.saldhana at jboss.com $ -->
+
+<!--
+ | For more configuration infromation and examples see the Jakarta Log4j
+ | owebsite: http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+ <!-- ================================= -->
+ <!-- Preserve messages in a local file -->
+ <!-- ================================= -->
+
+ <!-- A time/date based rolling appender -->
+ <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
+ <param name="File" value="${build.testlog}/test.log"/>
+ <param name="Append" value="true"/>
+
+ <!-- Rollover at midnight each day -->
+ <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+
+ <!-- Rollover at the top of each hour
+ <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
+ -->
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
+
+ <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
+ <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
+ -->
+ </layout>
+ </appender>
+
+ <!-- ============================== -->
+ <!-- Append messages to the console -->
+ <!-- ============================== -->
+
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <param name="Threshold" value="DEBUG"/>
+ <param name="Target" value="System.out"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
+ </layout>
+ </appender>
+
+
+ <!-- ======================= -->
+ <!-- Setup the Root category -->
+ <!-- ======================= -->
+
+ <root>
+ <appender-ref ref="CONSOLE"/>
+ </root>
+
+</log4j:configuration>
Modified: trunk/resteasy-int/test/pom.xml
===================================================================
--- trunk/resteasy-int/test/pom.xml 2010-11-10 18:32:44 UTC (rev 109241)
+++ trunk/resteasy-int/test/pom.xml 2010-11-10 18:48:56 UTC (rev 109242)
@@ -15,6 +15,8 @@
<modules>
<module>application-war</module>
<module>application-scanned-war</module>
+ <module>application-scanned-ejb-war</module>
+ <module>application-uses-scanning</module>
<module>scanned-war</module>
<module>ejb-war</module>
<module>ejb-jar-war</module>
More information about the jboss-cvs-commits
mailing list