protected void scanWebDeployment( final DeploymentUnit du, final JBossWebMetaData webdata, final ClassLoader classLoader, final ResteasyDeploymentData resteasyDeploymentData) throws DeploymentUnitProcessingException { // 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(webdata); resteasyDeploymentData.setBootClasses(hasBoot); Class<?> declaredApplicationClass = checkDeclaredApplicationClassAsServlet(webdata, classLoader); // Assume that checkDeclaredApplicationClassAsServlet created the dispatcher if (declaredApplicationClass != null) { resteasyDeploymentData.setDispatcherCreated(true); } // set scanning on only if there are no boot classes if (!hasBoot && !webdata.isMetadataComplete()) { resteasyDeploymentData.setScanAll(true); resteasyDeploymentData.setScanProviders(true); resteasyDeploymentData.setScanResources(true); } // check resteasy configuration flags List<ParamValueMetaData> contextParams = webdata.getContextParams(); if (contextParams != null) { for (ParamValueMetaData param : contextParams) { if (param.getParamName().equals(RESTEASY_SCAN)) { resteasyDeploymentData.setScanAll(valueOf(RESTEASY_SCAN, param.getParamValue())); } else if (param.getParamName().equals(ResteasyContextParameters.RESTEASY_SCAN_PROVIDERS)) { resteasyDeploymentData.setScanProviders( valueOf(RESTEASY_SCAN_PROVIDERS, param.getParamValue())); } else if (param.getParamName().equals(RESTEASY_SCAN_RESOURCES)) { resteasyDeploymentData.setScanResources( valueOf(RESTEASY_SCAN_RESOURCES, param.getParamValue())); } else if (param .getParamName() .equals(ResteasyContextParameters.RESTEASY_UNWRAPPED_EXCEPTIONS)) { resteasyDeploymentData.setUnwrappedExceptionsParameterSet(true); } } } }
@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); if (!JaxrsDeploymentMarker.isJaxrsDeployment(deploymentUnit)) { return; } final DeploymentUnit parent = deploymentUnit.getParent() == null ? deploymentUnit : deploymentUnit.getParent(); final Map<ModuleIdentifier, ResteasyDeploymentData> deploymentData; if (deploymentUnit.getParent() == null) { deploymentData = Collections.synchronizedMap(new HashMap<ModuleIdentifier, ResteasyDeploymentData>()); deploymentUnit.putAttachment( JaxrsAttachments.ADDITIONAL_RESTEASY_DEPLOYMENT_DATA, deploymentData); } else { deploymentData = parent.getAttachment(JaxrsAttachments.ADDITIONAL_RESTEASY_DEPLOYMENT_DATA); } final ModuleIdentifier moduleIdentifier = deploymentUnit.getAttachment(Attachments.MODULE_IDENTIFIER); ResteasyDeploymentData resteasyDeploymentData = new ResteasyDeploymentData(); final WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); final Module module = deploymentUnit.getAttachment(Attachments.MODULE); try { if (warMetaData == null) { resteasyDeploymentData.setScanAll(true); scan(deploymentUnit, module.getClassLoader(), resteasyDeploymentData); deploymentData.put(moduleIdentifier, resteasyDeploymentData); } else { scanWebDeployment( deploymentUnit, warMetaData.getMergedJBossWebMetaData(), module.getClassLoader(), resteasyDeploymentData); scan(deploymentUnit, module.getClassLoader(), resteasyDeploymentData); } deploymentUnit.putAttachment( JaxrsAttachments.RESTEASY_DEPLOYMENT_DATA, resteasyDeploymentData); } catch (ModuleLoadException e) { throw new DeploymentUnitProcessingException(e); } }