You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2006/11/29 04:24:09 UTC

svn commit: r480366 - in /incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: alt/config/ assembler/classic/ assembler/spring/ core/ core/interceptor/

Author: dain
Date: Tue Nov 28 19:24:07 2006
New Revision: 480366

URL: http://svn.apache.org/viewvc?view=rev&rev=480366
Log:
Add interceptor data to CoreDeploymentInfo
Changed MethodInfo parameters to be null to differenate between methods with no parameters and unspecified parameters

Added:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBuilder.java
Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationPrinter.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/MethodInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/spring/MethodInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationPrinter.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationPrinter.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationPrinter.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationPrinter.java Tue Nov 28 19:24:07 2006
@@ -138,10 +138,12 @@
                         out(2, "ejbDeploymentId", methodInfo.ejbDeploymentId);
                         out(2, "methodIntf     ", methodInfo.methodIntf);
                         out(2, "methodName     ", methodInfo.methodName);
-                        out(2, "methodParams   ", methodInfo.methodParams);
-                        for (ListIterator<String> paramIterator = methodInfo.methodParams.listIterator(); paramIterator.hasNext();) {
-                            String methodParam = paramIterator.next();
-                            out(3, "param[" + paramIterator.previousIndex() + "]", methodParam);
+                        if (methodInfo.methodParams != null) {
+                            out(2, "methodParams   ", methodInfo.methodParams);
+                            for (ListIterator<String> paramIterator = methodInfo.methodParams.listIterator(); paramIterator.hasNext();) {
+                                String methodParam = paramIterator.next();
+                                out(3, "param[" + paramIterator.previousIndex() + "]", methodParam);
+                            }
                         }
                     }
                 }
@@ -164,10 +166,12 @@
                     out(2, "ejbDeploymentId", methodInfo.ejbDeploymentId);
                     out(2, "methodIntf     ", methodInfo.methodIntf);
                     out(2, "methodName     ", methodInfo.methodName);
-                    out(2, "methodParams   ", methodInfo.methodParams);
-                    for (ListIterator<String> paramIterator = methodInfo.methodParams.listIterator(); paramIterator.hasNext();) {
-                        String methodParam = paramIterator.next();
-                        out(3, "param[" + paramIterator.previousIndex() + "]", methodParam);
+                    if (methodInfo.methodParams != null) {
+                        out(2, "methodParams   ", methodInfo.methodParams);
+                        for (ListIterator<String> paramIterator = methodInfo.methodParams.listIterator(); paramIterator.hasNext();) {
+                            String methodParam = paramIterator.next();
+                            out(3, "param[" + paramIterator.previousIndex() + "]", methodParam);
+                        }
                     }
                 }
             }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java Tue Nov 28 19:24:07 2006
@@ -192,7 +192,7 @@
                     methodInterceptorInfo.methodInfo = new MethodInfo();
                     methodInterceptorInfo.methodInfo.methodName = method.getMethodName();
                     List<String> methodParam = method.getMethodParams().getMethodParam();
-                    methodInterceptorInfo.methodInfo.methodParams.addAll(methodParam);
+                    methodInterceptorInfo.methodInfo.methodParams = methodParam;
 
                     methodInterceptorInfo.excludeDefaultInterceptors = binding.getExcludeDefaultInterceptors();
                     methodInterceptorInfo.excludeClassInterceptors = binding.getExcludeClassInterceptors();
@@ -341,7 +341,7 @@
 
             MethodParams mp = method.getMethodParams();
             if (mp != null) {
-                methodInfo.methodParams.addAll(mp.getMethodParam());
+                methodInfo.methodParams = mp.getMethodParam();
             }
             mi.add(methodInfo);
         }
@@ -478,7 +478,7 @@
                 MethodInfo method = new MethodInfo();
                 org.apache.openejb.alt.config.ejb.QueryMethod qm = q.getQueryMethod();
                 method.methodName = qm.getMethodName();
-                method.methodParams.addAll(qm.getMethodParams().getMethodParam());
+                method.methodParams = qm.getMethodParams().getMethodParam();
                 query.method = method;
                 bean.queries.add(query);
             }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Tue Nov 28 19:24:07 2006
@@ -35,7 +35,6 @@
 import javax.transaction.TransactionManager;
 import javax.naming.Context;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Properties;
 import java.util.List;

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java Tue Nov 28 19:24:07 2006
@@ -40,7 +40,7 @@
         HashMap<String, DeploymentInfo> deployments = new HashMap<String, DeploymentInfo>();
         for (EnterpriseBeanInfo ejbInfo: ejbJar.enterpriseBeans) {
             try {
-                EnterpriseBeanBuilder deploymentBuilder = new EnterpriseBeanBuilder(classLoader, ejbInfo);
+                EnterpriseBeanBuilder deploymentBuilder = new EnterpriseBeanBuilder(classLoader, ejbInfo, ejbJar.defaultInterceptors);
                 CoreDeploymentInfo deployment = (CoreDeploymentInfo) deploymentBuilder.build();
                 deployment.setJarPath(ejbJar.jarPath);
                 deployments.put(ejbInfo.ejbDeploymentId, deployment);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java Tue Nov 28 19:24:07 2006
@@ -21,6 +21,7 @@
 import org.apache.openejb.BeanType;
 import org.apache.openejb.core.DeploymentContext;
 import org.apache.openejb.core.CoreDeploymentInfo;
+import org.apache.openejb.core.interceptor.InterceptorData;
 import org.apache.openejb.core.ivm.naming.IvmContext;
 import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.SafeToolkit;
@@ -30,19 +31,20 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.Vector;
 import java.util.List;
 import java.util.ArrayList;
 
 class EnterpriseBeanBuilder {
     protected static final Messages messages = new Messages("org.apache.openejb.util.resources");
     private final EnterpriseBeanInfo bean;
+    private final List<InterceptorInfo> defaultInterceptors;
     private final BeanType ejbType;
     private final ClassLoader cl;
     private List<Exception> warnings = new ArrayList<Exception>();
 
-    public EnterpriseBeanBuilder(ClassLoader cl, EnterpriseBeanInfo bean) {
+    public EnterpriseBeanBuilder(ClassLoader cl, EnterpriseBeanInfo bean, List<InterceptorInfo> defaultInterceptors) {
         this.bean = bean;
+        this.defaultInterceptors = defaultInterceptors;
 
         if (bean.type == EnterpriseBeanInfo.STATEFUL) {
             ejbType = BeanType.STATEFUL;
@@ -124,6 +126,13 @@
         deployment.setPostConstruct(getCallback(ejbClass, bean.postConstruct));
         deployment.setPreDestroy(getCallback(ejbClass, bean.preDestroy));
 
+        // interceptors
+        InterceptorBuilder interceptorBuilder = new InterceptorBuilder(defaultInterceptors, bean);
+        for (Method method : ejbClass.getMethods()) {
+            List<InterceptorData> interceptorDatas = interceptorBuilder.build(method);
+            deployment.setMethodInterceptors(method, interceptorDatas);
+        }
+
         if (bean instanceof StatefulBeanInfo) {
             StatefulBeanInfo statefulBeanInfo = (StatefulBeanInfo) bean;
             deployment.setPrePassivate(getCallback(ejbClass, statefulBeanInfo.prePassivate));
@@ -141,7 +150,7 @@
 
             if (ejbType == BeanType.CMP_ENTITY) {
                 for (QueryInfo query : entity.queries) {
-                    Vector finderMethods = new Vector();
+                    List<Method> finderMethods = new ArrayList<Method>();
 
                     if (home != null) {
                         AssemblerTool.resolveMethods(finderMethods, home, query.method);
@@ -149,8 +158,9 @@
                     if (localhome != null) {
                         AssemblerTool.resolveMethods(finderMethods, localhome, query.method);
                     }
-                    for (int j = 0; j < finderMethods.size(); j++) {
-                        deployment.addQuery((Method) finderMethods.elementAt(j), query.queryStatement);
+
+                    for (Method method : finderMethods) {
+                        deployment.addQuery(method, query.queryStatement);
                     }
                 }
                 deployment.setCmrFields(entity.cmpFieldNames.toArray(new String[]{}));

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBuilder.java?view=auto&rev=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBuilder.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBuilder.java Tue Nov 28 19:24:07 2006
@@ -0,0 +1,158 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.assembler.classic;
+
+import org.apache.openejb.core.interceptor.InterceptorData;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Collections;
+
+public class InterceptorBuilder {
+    public final List<InterceptorData> defaultInterceptors;
+    public final boolean excludeDefaultInterceptors;
+    public final List<InterceptorData> classInterceptors;
+    public final List<MethodInterceptorInfo> methodInterceptors;
+
+    public InterceptorBuilder(List<InterceptorInfo> defaultInterceptors, EnterpriseBeanInfo bean) {
+        this.defaultInterceptors = toInterceptorDatas(defaultInterceptors);
+        this.excludeDefaultInterceptors = bean.excludeDefaultInterceptors;
+        this.classInterceptors = toInterceptorDatas(bean.classInterceptors);
+        this.methodInterceptors = new ArrayList<MethodInterceptorInfo>(bean.methodInterceptors);
+        Collections.sort(methodInterceptors, METHOD_INTERCEPTOR_INFO_COMPARATOR);
+    }
+
+    public List<InterceptorData> build(Method method) {
+        List<InterceptorData> interceptors = new ArrayList<InterceptorData>();
+
+        // check for a method level interceptor
+        for (MethodInterceptorInfo methodInterceptorInfo : methodInterceptors) {
+            if (matches(method, methodInterceptorInfo.methodInfo)) {
+                if (!methodInterceptorInfo.excludeDefaultInterceptors) {
+                    for (InterceptorData interceptorData : defaultInterceptors) {
+                        interceptors.add(interceptorData);
+                    }
+                }
+
+                if (!methodInterceptorInfo.excludeClassInterceptors) {
+                    for (InterceptorData interceptorData : classInterceptors) {
+                        interceptors.add(interceptorData);
+                    }
+                }
+
+                interceptors.addAll(toInterceptorDatas(methodInterceptorInfo.interceptors));
+
+                return interceptors;
+            }
+        }
+
+        // no method level interceptor
+
+        if (!excludeDefaultInterceptors) {
+            for (InterceptorData interceptorData : defaultInterceptors) {
+                interceptors.add(interceptorData);
+            }
+        }
+
+        for (InterceptorData interceptorData : classInterceptors) {
+            interceptors.add(interceptorData);
+        }
+
+        return interceptors;
+    }
+
+    private static List<InterceptorData> toInterceptorDatas(List<InterceptorInfo> interceptorInfos) {
+        ArrayList<InterceptorData> interceptorDatas = new ArrayList<InterceptorData>(interceptorInfos.size());
+        for (InterceptorInfo interceptorInfo : interceptorInfos) {
+            interceptorDatas.add(new InterceptorData(interceptorInfo.clazz, interceptorInfo.methodName));
+        }
+        return interceptorDatas;
+    }
+
+    private static boolean matches(Method method, MethodInfo methodInfo) throws SecurityException {
+        if (methodInfo.methodName.equals(method.getName())) {
+            return false;
+        }
+
+        // do we have parameters?
+        List<String> methodParams = methodInfo.methodParams;
+        if (methodParams == null) {
+            return true;
+        }
+
+        // do we have the same number of parameters?
+        if (methodParams.size() != method.getParameterTypes().length) {
+            return false;
+        }
+
+        // match parameters names
+        Class<?>[] parameterTypes = method.getParameterTypes();
+        for (int i = 0; i < parameterTypes.length; i++) {
+            Class<?> parameterType = parameterTypes[i];
+            String methodParam = methodParams.get(i);
+            if (methodParam.equals(getName(parameterType))) {
+                return false;
+            }
+        }
+
+        return false;
+    }
+
+    private static String getName(Class<?> type) {
+        if (type.isArray()) {
+            return getName(type.getComponentType()) + "[]";
+        } else {
+            return type.getName();
+        }
+    }
+
+    public static final MethodInterceptorInfoComparator METHOD_INTERCEPTOR_INFO_COMPARATOR = new MethodInterceptorInfoComparator();
+    public static class MethodInterceptorInfoComparator implements Comparator {
+        public int compare(Object o1, Object o2) {
+            MethodInterceptorInfo mi1 = (MethodInterceptorInfo) o1;
+            MethodInterceptorInfo mi2 = (MethodInterceptorInfo) o2;
+
+            MethodInfo m1 = mi1.methodInfo;
+            MethodInfo m2 = mi2.methodInfo;
+
+            int val = m1.methodName.compareTo(m2.methodName);
+            if (val != 0) return val;
+
+            if (m1.methodParams == null) {
+                return m2.methodParams == null ? 0 : -1;
+            } else if (m2.methodParams == null) {
+                return 1;
+            }
+
+            if (m1.methodParams.size() != m2.methodParams.size()) {
+                return m1.methodParams.size() - m2.methodParams.size();
+            }
+
+            Iterator<String> iterator = m1.methodParams.iterator();
+            for (String param2 : m2.methodParams) {
+                String param1 = iterator.next();
+                val = param1.compareTo(param2);
+                if (val != 0) return val;
+            }
+            return 0;
+        }
+    }
+}

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/MethodInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/MethodInfo.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/MethodInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/MethodInfo.java Tue Nov 28 19:24:07 2006
@@ -17,7 +17,6 @@
 package org.apache.openejb.assembler.classic;
 
 import java.util.List;
-import java.util.ArrayList;
 
 public class MethodInfo extends InfoObject {
 
@@ -25,5 +24,5 @@
     public String ejbDeploymentId;
     public String methodIntf;
     public String methodName;
-    public final List<String> methodParams = new ArrayList<String>();
+    public List<String> methodParams;
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/spring/MethodInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/spring/MethodInfo.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/spring/MethodInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/spring/MethodInfo.java Tue Nov 28 19:24:07 2006
@@ -32,7 +32,9 @@
         this.deploymentId = info.ejbDeploymentId;
         this.intf = info.methodIntf;
         this.name = info.methodName;
-        this.params = info.methodParams.toArray(new String[info.methodParams.size()]);
+        if (info.methodParams != null) {
+            this.params = info.methodParams.toArray(new String[info.methodParams.size()]);
+        }
     }
 
     public String getDeploymentId() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java Tue Nov 28 19:24:07 2006
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.net.URL;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Set;
 import javax.ejb.EJBHome;
 import javax.ejb.EJBLocalHome;
 import javax.ejb.EJBLocalObject;
@@ -58,6 +58,7 @@
 import org.apache.openejb.core.transaction.TxRequiresNew;
 import org.apache.openejb.core.transaction.TxSupports;
 import org.apache.openejb.core.transaction.TransactionContext;
+import org.apache.openejb.core.interceptor.InterceptorData;
 import org.apache.openejb.util.proxy.ProxyManager;
 
 /**
@@ -93,13 +94,14 @@
 
     private Method createMethod = null;
 
-    private HashMap postCreateMethodMap = new HashMap();
+    private final Map<Method, Method> postCreateMethodMap = new HashMap<Method, Method>();
     private final BeanType componentType;
 
     private final Map<Method, Collection<String>> methodPermissions = new HashMap<Method, Collection<String>>();
-    private HashMap methodTransactionAttributes = new HashMap();
-    private HashMap methodTransactionPolicies = new HashMap();
-    private HashMap methodMap = new HashMap();
+    private final Map<Method, Byte> methodTransactionAttributes = new HashMap<Method, Byte>();
+    private final Map<Method, TransactionPolicy> methodTransactionPolicies = new HashMap<Method, TransactionPolicy>();
+    private final Map<Method, List<InterceptorData>> methodInterceptors = new HashMap<Method, List<InterceptorData>>();
+    private final Map<Method, Method> methodMap = new HashMap<Method, Method>();
     private final Map<String, List<String>> securityRoleReferenceMap = new HashMap<String, List<String>>();
     private String jarPath;
 
@@ -186,17 +188,15 @@
     }
 
     public byte getTransactionAttribute(Method method) {
-
-        Byte byteWrapper = (Byte) methodTransactionAttributes.get(method);
+        Byte byteWrapper = methodTransactionAttributes.get(method);
         if (byteWrapper == null)
             return TX_NOT_SUPPORTED;// non remote or home interface method
         else
-            return byteWrapper.byteValue();
+            return byteWrapper;
     }
 
     public TransactionPolicy getTransactionPolicy(Method method) {
-
-        TransactionPolicy policy = (TransactionPolicy) methodTransactionPolicies.get(method);
+        TransactionPolicy policy = methodTransactionPolicies.get(method);
         if (policy == null && !isBeanManagedTransaction) {
             org.apache.log4j.Logger.getLogger("OpenEJB").info("The following method doesn't have a transaction policy assigned: " + method);
         }
@@ -346,14 +346,14 @@
     }
 
     public Method getMatchingBeanMethod(Method interfaceMethod) {
-        Method mthd = (Method) methodMap.get(interfaceMethod);
-        return (mthd == null) ? interfaceMethod : mthd;
+        Method method = methodMap.get(interfaceMethod);
+        return (method == null) ? interfaceMethod : method;
     }
 
     public void appendMethodPermissions(Method m, List<String> roleNames) {
-        HashSet hs = (HashSet) methodPermissions.get(m);
+        Collection<String> hs = methodPermissions.get(m);
         if (hs == null) {
-            hs = new HashSet();// FIXME: Set appropriate load and intial capacity
+            hs = new HashSet<String>();// FIXME: Set appropriate load and intial capacity
             methodPermissions.put(m, hs);
         }
         for (String roleName : roleNames) {
@@ -437,6 +437,22 @@
         methodTransactionPolicies.put(method, policy);
     }
 
+    public List<InterceptorData> getMethodInterceptors(Method method) {
+        return methodInterceptors.get(method);
+    }
+
+    public void setMethodInterceptors(Method method, List<InterceptorData> interceptors) {
+        methodInterceptors.put(method, interceptors);
+    }
+
+    public Set<InterceptorData> getAllInterceptors() {
+        Set<InterceptorData> interceptors = new HashSet<InterceptorData>();
+        for (List<InterceptorData> interceptorDatas : methodInterceptors.values()) {
+            interceptors.addAll(interceptorDatas);
+        }
+        return interceptors;
+    }
+
     private javax.ejb.EJBHome createEJBHomeRef() {
 
         EjbHomeProxyHandler handler = null;
@@ -545,11 +561,11 @@
 
     private void createMethodMap() throws org.apache.openejb.SystemException {
         if (remoteInterface != null) {
-            mapObjectInterface(remoteInterface, false);
+            mapObjectInterface(remoteInterface);
             mapHomeInterface(homeInterface);
         }
         if (localInterface != null) {
-            mapObjectInterface(localInterface, true);
+            mapObjectInterface(localInterface);
             mapHomeInterface(localHomeInterface);
         }
 
@@ -557,20 +573,20 @@
         try {
 
             if (componentType == BeanType.STATEFUL || componentType == BeanType.STATELESS) {
-                Method beanMethod = javax.ejb.SessionBean.class.getDeclaredMethod("ejbRemove", new Class []{});
-                Method clientMethod = EJBHome.class.getDeclaredMethod("remove", new Class []{javax.ejb.Handle.class});
+                Method beanMethod = javax.ejb.SessionBean.class.getDeclaredMethod("ejbRemove");
+                Method clientMethod = EJBHome.class.getDeclaredMethod("remove", javax.ejb.Handle.class);
                 methodMap.put(clientMethod, beanMethod);
-                clientMethod = EJBHome.class.getDeclaredMethod("remove", new Class []{java.lang.Object.class});
+                clientMethod = EJBHome.class.getDeclaredMethod("remove", java.lang.Object.class);
                 methodMap.put(clientMethod, beanMethod);
-                clientMethod = javax.ejb.EJBObject.class.getDeclaredMethod("remove", null);
+                clientMethod = javax.ejb.EJBObject.class.getDeclaredMethod("remove");
                 methodMap.put(clientMethod, beanMethod);
             } else if (componentType == BeanType.BMP_ENTITY || componentType == BeanType.CMP_ENTITY) {
-                Method beanMethod = javax.ejb.EntityBean.class.getDeclaredMethod("ejbRemove", new Class []{});
-                Method clientMethod = EJBHome.class.getDeclaredMethod("remove", new Class []{javax.ejb.Handle.class});
+                Method beanMethod = javax.ejb.EntityBean.class.getDeclaredMethod("ejbRemove");
+                Method clientMethod = EJBHome.class.getDeclaredMethod("remove", javax.ejb.Handle.class);
                 methodMap.put(clientMethod, beanMethod);
-                clientMethod = EJBHome.class.getDeclaredMethod("remove", new Class []{java.lang.Object.class});
+                clientMethod = EJBHome.class.getDeclaredMethod("remove", java.lang.Object.class);
                 methodMap.put(clientMethod, beanMethod);
-                clientMethod = javax.ejb.EJBObject.class.getDeclaredMethod("remove", null);
+                clientMethod = javax.ejb.EJBObject.class.getDeclaredMethod("remove");
                 methodMap.put(clientMethod, beanMethod);
             }
         } catch (java.lang.NoSuchMethodException nsme) {
@@ -625,7 +641,7 @@
         }
     }
 
-    private void mapObjectInterface(Class intrface, boolean isLocal) {
+    private void mapObjectInterface(Class intrface) {
         if (intrface == BusinessLocalHome.class || intrface == BusinessRemoteHome.class){
             return;
         }
@@ -707,14 +723,18 @@
     }
 
     public Method getMatchingPostCreateMethod(Method createMethod) {
-        return (Method) this.postCreateMethodMap.get(createMethod);
+        return this.postCreateMethodMap.get(createMethod);
     }
 
+    //
+    // CMP specific data
+    //
+
     private KeyGenerator keyGenerator;
     private Field primKeyField;
     private String[] cmrFields;
 
-    private HashMap queryMethodMap = new HashMap();
+    private Map<Method, String> queryMethodMap = new HashMap<Method, String>();
 
     public Field getPrimaryKeyField() {
         return primKeyField;
@@ -747,7 +767,7 @@
     }
 
     public String getQuery(Method queryMethod) {
-        return (String) queryMethodMap.get(queryMethod);
+        return queryMethodMap.get(queryMethod);
     }
 
     public void setJarPath(String jarPath) {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java?view=diff&rev=480366&r1=480365&r2=480366
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java Tue Nov 28 19:24:07 2006
@@ -25,6 +25,8 @@
     private final String interceptorMethod;
 
     public InterceptorData(String interceptorClass, String interceptorMethod) {
+        if (interceptorClass == null) throw new NullPointerException("interceptorClass is null");
+        if (interceptorMethod == null) throw new NullPointerException("interceptorMethod is null");
         this.interceptorClass = interceptorClass;
         this.interceptorMethod = interceptorMethod;
     }
@@ -35,5 +37,26 @@
 
     public String getInterceptorMethod() {
         return interceptorMethod;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        InterceptorData that = (InterceptorData) o;
+        return interceptorClass.equals(that.interceptorClass) &&
+                interceptorMethod.equals(that.interceptorMethod);
+
+    }
+
+    public int hashCode() {
+        int result;
+        result = interceptorClass.hashCode();
+        result = 29 * result + interceptorMethod.hashCode();
+        return result;
+    }
+
+    public String toString() {
+        return interceptorClass + "." + interceptorMethod;
     }
 }