[jboss-cvs] JBossAS SVN: r72193 - in projects/ejb3/trunk: interceptors/src/main/java/org/jboss/ejb3/interceptors/container and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Apr 14 12:31:23 EDT 2008
Author: kabir.khan at jboss.com
Date: 2008-04-14 12:31:23 -0400 (Mon, 14 Apr 2008)
New Revision: 72193
Modified:
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/BeanContainer.java
projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/container/AbstractContainer.java
Log:
[EJBTHREE-1277] Get rid of BeanContainer.setAdvisor() hack
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/BeanContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/BeanContainer.java 2008-04-14 16:15:02 UTC (rev 72192)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/BeanContainer.java 2008-04-14 16:31:23 UTC (rev 72193)
@@ -36,6 +36,7 @@
import org.jboss.ejb3.interceptors.container.AbstractContainer;
import org.jboss.ejb3.interceptors.container.ContainerInterceptorFactory;
import org.jboss.ejb3.interceptors.container.InterceptorFactoryRefImpl;
+import org.jboss.ejb3.interceptors.container.ManagedObjectAdvisor;
import org.jboss.ejb3.interceptors.direct.AbstractDirectContainer;
import org.jboss.ejb3.interceptors.metadata.AdditiveBeanInterceptorMetaDataBridge;
import org.jboss.ejb3.interceptors.metadata.InterceptorComponentMetaDataLoaderFactory;
@@ -199,20 +200,11 @@
initializeAdvisor(name, domain, beanClass, annotations);
}
-
+
@Override
- protected void initializeAdvisor(String name, Domain domain, Class<? extends Object> beanClass, AnnotationRepository annotations)
+ protected ManagedObjectAdvisor<Object, BeanContainer> createAdvisor(String name, Domain domain, Class<? extends Object> beanClass, AnnotationRepository annotations)
{
- assert name != null : "name is null";
- assert domain != null : "domain is null";
- assert beanClass != null : "beanClass is null";
-
- // Decouple setting the advisor and initializing it, so interceptors
- // can get it.
- ExtendedManagedObjectAdvisor advisor = new ExtendedManagedObjectAdvisor(this, name, domain, annotations);
- setAdvisor(advisor);
- advisor.getAnnotations().addClassAnnotation(InterceptorFactoryRef.class, new InterceptorFactoryRefImpl(ContainerInterceptorFactory.class));
- advisor.initialize(beanClass);
+ return new ExtendedManagedObjectAdvisor(this, name, domain, annotations);
}
/*
@@ -253,34 +245,4 @@
throw new RuntimeException(e);
}
}
-
- /**
- * FIXME: Q&D hack
- * @param advisor
- */
- private void setAdvisor(ExtendedManagedObjectAdvisor advisor)
- {
- try
- {
- Field field = AbstractContainer.class.getDeclaredField("advisor");
- field.setAccessible(true);
- field.set(this, advisor);
- }
- catch (IllegalArgumentException e)
- {
- throw new RuntimeException(e);
- }
- catch (IllegalAccessException e)
- {
- throw new RuntimeException(e);
- }
- catch (NoSuchFieldException e)
- {
- throw new RuntimeException(e);
- }
- catch (SecurityException e)
- {
- throw new RuntimeException(e);
- }
- }
}
Modified: projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/container/AbstractContainer.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/container/AbstractContainer.java 2008-04-14 16:15:02 UTC (rev 72192)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/container/AbstractContainer.java 2008-04-14 16:31:23 UTC (rev 72193)
@@ -147,7 +147,7 @@
initializeAdvisor(name, domain, beanClass, null);
}
- protected void initializeAdvisor(String name, Domain domain, Class<? extends T> beanClass, AnnotationRepository annotations)
+ protected final void initializeAdvisor(String name, Domain domain, Class<? extends T> beanClass, AnnotationRepository annotations)
{
if(this.advisor != null) throw new IllegalStateException("advisor already set to " + advisor);
@@ -157,11 +157,21 @@
// Decouple setting the advisor and initializing it, so interceptors
// can get it.
- this.advisor = new ManagedObjectAdvisor<T, C>((C) this, name, domain, annotations);
+ createAndSetAdvisor(name, domain, beanClass, annotations);
advisor.getAnnotations().addClassAnnotation(InterceptorFactoryRef.class, new InterceptorFactoryRefImpl(ContainerInterceptorFactory.class));
advisor.initialize(beanClass);
}
+ protected final void createAndSetAdvisor(String name, Domain domain, Class<? extends T> beanClass, AnnotationRepository annotations)
+ {
+ this.advisor = createAdvisor(name, domain, beanClass, annotations);
+ }
+
+ protected ManagedObjectAdvisor<T, C> createAdvisor(String name, Domain domain, Class<? extends T> beanClass, AnnotationRepository annotations)
+ {
+ return new ManagedObjectAdvisor<T, C>((C) this, name, domain, annotations);
+ }
+
protected final ManagedObjectAdvisor<T, C> getAdvisor()
{
if(advisor == null) throw new IllegalStateException("advisor has not been initialized");
More information about the jboss-cvs-commits
mailing list