Search in sources :

Example 1 with InterceptorBindingInfo

use of org.apache.openejb.assembler.classic.InterceptorBindingInfo 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 2 with InterceptorBindingInfo

use of org.apache.openejb.assembler.classic.InterceptorBindingInfo in project tomee by apache.

the class SystemAppInfo method preComputedInfo.

//
//
// DONT MODIFY IT WITHOUT UPDATING org.apache.openejb.config.SystemApps
//
//
public static AppInfo preComputedInfo(final ConfigurationFactory factory) {
    final String singletonContainerId;
    try {
        singletonContainerId = findSingletonContainer(factory);
    } catch (final OpenEJBException e) {
        throw new IllegalStateException(e);
    }
    final EjbJarInfo ejbJarInfo = new EjbJarInfo();
    ejbJarInfo.moduleId = "openejb";
    ejbJarInfo.moduleName = ejbJarInfo.moduleId;
    ejbJarInfo.moduleUri = URI.create(ejbJarInfo.moduleId);
    ejbJarInfo.properties.setProperty("openejb.deploymentId.format", "{ejbName}");
    ejbJarInfo.properties.setProperty("openejb.jndiname.format", "{deploymentId}{interfaceType.openejbLegacyName}");
    final SingletonBeanInfo deployer = new SingletonBeanInfo();
    deployer.ejbDeploymentId = "openejb/Deployer";
    deployer.ejbName = deployer.ejbDeploymentId;
    deployer.ejbClass = "org.apache.openejb.assembler.DeployerEjb";
    deployer.businessRemote.add("org.apache.openejb.assembler.Deployer");
    deployer.parents.add(deployer.ejbClass);
    deployer.transactionType = "BEAN";
    deployer.concurrencyType = "CONTAINER";
    deployer.containerId = singletonContainerId;
    ejbJarInfo.enterpriseBeans.add(deployer);
    final SingletonBeanInfo configuration = new SingletonBeanInfo();
    configuration.ejbDeploymentId = "openejb/ConfigurationInfo";
    configuration.ejbName = deployer.ejbDeploymentId;
    configuration.ejbClass = "org.apache.openejb.assembler.classic.cmd.ConfigurationInfoEjb";
    configuration.businessRemote.add("org.apache.openejb.assembler.classic.cmd.ConfigurationInfo");
    configuration.parents.add(deployer.ejbClass);
    configuration.transactionType = "CONTAINER";
    configuration.concurrencyType = "CONTAINER";
    configuration.containerId = singletonContainerId;
    ejbJarInfo.enterpriseBeans.add(configuration);
    final SingletonBeanInfo mejb = new SingletonBeanInfo();
    mejb.ejbDeploymentId = "MEJB";
    mejb.ejbName = deployer.ejbDeploymentId;
    mejb.ejbClass = "org.apache.openejb.mgmt.MEJBBean";
    mejb.home = "javax.management.j2ee.ManagementHome";
    mejb.remote = "javax.management.j2ee.Management";
    mejb.parents.add(deployer.ejbClass);
    mejb.transactionType = "CONTAINER";
    mejb.concurrencyType = "CONTAINER";
    mejb.containerId = singletonContainerId;
    ejbJarInfo.enterpriseBeans.add(mejb);
    for (final EnterpriseBeanInfo ebi : ejbJarInfo.enterpriseBeans) {
        final MethodInfo methodInfo = new MethodInfo();
        methodInfo.ejbDeploymentId = ebi.ejbDeploymentId;
        methodInfo.ejbName = ebi.ejbName;
        methodInfo.methodName = "*";
        methodInfo.className = ebi.ejbClass;
        final MethodConcurrencyInfo methodConcurrencyInfo = new MethodConcurrencyInfo();
        methodConcurrencyInfo.concurrencyAttribute = "READ";
        methodConcurrencyInfo.methods.add(methodInfo);
        ejbJarInfo.methodConcurrency.add(methodConcurrencyInfo);
    }
    final CallbackInfo callbackInfo = new CallbackInfo();
    callbackInfo.className = "org.apache.openejb.security.internal.InternalSecurityInterceptor";
    callbackInfo.method = "invoke";
    final InterceptorInfo interceptorInfo = new InterceptorInfo();
    interceptorInfo.clazz = "org.apache.openejb.security.internal.InternalSecurityInterceptor";
    interceptorInfo.aroundInvoke.add(callbackInfo);
    ejbJarInfo.interceptors.add(interceptorInfo);
    final InterceptorBindingInfo interceptorBindingInfo = new InterceptorBindingInfo();
    interceptorBindingInfo.ejbName = "*";
    interceptorBindingInfo.interceptors.add("org.apache.openejb.security.internal.InternalSecurityInterceptor");
    ejbJarInfo.interceptorBindings.add(interceptorBindingInfo);
    ejbJarInfo.mbeans.add("org.apache.openejb.assembler.monitoring.JMXDeployer");
    // we start at 1 so no conflict using 0
    ejbJarInfo.uniqueId = "0";
    final AppInfo appInfo = new AppInfo();
    appInfo.appId = ejbJarInfo.moduleId;
    appInfo.path = appInfo.appId;
    appInfo.ejbJars.add(ejbJarInfo);
    return appInfo;
}
Also used : EnterpriseBeanInfo(org.apache.openejb.assembler.classic.EnterpriseBeanInfo) OpenEJBException(org.apache.openejb.OpenEJBException) CallbackInfo(org.apache.openejb.assembler.classic.CallbackInfo) InterceptorBindingInfo(org.apache.openejb.assembler.classic.InterceptorBindingInfo) InterceptorInfo(org.apache.openejb.assembler.classic.InterceptorInfo) MethodInfo(org.apache.openejb.assembler.classic.MethodInfo) SingletonBeanInfo(org.apache.openejb.assembler.classic.SingletonBeanInfo) EjbJarInfo(org.apache.openejb.assembler.classic.EjbJarInfo) MethodConcurrencyInfo(org.apache.openejb.assembler.classic.MethodConcurrencyInfo) AppInfo(org.apache.openejb.assembler.classic.AppInfo)

Aggregations

InterceptorBindingInfo (org.apache.openejb.assembler.classic.InterceptorBindingInfo)2 InterceptorInfo (org.apache.openejb.assembler.classic.InterceptorInfo)2 OpenEJBException (org.apache.openejb.OpenEJBException)1 AppInfo (org.apache.openejb.assembler.classic.AppInfo)1 CallbackInfo (org.apache.openejb.assembler.classic.CallbackInfo)1 EjbJarInfo (org.apache.openejb.assembler.classic.EjbJarInfo)1 EnterpriseBeanInfo (org.apache.openejb.assembler.classic.EnterpriseBeanInfo)1 MethodConcurrencyInfo (org.apache.openejb.assembler.classic.MethodConcurrencyInfo)1 MethodInfo (org.apache.openejb.assembler.classic.MethodInfo)1 SingletonBeanInfo (org.apache.openejb.assembler.classic.SingletonBeanInfo)1 Interceptor (org.apache.openejb.jee.Interceptor)1 InterceptorBinding (org.apache.openejb.jee.InterceptorBinding)1