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;
}
}