Search in sources :

Example 1 with InterceptorBinding$JAXB.readInterceptorBinding

use of org.apache.openejb.jee.InterceptorBinding$JAXB.readInterceptorBinding in project tomee by apache.

the class AssemblyDescriptor$JAXB method _read.

public static final AssemblyDescriptor _read(final XoXMLStreamReader reader, RuntimeContext context) throws Exception {
    // Check for xsi:nil
    if (reader.isXsiNil()) {
        return null;
    }
    if (context == null) {
        context = new RuntimeContext();
    }
    final AssemblyDescriptor assemblyDescriptor = new AssemblyDescriptor();
    context.beforeUnmarshal(assemblyDescriptor, LifecycleCallback.NONE);
    List<SecurityRole> securityRole = null;
    List<MethodPermission> methodPermission = null;
    List<ContainerTransaction> containerTransaction = null;
    List<ContainerConcurrency> containerConcurrency = null;
    List<InterceptorBinding> interceptorBinding = null;
    List<MessageDestination> messageDestination = null;
    KeyedCollection<String, ApplicationException> applicationException = null;
    // Check xsi:type
    final QName xsiType = reader.getXsiType();
    if (xsiType != null) {
        if (("assembly-descriptorType" != xsiType.getLocalPart()) || ("http://java.sun.com/xml/ns/javaee" != xsiType.getNamespaceURI())) {
            return context.unexpectedXsiType(reader, AssemblyDescriptor.class);
        }
    }
    // Read attributes
    for (final Attribute attribute : reader.getAttributes()) {
        if (("id" == attribute.getLocalName()) && (("" == attribute.getNamespace()) || (attribute.getNamespace() == null))) {
            // ATTRIBUTE: id
            final String id = Adapters.collapsedStringAdapterAdapter.unmarshal(attribute.getValue());
            context.addXmlId(reader, id, assemblyDescriptor);
            assemblyDescriptor.id = id;
        } else if (XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI != attribute.getNamespace()) {
            context.unexpectedAttribute(attribute, new QName("", "id"));
        }
    }
    // Read elements
    for (final XoXMLStreamReader elementReader : reader.getChildElements()) {
        if (("security-role" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: securityRole
            final SecurityRole securityRoleItem = readSecurityRole(elementReader, context);
            if (securityRole == null) {
                securityRole = assemblyDescriptor.securityRole;
                if (securityRole != null) {
                    securityRole.clear();
                } else {
                    securityRole = new ArrayList<SecurityRole>();
                }
            }
            securityRole.add(securityRoleItem);
        } else if (("method-permission" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: methodPermission
            final MethodPermission methodPermissionItem = readMethodPermission(elementReader, context);
            if (methodPermission == null) {
                methodPermission = assemblyDescriptor.methodPermission;
                if (methodPermission != null) {
                    methodPermission.clear();
                } else {
                    methodPermission = new ArrayList<MethodPermission>();
                }
            }
            methodPermission.add(methodPermissionItem);
        } else if (("container-transaction" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: containerTransaction
            final ContainerTransaction containerTransactionItem = readContainerTransaction(elementReader, context);
            if (containerTransaction == null) {
                containerTransaction = assemblyDescriptor.containerTransaction;
                if (containerTransaction != null) {
                    containerTransaction.clear();
                } else {
                    containerTransaction = new ArrayList<ContainerTransaction>();
                }
            }
            containerTransaction.add(containerTransactionItem);
        } else if (("container-concurrency" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: containerConcurrency
            final ContainerConcurrency containerConcurrencyItem = readContainerConcurrency(elementReader, context);
            if (containerConcurrency == null) {
                containerConcurrency = assemblyDescriptor.containerConcurrency;
                if (containerConcurrency != null) {
                    containerConcurrency.clear();
                } else {
                    containerConcurrency = new ArrayList<ContainerConcurrency>();
                }
            }
            containerConcurrency.add(containerConcurrencyItem);
        } else if (("interceptor-binding" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: interceptorBinding
            final InterceptorBinding interceptorBindingItem = readInterceptorBinding(elementReader, context);
            if (interceptorBinding == null) {
                interceptorBinding = assemblyDescriptor.interceptorBinding;
                if (interceptorBinding != null) {
                    interceptorBinding.clear();
                } else {
                    interceptorBinding = new ArrayList<InterceptorBinding>();
                }
            }
            interceptorBinding.add(interceptorBindingItem);
        } else if (("message-destination" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: messageDestination
            final MessageDestination messageDestinationItem = readMessageDestination(elementReader, context);
            if (messageDestination == null) {
                messageDestination = assemblyDescriptor.messageDestination;
                if (messageDestination != null) {
                    messageDestination.clear();
                } else {
                    messageDestination = new ArrayList<MessageDestination>();
                }
            }
            messageDestination.add(messageDestinationItem);
        } else if (("exclude-list" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: excludeList
            final ExcludeList excludeList = readExcludeList(elementReader, context);
            assemblyDescriptor.excludeList = excludeList;
        } else if (("application-exception" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: applicationException
            final ApplicationException applicationExceptionItem = readApplicationException(elementReader, context);
            if (applicationException == null) {
                applicationException = assemblyDescriptor.applicationException;
                if (applicationException != null) {
                    applicationException.clear();
                } else {
                    applicationException = new KeyedCollection<String, ApplicationException>();
                }
            }
            applicationException.add(applicationExceptionItem);
        } else {
            context.unexpectedElement(elementReader, new QName("http://java.sun.com/xml/ns/javaee", "security-role"), new QName("http://java.sun.com/xml/ns/javaee", "method-permission"), new QName("http://java.sun.com/xml/ns/javaee", "container-transaction"), new QName("http://java.sun.com/xml/ns/javaee", "container-concurrency"), new QName("http://java.sun.com/xml/ns/javaee", "interceptor-binding"), new QName("http://java.sun.com/xml/ns/javaee", "message-destination"), new QName("http://java.sun.com/xml/ns/javaee", "exclude-list"), new QName("http://java.sun.com/xml/ns/javaee", "application-exception"));
        }
    }
    if (securityRole != null) {
        assemblyDescriptor.securityRole = securityRole;
    }
    if (methodPermission != null) {
        assemblyDescriptor.methodPermission = methodPermission;
    }
    if (containerTransaction != null) {
        assemblyDescriptor.containerTransaction = containerTransaction;
    }
    if (containerConcurrency != null) {
        assemblyDescriptor.containerConcurrency = containerConcurrency;
    }
    if (interceptorBinding != null) {
        assemblyDescriptor.interceptorBinding = interceptorBinding;
    }
    if (messageDestination != null) {
        assemblyDescriptor.messageDestination = messageDestination;
    }
    if (applicationException != null) {
        assemblyDescriptor.applicationException = applicationException;
    }
    context.afterUnmarshal(assemblyDescriptor, LifecycleCallback.NONE);
    return assemblyDescriptor;
}
Also used : SecurityRole$JAXB.readSecurityRole(org.apache.openejb.jee.SecurityRole$JAXB.readSecurityRole) SecurityRole$JAXB.writeSecurityRole(org.apache.openejb.jee.SecurityRole$JAXB.writeSecurityRole) Attribute(org.metatype.sxc.util.Attribute) ArrayList(java.util.ArrayList) MethodPermission$JAXB.readMethodPermission(org.apache.openejb.jee.MethodPermission$JAXB.readMethodPermission) MethodPermission$JAXB.writeMethodPermission(org.apache.openejb.jee.MethodPermission$JAXB.writeMethodPermission) InterceptorBinding$JAXB.writeInterceptorBinding(org.apache.openejb.jee.InterceptorBinding$JAXB.writeInterceptorBinding) InterceptorBinding$JAXB.readInterceptorBinding(org.apache.openejb.jee.InterceptorBinding$JAXB.readInterceptorBinding) ContainerConcurrency$JAXB.writeContainerConcurrency(org.apache.openejb.jee.ContainerConcurrency$JAXB.writeContainerConcurrency) ContainerConcurrency$JAXB.readContainerConcurrency(org.apache.openejb.jee.ContainerConcurrency$JAXB.readContainerConcurrency) XoXMLStreamReader(org.metatype.sxc.util.XoXMLStreamReader) ExcludeList$JAXB.writeExcludeList(org.apache.openejb.jee.ExcludeList$JAXB.writeExcludeList) ExcludeList$JAXB.readExcludeList(org.apache.openejb.jee.ExcludeList$JAXB.readExcludeList) MessageDestination$JAXB.readMessageDestination(org.apache.openejb.jee.MessageDestination$JAXB.readMessageDestination) MessageDestination$JAXB.writeMessageDestination(org.apache.openejb.jee.MessageDestination$JAXB.writeMessageDestination) QName(javax.xml.namespace.QName) ApplicationException$JAXB.readApplicationException(org.apache.openejb.jee.ApplicationException$JAXB.readApplicationException) ApplicationException$JAXB.writeApplicationException(org.apache.openejb.jee.ApplicationException$JAXB.writeApplicationException) ContainerTransaction$JAXB.writeContainerTransaction(org.apache.openejb.jee.ContainerTransaction$JAXB.writeContainerTransaction) ContainerTransaction$JAXB.readContainerTransaction(org.apache.openejb.jee.ContainerTransaction$JAXB.readContainerTransaction) RuntimeContext(org.metatype.sxc.jaxb.RuntimeContext)

Example 2 with InterceptorBinding$JAXB.readInterceptorBinding

use of org.apache.openejb.jee.InterceptorBinding$JAXB.readInterceptorBinding in project tomee by apache.

the class EjbJarInfoBuilder method initInterceptors.

private void initInterceptors(final EjbModule jar, final EjbJarInfo ejbJar) throws OpenEJBException {
    if (jar.getEjbJar().getInterceptors().length == 0) {
        return;
    }
    if (jar.getEjbJar().getAssemblyDescriptor() == null) {
        return;
    }
    if (jar.getEjbJar().getAssemblyDescriptor().getInterceptorBinding() == null) {
        return;
    }
    for (final Interceptor s : jar.getEjbJar().getInterceptors()) {
        final InterceptorInfo info = new InterceptorInfo();
        info.clazz = s.getInterceptorClass();
        copyCallbacks(s.getAroundInvoke(), info.aroundInvoke);
        copyCallbacks(s.getPostConstruct(), info.postConstruct);
        copyCallbacks(s.getPreDestroy(), info.preDestroy);
        copyCallbacks(s.getPostActivate(), info.postActivate);
        copyCallbacks(s.getPrePassivate(), info.prePassivate);
        copyCallbacks(s.getAfterBegin(), info.afterBegin);
        copyCallbacks(s.getBeforeCompletion(), info.beforeCompletion);
        copyCallbacks(s.getAfterCompletion(), info.afterCompletion);
        copyCallbacks(s.getAroundTimeout(), info.aroundTimeout);
        ejbJar.interceptors.add(info);
    }
    for (final InterceptorBinding binding : jar.getEjbJar().getAssemblyDescriptor().getInterceptorBinding()) {
        final InterceptorBindingInfo info = new InterceptorBindingInfo();
        info.ejbName = binding.getEjbName();
        info.excludeClassInterceptors = binding.getExcludeClassInterceptors();
        info.excludeDefaultInterceptors = binding.getExcludeDefaultInterceptors();
        info.interceptors.addAll(binding.getInterceptorClass());
        if (binding.getInterceptorOrder() != null) {
            info.interceptorOrder.addAll(binding.getInterceptorOrder().getInterceptorClass());
        }
        info.method = toInfo(binding.getMethod());
        info.className = binding.getClassName();
        ejbJar.interceptorBindings.add(info);
    }
}
Also used : InterceptorBinding(org.apache.openejb.jee.InterceptorBinding) InterceptorBindingInfo(org.apache.openejb.assembler.classic.InterceptorBindingInfo) InterceptorInfo(org.apache.openejb.assembler.classic.InterceptorInfo) Interceptor(org.apache.openejb.jee.Interceptor)

Example 3 with InterceptorBinding$JAXB.readInterceptorBinding

use of org.apache.openejb.jee.InterceptorBinding$JAXB.readInterceptorBinding in project tomee by apache.

the class DebuggableVmHackery method deploy.

public AppModule deploy(final AppModule appModule) throws OpenEJBException {
    for (final EjbModule ejbModule : appModule.getEjbModules()) {
        final EjbJar ejbJar = ejbModule.getEjbJar();
        final OpenejbJar openejbJar = ejbModule.getOpenejbJar();
        final Map<String, EjbDeployment> deployments = openejbJar.getDeploymentsByEjbName();
        ejbJar.setRelationships(null);
        final List<String> removed = new ArrayList<String>();
        for (final EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
            final String ejbName = bean.getEjbName();
            final EjbDeployment ejbDeployment = deployments.get(ejbName);
            pruneRefs(bean, ejbDeployment);
            //                }
            if (!(bean instanceof MessageDrivenBean) && !(bean instanceof EntityBean)) {
                continue;
            }
            ejbJar.removeEnterpriseBean(ejbName);
            openejbJar.removeEjbDeployment(ejbDeployment);
            removed.add(ejbName);
            final AssemblyDescriptor assemblyDescriptor = ejbJar.getAssemblyDescriptor();
            if (assemblyDescriptor != null) {
                for (final MethodPermission permission : copy(assemblyDescriptor.getMethodPermission())) {
                    for (final Method method : copy(permission.getMethod())) {
                        if (method.getEjbName().equals(ejbName)) {
                            permission.getMethod().remove(method);
                        }
                    }
                    if (permission.getMethod().size() == 0) {
                        assemblyDescriptor.getMethodPermission().remove(permission);
                    }
                }
                for (final ContainerTransaction transaction : copy(assemblyDescriptor.getContainerTransaction())) {
                    for (final Method method : copy(transaction.getMethod())) {
                        if (method.getEjbName().equals(ejbName)) {
                            transaction.getMethod().remove(method);
                        }
                    }
                    if (transaction.getMethod().size() == 0) {
                        assemblyDescriptor.getContainerTransaction().remove(transaction);
                    }
                }
                for (final InterceptorBinding binding : copy(assemblyDescriptor.getInterceptorBinding())) {
                    if (binding.getEjbName().equals(ejbName)) {
                        assemblyDescriptor.getInterceptorBinding().remove(binding);
                    }
                }
            }
        }
        // Drop any ejb ref to with an ejb-link to a removed ejb
        for (final EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
            bean.getEjbLocalRefMap().keySet().removeAll(removed);
            bean.getEjbRefMap().keySet().removeAll(removed);
        }
        for (final Interceptor interceptor : ejbJar.getInterceptors()) {
            pruneRefs(interceptor, new EjbDeployment());
        }
    }
    return appModule;
}
Also used : EnterpriseBean(org.apache.openejb.jee.EnterpriseBean) ArrayList(java.util.ArrayList) Method(org.apache.openejb.jee.Method) MethodPermission(org.apache.openejb.jee.MethodPermission) InterceptorBinding(org.apache.openejb.jee.InterceptorBinding) OpenejbJar(org.apache.openejb.jee.oejb3.OpenejbJar) MessageDrivenBean(org.apache.openejb.jee.MessageDrivenBean) ContainerTransaction(org.apache.openejb.jee.ContainerTransaction) EntityBean(org.apache.openejb.jee.EntityBean) EjbDeployment(org.apache.openejb.jee.oejb3.EjbDeployment) AssemblyDescriptor(org.apache.openejb.jee.AssemblyDescriptor) Interceptor(org.apache.openejb.jee.Interceptor) EjbJar(org.apache.openejb.jee.EjbJar)

Example 4 with InterceptorBinding$JAXB.readInterceptorBinding

use of org.apache.openejb.jee.InterceptorBinding$JAXB.readInterceptorBinding in project tomee by apache.

the class FullyInterceptedTest method module.

@Module
public EjbJar module() {
    final EjbJar ejbJar = new EjbJar();
    final StatelessBean bean = ejbJar.addEnterpriseBean(new StatelessBean(FullyInterceptedBean.class));
    final AssemblyDescriptor assembly = ejbJar.getAssemblyDescriptor();
    assembly.addInterceptorBinding(new InterceptorBinding("*", new Interceptor(DefaultInterceptorOne.class)));
    assembly.addInterceptorBinding(new InterceptorBinding("*", new Interceptor(DefaultInterceptorTwo.class)));
    final InterceptorBinding b = assembly.addInterceptorBinding(new InterceptorBinding(bean));
    b.setExcludeDefaultInterceptors(true);
    b.setMethod(new NamedMethod("methodWithDefaultInterceptorsExcluded"));
    return ejbJar;
}
Also used : InterceptorBinding(org.apache.openejb.jee.InterceptorBinding) StatelessBean(org.apache.openejb.jee.StatelessBean) AssemblyDescriptor(org.apache.openejb.jee.AssemblyDescriptor) NamedMethod(org.apache.openejb.jee.NamedMethod) Interceptor(org.apache.openejb.jee.Interceptor) EjbJar(org.apache.openejb.jee.EjbJar) Module(org.apache.openejb.testing.Module)

Example 5 with InterceptorBinding$JAXB.readInterceptorBinding

use of org.apache.openejb.jee.InterceptorBinding$JAXB.readInterceptorBinding in project tomee by apache.

the class MethodLevelInterceptorOnlyTest method module.

@Module
public EjbJar module() {
    final EjbJar ejbJar = new EjbJar();
    final StatelessBean bean = ejbJar.addEnterpriseBean(new StatelessBean(MethodLevelInterceptorOnlySLSBean.class));
    final AssemblyDescriptor assembly = ejbJar.getAssemblyDescriptor();
    assembly.addInterceptorBinding(new InterceptorBinding("*", new Interceptor(DefaultInterceptorOne.class)));
    assembly.addInterceptorBinding(new InterceptorBinding("*", new Interceptor(DefaultInterceptorTwo.class)));
    assembly.addInterceptorBinding(new InterceptorBinding(bean)).setExcludeDefaultInterceptors(true);
    return ejbJar;
}
Also used : InterceptorBinding(org.apache.openejb.jee.InterceptorBinding) StatelessBean(org.apache.openejb.jee.StatelessBean) AssemblyDescriptor(org.apache.openejb.jee.AssemblyDescriptor) Interceptor(org.apache.openejb.jee.Interceptor) EjbJar(org.apache.openejb.jee.EjbJar) Module(org.apache.openejb.testing.Module)

Aggregations

InterceptorBinding (org.apache.openejb.jee.InterceptorBinding)17 Interceptor (org.apache.openejb.jee.Interceptor)15 EjbJar (org.apache.openejb.jee.EjbJar)14 AssemblyDescriptor (org.apache.openejb.jee.AssemblyDescriptor)12 StatelessBean (org.apache.openejb.jee.StatelessBean)9 EnterpriseBean (org.apache.openejb.jee.EnterpriseBean)5 NamedMethod (org.apache.openejb.jee.NamedMethod)5 ContainerTransaction (org.apache.openejb.jee.ContainerTransaction)4 ArrayList (java.util.ArrayList)3 ConfigurationFactory (org.apache.openejb.config.ConfigurationFactory)3 Method (org.apache.openejb.jee.Method)3 MethodPermission (org.apache.openejb.jee.MethodPermission)3 Module (org.apache.openejb.testing.Module)3 InitialContext (javax.naming.InitialContext)2 Assembler (org.apache.openejb.assembler.classic.Assembler)2 EjbJarInfo (org.apache.openejb.assembler.classic.EjbJarInfo)2 ProxyFactoryInfo (org.apache.openejb.assembler.classic.ProxyFactoryInfo)2 SecurityServiceInfo (org.apache.openejb.assembler.classic.SecurityServiceInfo)2 TransactionServiceInfo (org.apache.openejb.assembler.classic.TransactionServiceInfo)2 EjbModule (org.apache.openejb.config.EjbModule)2