KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > enterprise > tools > verifier > tests > ejb > entity > cmp2 > SelectMethodQL


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the License). You may not use this file except in
5  * compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * https://glassfish.dev.java.net/public/CDDLv1.0.html or
9  * glassfish/bootstrap/legal/CDDLv1.0.txt.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * Header Notice in each file and include the License file
15  * at glassfish/bootstrap/legal/CDDLv1.0.txt.
16  * If applicable, add the following below the CDDL Header,
17  * with the fields enclosed by brackets [] replaced by
18  * you own identifying information:
19  * "Portions Copyrighted [year] [name of copyright owner]"
20  *
21  * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
22  */

23 package com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2;
24
25 import java.util.*;
26 import java.lang.reflect.*;
27 import com.sun.enterprise.deployment.*;
28 import com.sun.enterprise.deployment.QueryDescriptor;
29 import com.sun.enterprise.tools.verifier.Result;
30 import com.sun.enterprise.tools.verifier.tests.*;
31
32 /**
33  * Select methods must be associated with an EJB QL query which includes a
34  * SELECT clause
35  *
36  * @author Jerome Dochez
37  * @version
38  */

39 public class SelectMethodQL extends SelectMethodTest {
40
41     /**
42      * <p>
43      * run an individual test against a declared ejbSelect method
44      * </p>
45      *
46      * @param m is the ejbSelect method
47      * @param descriptor is the entity declaring the ejbSelect
48      * @param result is where to put the result
49      *
50      * @return true if the test passes
51      */

52     protected boolean runIndividualSelectTest(Method m, EjbCMPEntityDescriptor descriptor, Result result) {
53         ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
54         // We don't use getQueryFor to free ourselfves from classloader issues.
55
Set set = descriptor.getPersistenceDescriptor().getQueriedMethods();
56         Iterator iterator = set.iterator();
57         while(iterator.hasNext()) {
58             MethodDescriptor queryMethod = (MethodDescriptor) iterator.next();
59             if (queryMethod.getName().equals(m.getName())) {
60                 Class JavaDoc mParms[] = m.getParameterTypes();
61     
62                 String JavaDoc queryParms[] = queryMethod.getParameterClassNames();
63     
64         if (queryParms != null) {
65     
66                 if (queryParms.length == mParms.length) {
67                     boolean same = true;
68                     for (int i=0;i<mParms.length;i++) {
69                         if (!mParms[i].getName().equals(queryParms[i]))
70                             same=false;
71                     }
72                     if (same) {
73                         QueryDescriptor qd = descriptor.getPersistenceDescriptor().getQueryFor(queryMethod);
74                         String JavaDoc query = qd.getQuery();
75                         if (query == null && qd.getSQL()==null) {
76                 result.addErrorDetails(smh.getLocalString
77                        ("tests.componentNameConstructor",
78                     "For [ {0} ]",
79                     new Object JavaDoc[] {compName.toString()}));
80                             result.addErrorDetails(smh.getLocalString
81                                 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.SelectMethodQL.failed2",
82                                 "Error : [ {0} ] EJB-QL query and description are null",
83                         new Object JavaDoc[] {m.getName()}));
84                             return false;
85                         } else {
86                             if (query==null) {
87                 result.addGoodDetails(smh.getLocalString
88                        ("tests.componentNameConstructor",
89                     "For [ {0} ]",
90                     new Object JavaDoc[] {compName.toString()}));
91                                 result.addGoodDetails(smh.getLocalString
92                                 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.SelectMethodQL.passed1",
93                                     "Description for [ {0} ] is provided",
94                             new Object JavaDoc[] {m.getName()}));
95                                 return true;
96                             }
97                             if (query.toUpperCase().indexOf("SELECT")==-1) {
98                 result.addErrorDetails(smh.getLocalString
99                        ("tests.componentNameConstructor",
100                     "For [ {0} ]",
101                     new Object JavaDoc[] {compName.toString()}));
102                                 result.addErrorDetails(smh.getLocalString
103                                     ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.SelectMethodQL.failed2",
104                                     "Error : EJB-QL query for method [ {0} is null",
105                             new Object JavaDoc[] {m.getName()}));
106                                 return false;
107                             } else {
108                 result.addGoodDetails(smh.getLocalString
109                        ("tests.componentNameConstructor",
110                     "For [ {0} ]",
111                     new Object JavaDoc[] {compName.toString()}));
112                                 result.addGoodDetails(smh.getLocalString
113                                 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.SelectMethodQL.passed2",
114                                     "EJB-QL query for [ {0} ] is correct",
115                             new Object JavaDoc[] {m.getName()}));
116                                 return true;
117                             }
118                         }
119                     }
120                 }
121         }
122         else if (mParms.length == 0) {
123     
124             result.addGoodDetails(smh.getLocalString
125                       ("tests.componentNameConstructor",
126                        "For [ {0} ]",
127                        new Object JavaDoc[] {compName.toString()}));
128             result.addGoodDetails(smh.getLocalString
129                       ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.SelectMethodQL.passed3",
130                        "No EJB-QL query found",
131                        new Object JavaDoc[] {}));
132             return true;
133         } else {
134             result.addErrorDetails(smh.getLocalString
135                        ("tests.componentNameConstructor",
136                         "For [ {0} ]",
137                         new Object JavaDoc[] {compName.toString()}));
138             result.addErrorDetails(smh.getLocalString
139                        ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.SelectMethodQL.failed2",
140                         "Error : EJB-QL query for method [ {0} is null",
141                         new Object JavaDoc[] {m.getName()}));
142             return false;
143         }
144             }
145         }
146     
147     result.addErrorDetails(smh.getLocalString
148                        ("tests.componentNameConstructor",
149                     "For [ {0} ]",
150                     new Object JavaDoc[] {compName.toString()}));
151         result.addErrorDetails(smh.getLocalString
152         ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.SelectMethodQL.failed1",
153             "Error : [ {0} ] does not have a XML query element associated",
154         new Object JavaDoc[] {m.getName()}));
155         return false;
156     }
157 }
158
Popular Tags