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