[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