You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2006/11/28 09:34:39 UTC
svn commit: r479943 -
/incubator/openejb/trunk/openejb2/modules/openejb-core/src/main/java/org/apache/openejb/entity/cmp/TranqlEjbCmpEngine.java
Author: jlaskowski
Date: Tue Nov 28 00:34:36 2006
New Revision: 479943
URL: http://svn.apache.org/viewvc?view=rev&rev=479943
Log:
OPENEJB-384 Deployment doesn't ensure queries defined for ejbSelect methods
Submitted by: Rakesh Midha
Modified:
incubator/openejb/trunk/openejb2/modules/openejb-core/src/main/java/org/apache/openejb/entity/cmp/TranqlEjbCmpEngine.java
Modified: incubator/openejb/trunk/openejb2/modules/openejb-core/src/main/java/org/apache/openejb/entity/cmp/TranqlEjbCmpEngine.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-core/src/main/java/org/apache/openejb/entity/cmp/TranqlEjbCmpEngine.java?view=diff&rev=479943&r1=479942&r2=479943
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-core/src/main/java/org/apache/openejb/entity/cmp/TranqlEjbCmpEngine.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-core/src/main/java/org/apache/openejb/entity/cmp/TranqlEjbCmpEngine.java Tue Nov 28 00:34:36 2006
@@ -217,13 +217,21 @@
private Set createEjbSelectQueries(Map selects) throws IllegalArgumentException {
Set queries = new HashSet();
+ Method[] methods = beanClass.getMethods();
+ List list= new ArrayList();
+ for(int i=0;i<methods.length;i++)
+ {
+ if(methods[i].getName().startsWith("ejbSelect")){
+ list.add(new InterfaceMethodSignature(methods[i].getName(), methods[i].getParameterTypes(), true));
+ }
+ }
for (Iterator iterator = selects.entrySet().iterator(); iterator.hasNext();) {
Map.Entry entry = (Map.Entry) iterator.next();
SelectEJBQLQuery query = (SelectEJBQLQuery) entry.getKey();
InterfaceMethodSignature signature = new InterfaceMethodSignature(query.getMethodName(), query.getParameterTypes(), true);
QueryCommand command = (QueryCommand) entry.getValue();
-
+ list.remove(signature);
Method method = signature.getMethod(beanClass);
if (method == null) {
throw new IllegalArgumentException("Could not find select for signature: " + signature);
@@ -238,6 +246,8 @@
queries.add(new TranqlSingleValuedQuery(query, command, null, query.getSelectedEJB(), identityDefinerBuilder));
}
}
+ if(list.size() != 0)
+ throw new IllegalArgumentException("Could not find entry for ejbSelect method " + ((InterfaceMethodSignature)list.get(0)).getMethodName()+" in ejb descriptor");
return queries;
}
@@ -245,14 +255,25 @@
Class homeInterface = proxyInfo.getHomeInterface();
Class localHomeInterface = proxyInfo.getLocalHomeInterface();
+ List list= new ArrayList();
+ Class clazz = homeInterface;
+ if(clazz == null){
+ clazz = localHomeInterface;
+ }
+ Method[] methods = clazz.getMethods();
+ for(int i=0;i<methods.length;i++)
+ {
+ if(methods[i].getName().startsWith("find")){
+ list.add(new InterfaceMethodSignature(methods[i].getName(), methods[i].getParameterTypes(), true));
+ }
+ }
Set queries = new LinkedHashSet();
for (Iterator iterator = finders.entrySet().iterator(); iterator.hasNext();) {
Map.Entry entry = (Map.Entry) iterator.next();
FinderEJBQLQuery query = (FinderEJBQLQuery) entry.getKey();
-
InterfaceMethodSignature signature = new InterfaceMethodSignature(query.getMethodName(), query.getParameterTypes(), true);
QueryCommand[] commands = (QueryCommand[]) entry.getValue();
-
+ list.remove(signature);
Method method = signature.getMethod(homeInterface);
if (method == null) {
method = signature.getMethod(localHomeInterface);
@@ -272,6 +293,8 @@
queries.add(new TranqlSingleValuedQuery(query, commands[0], commands[1], ejb, identityDefinerBuilder));
}
}
+ if(list.size() != 0)
+ throw new IllegalArgumentException("Could not find entry for finder method " + ((InterfaceMethodSignature)list.get(0)).getMethodName()+" in ejb descriptor");
return queries;
}