[jboss-cvs] JBossAS SVN: r74972 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/annotation/creator/ejb/jboss and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 24 07:49:34 EDT 2008


Author: emuckenhuber
Date: 2008-06-24 07:49:34 -0400 (Tue, 24 Jun 2008)
New Revision: 74972

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ImplicitLocalProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ImplicitLocalProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/lang/ClassHelper.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/defaultinterface/Child.java
Log:
[JBMETA-15] update ClassHelper to ignore Serializable, Externalizable interfaces

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ImplicitLocalProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ImplicitLocalProcessor.java	2008-06-24 11:32:25 UTC (rev 74971)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ImplicitLocalProcessor.java	2008-06-24 11:49:34 UTC (rev 74972)
@@ -33,6 +33,7 @@
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
 import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
+import org.jboss.metadata.lang.ClassHelper;
 
 /**
  * Process the implicit local business interface (4.6.6)
@@ -60,11 +61,11 @@
          return;
       
       // Don't check super class
-      if(!metaData.getEjbClass().equals(type.getName()))
+      if(metaData.getEjbName() != null && !metaData.getEjbClass().equals(type.getName()))
          return;
       
       // Get the a single interface
-      Class<?> businessInterface = extractInterface(type.getInterfaces());
+      Class<?> businessInterface = ClassHelper.extractInterface(type.getInterfaces());
       if(businessInterface == null)
          return;
       

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ImplicitLocalProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ImplicitLocalProcessor.java	2008-06-24 11:32:25 UTC (rev 74971)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ImplicitLocalProcessor.java	2008-06-24 11:49:34 UTC (rev 74972)
@@ -21,8 +21,6 @@
  */
 package org.jboss.metadata.annotation.creator.ejb.jboss;
 
-import java.io.Externalizable;
-import java.io.Serializable;
 import java.lang.reflect.AnnotatedElement;
 
 import javax.ejb.EJBLocalObject;
@@ -33,6 +31,7 @@
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
 import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
+import org.jboss.metadata.lang.ClassHelper;
 
 /**
  * Process the implicit local business interface (4.6.6)
@@ -60,11 +59,11 @@
          return;
       
       // Don't check super class
-      if(!metaData.getEjbClass().equals(type.getName()))
+      if(metaData.getEjbName() != null && !metaData.getEjbClass().equals(type.getName()))
          return;
       
       // Get the a single interface
-      Class<?> businessInterface = extractInterface(type.getInterfaces());
+      Class<?> businessInterface = ClassHelper.extractInterface(type.getInterfaces());
       if(businessInterface == null)
          return;
       
@@ -84,36 +83,4 @@
       // Finally add local business interface
       metaData.getBusinessLocals().add(businessInterface.getName());
    }
-   
-   /**
-    * Extracts a single interface.
-    * 
-    * @param interfaces
-    * @return The extracted interface class. null if there are none or more interfaces
-    */
-   private static Class<?> extractInterface(Class<?>... interfaces)
-   {
-      Class<?> iFace = null;
-      for(Class<?> candidate : interfaces)
-      {
-         // Ignore specific interfaces
-         if(Serializable.class.equals(candidate))
-            continue;
-         else if (Externalizable.class.equals(candidate))
-            continue;
-         else if (candidate.getName().startsWith("javax.ejb"))
-            continue;
-         else if (candidate.getName().startsWith("org.jboss.aop"))
-            continue;
-         else
-         {
-            // Just allow one interface otherwise return null
-            if(iFace == null)
-               iFace = candidate;
-            else
-               return null;
-         }
-      }
-      return iFace;
-   }
 }
\ No newline at end of file

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/lang/ClassHelper.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/lang/ClassHelper.java	2008-06-24 11:32:25 UTC (rev 74971)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/lang/ClassHelper.java	2008-06-24 11:49:34 UTC (rev 74972)
@@ -21,12 +21,15 @@
  */
 package org.jboss.metadata.lang;
 
+import java.io.Externalizable;
+import java.io.Serializable;
 
+
 /**
  * Useful methods on classes.
  *
  * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
+ * @version $Revision$
  */
 public class ClassHelper
 {
@@ -43,12 +46,44 @@
          case 1:
             return interfaces[0];
          default:
-            // TODO: maybe an exception?
-            return null;
+            return extractInterface(interfaces);
       }
    }
    
    /**
+    * Extracts a single interface.
+    * 
+    * @param interfaces
+    * @return The extracted interface class. null if there are none or more interfaces
+    */
+   public static Class<?> extractInterface(Class<?>... interfaces)
+   {
+      Class<?> iFace = null;
+      for(Class<?> candidate : interfaces)
+      {
+         // Ignore specific interfaces
+         if(Serializable.class.equals(candidate))
+            continue;
+         else if (Externalizable.class.equals(candidate))
+            continue;
+         else if (candidate.getName().startsWith("javax.ejb"))
+            continue;
+         else if (candidate.getName().startsWith("org.jboss.aop"))
+            continue;
+         else
+         {
+            // Just allow one interface otherwise return null
+            if(iFace == null)
+               iFace = candidate;
+            else
+               return null;
+         }
+      }
+      return iFace;
+   }
+   
+   
+   /**
     * Find the default interface of a class. If a class implements one interface,
     * that interface is considered the default interface. If it does not implement
     * an interface it's super class is considered. If it implements multiple

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/defaultinterface/Child.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/defaultinterface/Child.java	2008-06-24 11:32:25 UTC (rev 74971)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/defaultinterface/Child.java	2008-06-24 11:49:34 UTC (rev 74972)
@@ -21,14 +21,16 @@
  */
 package org.jboss.test.metadata.annotation.ejb3.defaultinterface;
 
+import java.io.Serializable;
 
+
 /**
  * A Child.
  * 
  * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
  * @version $Revision: 1.1 $
  */
-public class Child extends Parent implements ChildInterface
+public class Child extends Parent implements ChildInterface, Serializable
 {
 
 }




More information about the jboss-cvs-commits mailing list