Search in sources :

Example 1 with ApplicationExceptionMetaData

use of org.jboss.metadata.ejb.spec.ApplicationExceptionMetaData in project wildfly by wildfly.

the class ApplicationExceptionMergingProcessor method deploy.

@Override
public void deploy(final DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException {
    final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit();
    if (!EjbDeploymentMarker.isEjbDeployment(deploymentUnit)) {
        return;
    }
    final List<DeploymentUnit> accessibleSubDeployments = deploymentUnit.getAttachment(Attachments.ACCESSIBLE_SUB_DEPLOYMENTS);
    final Module module = deploymentUnit.getAttachment(Attachments.MODULE);
    final ApplicationExceptions applicationExceptions = new ApplicationExceptions();
    for (DeploymentUnit unit : accessibleSubDeployments) {
        // we want to get the details for classes from all sub deployments we have access to
        final ApplicationExceptionDescriptions exceptionDescriptions = unit.getAttachment(EjbDeploymentAttachmentKeys.APPLICATION_EXCEPTION_DESCRIPTIONS);
        if (exceptionDescriptions != null) {
            for (Map.Entry<String, org.jboss.as.ejb3.tx.ApplicationExceptionDetails> exception : exceptionDescriptions.getApplicationExceptions().entrySet()) {
                try {
                    final Class<?> index = ClassLoadingUtils.loadClass(exception.getKey(), module);
                    applicationExceptions.addApplicationException(index, exception.getValue());
                } catch (ClassNotFoundException e) {
                    ROOT_LOGGER.debug("Could not load application exception class", e);
                }
            }
        }
    }
    // now add the exceptions from the assembly descriptor
    EjbJarMetaData ejbJarMetaData = deploymentUnit.getAttachment(EjbDeploymentAttachmentKeys.EJB_JAR_METADATA);
    if (ejbJarMetaData != null) {
        // process assembly-descriptor stuff
        AssemblyDescriptorMetaData assemblyDescriptor = ejbJarMetaData.getAssemblyDescriptor();
        if (assemblyDescriptor != null) {
            // process application-exception(s)
            ApplicationExceptionsMetaData ddAppExceptions = assemblyDescriptor.getApplicationExceptions();
            if (ddAppExceptions != null && !ddAppExceptions.isEmpty()) {
                for (ApplicationExceptionMetaData applicationException : ddAppExceptions) {
                    String exceptionClassName = applicationException.getExceptionClass();
                    try {
                        final Class<?> index = ClassLoadingUtils.loadClass(exceptionClassName, module);
                        boolean rollback = applicationException.isRollback();
                        // by default inherited is true
                        boolean inherited = applicationException.isInherited() == null ? true : applicationException.isInherited();
                        // add the application exception to the ejb jar description
                        applicationExceptions.addApplicationException(index, new ApplicationExceptionDetails(exceptionClassName, inherited, rollback));
                    } catch (ClassNotFoundException e) {
                        throw EjbLogger.ROOT_LOGGER.failToLoadAppExceptionClassInEjbJarXml(exceptionClassName, e);
                    }
                }
            }
        }
    }
    deploymentUnit.putAttachment(EjbDeploymentAttachmentKeys.APPLICATION_EXCEPTION_DETAILS, applicationExceptions);
}
Also used : ApplicationExceptions(org.jboss.as.ejb3.deployment.ApplicationExceptions) ApplicationExceptionDetails(org.jboss.as.ejb3.tx.ApplicationExceptionDetails) EjbJarMetaData(org.jboss.metadata.ejb.spec.EjbJarMetaData) ApplicationExceptionDescriptions(org.jboss.as.ejb3.deployment.ApplicationExceptionDescriptions) ApplicationExceptionsMetaData(org.jboss.metadata.ejb.spec.ApplicationExceptionsMetaData) AssemblyDescriptorMetaData(org.jboss.metadata.ejb.spec.AssemblyDescriptorMetaData) ApplicationExceptionMetaData(org.jboss.metadata.ejb.spec.ApplicationExceptionMetaData) Module(org.jboss.modules.Module) DeploymentUnit(org.jboss.as.server.deployment.DeploymentUnit) Map(java.util.Map)

Aggregations

Map (java.util.Map)1 ApplicationExceptionDescriptions (org.jboss.as.ejb3.deployment.ApplicationExceptionDescriptions)1 ApplicationExceptions (org.jboss.as.ejb3.deployment.ApplicationExceptions)1 ApplicationExceptionDetails (org.jboss.as.ejb3.tx.ApplicationExceptionDetails)1 DeploymentUnit (org.jboss.as.server.deployment.DeploymentUnit)1 ApplicationExceptionMetaData (org.jboss.metadata.ejb.spec.ApplicationExceptionMetaData)1 ApplicationExceptionsMetaData (org.jboss.metadata.ejb.spec.ApplicationExceptionsMetaData)1 AssemblyDescriptorMetaData (org.jboss.metadata.ejb.spec.AssemblyDescriptorMetaData)1 EjbJarMetaData (org.jboss.metadata.ejb.spec.EjbJarMetaData)1 Module (org.jboss.modules.Module)1