Search in sources :

Example 1 with Session

use of org.apache.openejb.jee.Session in project tomee by apache.

the class CheckCallbacks method validate.

public void validate(final EjbModule module) {
    for (final EnterpriseBean bean : module.getEjbJar().getEnterpriseBeans()) {
        Class ejbClass = null;
        try {
            ejbClass = loadClass(bean.getEjbClass());
        } catch (final OpenEJBException e) {
            continue;
        }
        if (bean instanceof Invokable) {
            final Invokable invokable = (Invokable) bean;
            for (final AroundInvoke aroundInvoke : invokable.getAroundInvoke()) {
                checkAroundInvoke(ejbClass, aroundInvoke, bean.getEjbName());
            }
            for (final AroundTimeout aroundTimeout : invokable.getAroundTimeout()) {
                checkAroundTimeout(ejbClass, aroundTimeout, bean.getEjbName());
            }
        }
        for (final LifecycleCallback callback : bean.getPostConstruct()) {
            checkCallback(ejbClass, "PostConstruct", callback, bean);
        }
        for (final LifecycleCallback callback : bean.getPreDestroy()) {
            checkCallback(ejbClass, "PreDestroy", callback, bean);
        }
        final ClassFinder finder = new ClassFinder(ejbClass);
        if (bean instanceof Session) {
            final SessionBean session = (SessionBean) bean;
            if (session.getSessionType() == SessionType.STATEFUL) {
                for (final LifecycleCallback callback : session.getPrePassivate()) {
                    checkCallback(ejbClass, "PrePassivate", callback, bean);
                }
                for (final LifecycleCallback callback : session.getPostActivate()) {
                    checkCallback(ejbClass, "PostActivate", callback, bean);
                }
                checkSessionSynchronization(ejbClass, session);
                for (final LifecycleCallback callback : session.getAfterBegin()) {
                    checkCallback(ejbClass, "AfterBegin", callback, bean);
                }
                for (final LifecycleCallback callback : session.getBeforeCompletion()) {
                    checkCallback(ejbClass, "BeforeCompletion", callback, bean);
                }
                for (final LifecycleCallback callback : session.getAfterCompletion()) {
                    checkCallback(ejbClass, "AfterCompletion", callback, bean, boolean.class);
                }
                for (final AroundTimeout aroundTimeout : session.getAroundTimeout()) {
                    ignoredMethodAnnotation("AroundTimeout", bean, bean.getEjbClass(), aroundTimeout.getMethodName(), SessionType.STATEFUL.getName());
                }
                for (final Timer timer : session.getTimer()) {
                    ignoredMethodAnnotation("Schedule/Schedules", bean, bean.getEjbClass(), timer.getTimeoutMethod().getMethodName(), SessionType.STATEFUL.getName());
                }
            } else {
                for (final LifecycleCallback callback : session.getAfterBegin()) {
                    ignoredMethodAnnotation("AfterBegin", bean, bean.getEjbClass(), callback.getMethodName(), session.getSessionType().getName());
                }
                for (final LifecycleCallback callback : session.getBeforeCompletion()) {
                    ignoredMethodAnnotation("BeforeCompletion", bean, bean.getEjbClass(), callback.getMethodName(), session.getSessionType().getName());
                }
                for (final LifecycleCallback callback : session.getAfterCompletion()) {
                    ignoredMethodAnnotation("AfterCompletion", bean, bean.getEjbClass(), callback.getMethodName(), session.getSessionType().getName());
                }
                for (final LifecycleCallback callback : session.getPrePassivate()) {
                    ignoredMethodAnnotation("PrePassivate", bean, bean.getEjbClass(), callback.getMethodName(), session.getSessionType().getName());
                }
                for (final LifecycleCallback callback : session.getPostActivate()) {
                    ignoredMethodAnnotation("PostActivate", bean, bean.getEjbClass(), callback.getMethodName(), session.getSessionType().getName());
                }
                for (final RemoveMethod method : session.getRemoveMethod()) {
                    ignoredMethodAnnotation("Remove", bean, bean.getEjbClass(), method.getBeanMethod().getMethodName(), session.getSessionType().getName());
                }
                for (final InitMethod method : session.getInitMethod()) {
                    ignoredMethodAnnotation("Init", bean, bean.getEjbClass(), method.getBeanMethod().getMethodName(), session.getSessionType().getName());
                }
            }
        } else {
            for (final Method method : finder.findAnnotatedMethods(PrePassivate.class)) {
                ignoredMethodAnnotation("PrePassivate", bean, bean.getEjbClass(), method.getName(), bean.getClass().getSimpleName());
            }
            for (final Method method : finder.findAnnotatedMethods(PostActivate.class)) {
                ignoredMethodAnnotation("PostActivate", bean, bean.getEjbClass(), method.getName(), bean.getClass().getSimpleName());
            }
            for (final Method method : finder.findAnnotatedMethods(Remove.class)) {
                ignoredMethodAnnotation("Remove", bean, bean.getEjbClass(), method.getName(), bean.getClass().getSimpleName());
            }
            for (final Method method : finder.findAnnotatedMethods(Init.class)) {
                ignoredMethodAnnotation("Init", bean, bean.getEjbClass(), method.getName(), bean.getClass().getSimpleName());
            }
            for (final Method method : finder.findAnnotatedMethods(AfterBegin.class)) {
                ignoredMethodAnnotation("AfterBegin", bean, bean.getEjbClass(), method.getName(), bean.getClass().getSimpleName());
            }
            for (final Method method : finder.findAnnotatedMethods(BeforeCompletion.class)) {
                ignoredMethodAnnotation("BeforeCompletion", bean, bean.getEjbClass(), method.getName(), bean.getClass().getSimpleName());
            }
            for (final Method method : finder.findAnnotatedMethods(AfterCompletion.class)) {
                ignoredMethodAnnotation("AfterCompletion", bean, bean.getEjbClass(), method.getName(), bean.getClass().getSimpleName());
            }
        }
    //            if (bean instanceof TimerConsumer) {
    //                TimerConsumer timerConsumer = (TimerConsumer) bean;
    //                checkTimeOut(ejbClass, timerConsumer.getTimeoutMethod(), bean);
    //
    //                List<Method> timeoutMethods = finder.findAnnotatedMethods(Timeout.class);
    //                if (timeoutMethods.size() > 1) {
    //                    fail(timerConsumer.getTimerConsumerName(), "timeout.tooManyMethods", timeoutMethods.size(), Join.join(",", timeoutMethods));
    //                }
    //
    //                for(Timer timer : ((TimerConsumer) bean).getTimer()) {
    //                    checkTimeOut(ejbClass, timer.getTimeoutMethod(), bean);
    //                }
    //            }
    }
    for (final Interceptor interceptor : module.getEjbJar().getInterceptors()) {
        Class interceptorClass = null;
        try {
            interceptorClass = loadClass(interceptor.getInterceptorClass());
        } catch (final OpenEJBException e) {
            continue;
        }
        for (final AroundInvoke aroundInvoke : interceptor.getAroundInvoke()) {
            checkAroundInvoke(interceptorClass, aroundInvoke, "Interceptor");
        }
        for (final AroundTimeout aroundTimeout : interceptor.getAroundTimeout()) {
            checkAroundTimeout(interceptorClass, aroundTimeout, "Interceptor");
        }
        for (final LifecycleCallback callback : interceptor.getPostConstruct()) {
            checkCallback(interceptorClass, "PostConstruct", callback, interceptor);
        }
        for (final LifecycleCallback callback : interceptor.getPreDestroy()) {
            checkCallback(interceptorClass, "PreDestroy", callback, interceptor);
        }
        for (final LifecycleCallback callback : interceptor.getPrePassivate()) {
            checkCallback(interceptorClass, "PrePassivate", callback, interceptor);
        }
        for (final LifecycleCallback callback : interceptor.getPostActivate()) {
            checkCallback(interceptorClass, "PostActivate", callback, interceptor);
        }
        for (final LifecycleCallback callback : interceptor.getAfterBegin()) {
            checkCallback(interceptorClass, "AfterBegin", callback, interceptor);
        }
        for (final LifecycleCallback callback : interceptor.getBeforeCompletion()) {
            checkCallback(interceptorClass, "BeforeCompletion", callback, interceptor);
        }
        for (final LifecycleCallback callback : interceptor.getAfterCompletion()) {
            checkCallback(interceptorClass, "AfterCompletion", callback, interceptor);
        }
    }
}
Also used : InitMethod(org.apache.openejb.jee.InitMethod) OpenEJBException(org.apache.openejb.OpenEJBException) EnterpriseBean(org.apache.openejb.jee.EnterpriseBean) AroundTimeout(org.apache.openejb.jee.AroundTimeout) RemoveMethod(org.apache.openejb.jee.RemoveMethod) Method(java.lang.reflect.Method) InitMethod(org.apache.openejb.jee.InitMethod) CallbackMethod(org.apache.openejb.jee.CallbackMethod) SessionBean(org.apache.openejb.jee.SessionBean) Timer(org.apache.openejb.jee.Timer) Invokable(org.apache.openejb.jee.Invokable) ClassFinder(org.apache.xbean.finder.ClassFinder) RemoveMethod(org.apache.openejb.jee.RemoveMethod) LifecycleCallback(org.apache.openejb.jee.LifecycleCallback) AroundInvoke(org.apache.openejb.jee.AroundInvoke) Interceptor(org.apache.openejb.jee.Interceptor) Session(org.apache.openejb.jee.Session)

Aggregations

Method (java.lang.reflect.Method)1 OpenEJBException (org.apache.openejb.OpenEJBException)1 AroundInvoke (org.apache.openejb.jee.AroundInvoke)1 AroundTimeout (org.apache.openejb.jee.AroundTimeout)1 CallbackMethod (org.apache.openejb.jee.CallbackMethod)1 EnterpriseBean (org.apache.openejb.jee.EnterpriseBean)1 InitMethod (org.apache.openejb.jee.InitMethod)1 Interceptor (org.apache.openejb.jee.Interceptor)1 Invokable (org.apache.openejb.jee.Invokable)1 LifecycleCallback (org.apache.openejb.jee.LifecycleCallback)1 RemoveMethod (org.apache.openejb.jee.RemoveMethod)1 Session (org.apache.openejb.jee.Session)1 SessionBean (org.apache.openejb.jee.SessionBean)1 Timer (org.apache.openejb.jee.Timer)1 ClassFinder (org.apache.xbean.finder.ClassFinder)1