KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > enterprise > tools > verifier > tests > ejb > runtime > ASEntBeanPmDescriptors


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

25
26 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest;
27 import java.util.*;
28 import com.sun.enterprise.deployment.EjbDescriptor;
29 import com.sun.enterprise.tools.verifier.*;
30 import com.sun.enterprise.tools.verifier.tests.*;
31
32 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck;
33
34 import java.io.*;
35 import java.util.jar.*;
36 import com.sun.enterprise.deployment.*;
37
38 import com.sun.enterprise.deployment.deploy.shared.FileArchive;
39
40 /** enterprise-beans
41  * pm-descriptors ?
42  * pm-descriptor
43  * pm-identifier [String]
44  * pm-version [String]
45  * pm-config ? [String]
46  * pm-class-generator ? 2.0 / pm-class-generator 2.1 [String]
47  * pm-mapping-factory ? [String]
48  * pm-inuse
49  * pm-identifier [String]
50  * pm-version [String]
51  *
52  * The pm-descriptors element contains one or more pm-descriptor elements
53  * The pm-descriptor describes the properties for the persistence
54  * manager associated with the entity bean.
55  * The pm-identifier and pm-version fields are required and should not be null.
56  * the pm-config should be a valid ias-cmp-mapping descriptor
57  *
58  * The pm-inuse identifies the persistence manager in use at a particular time.
59  * The pm-identifier and pm-version should be from the pm-descriptor
60  * element.
61  * @author Irfan Ahmed
62  */

63 public class ASEntBeanPmDescriptors extends EjbTest implements EjbCheck {
64     private boolean oneFailed=false;//4698035
65
private boolean oneWarning=false;
66     ComponentNameConstructor compName = null;
67
68     
69     public Result check(EjbDescriptor descriptor) {
70     Result result = getInitializedResult();
71     compName = getVerifierContext().getComponentNameConstructor();
72 // String value=null;
73
int count = 0;
74         try{
75             count = getCountNodeSet("sun-ejb-jar/enterprise-beans/pm-descriptors");
76             if (count>0){
77                 Map<String JavaDoc, String JavaDoc> pmIdVer = new HashMap<String JavaDoc, String JavaDoc>();
78                 count = getCountNodeSet("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-descriptor");
79                 if (count>0){
80                     for(int i=0;i<count;i++){
81                         testPmDescriptor(i, result, pmIdVer, descriptor);
82                     }
83                     count = getCountNodeSet("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-inuse");
84                     if (count >0){
85                         String JavaDoc pmIdentifier = getXPathValue("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-inuse/pm-identifier");
86                         String JavaDoc pmVersion = getXPathValue("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-inuse/pm-version");
87                         if (pmIdentifier!=null){
88                             if (pmVersion!=null){
89                                 if(pmIdVer.containsKey(pmIdentifier)){
90                                     result.addGoodDetails(smh.getLocalString
91                                         ("tests.componentNameConstructor",
92                                         "For [ {0} ]",
93                                         new Object JavaDoc[] {compName.toString()}));
94                                     result.passed(smh.getLocalString(getClass().getName()+".passed",
95                                         "PASSED [AS-EJB pm-inuse] : pm-identifier {0} is valid"
96                                         ,new Object JavaDoc[]{pmIdentifier}));
97                                     String JavaDoc testVersion = (String JavaDoc)pmIdVer.get(pmIdentifier);
98                                     if(testVersion.equals(pmVersion))
99                                     {
100                                         result.addGoodDetails(smh.getLocalString
101                                             ("tests.componentNameConstructor",
102                                             "For [ {0} ]",
103                                             new Object JavaDoc[] {compName.toString()}));
104                                         result.passed(smh.getLocalString(getClass().getName()+".passed1",
105                                             "PASSED [AS-EJB pm-inuse] : pm-version {0} is valid",
106                                             new Object JavaDoc[]{pmVersion}));
107                                     }else{
108                                         // <addition> srini@sun.com Bug: 4698038
109
//result.failed(smh.getLocalString(getClass().getName()+".failed",
110
// "FAILED [AS-EJB pm-inuse] : pm-version {0} for pm-identifier {0} not defined in pm-descriptors"
111
//, new Object[]{pmVersion, pmIdentifier}));
112
result.addErrorDetails(smh.getLocalString
113                                     ("tests.componentNameConstructor",
114                             "For [ {0} ]",
115                             new Object JavaDoc[] {compName.toString()}));
116                                         result.failed(smh.getLocalString(getClass().getName()+".failed5",
117                                             "FAILED [AS-EJB pm-inuse] : pm-version {0} for pm-identifier {1} not defined in pm-descriptors"
118                                             , new Object JavaDoc[]{pmVersion, pmIdentifier}));
119                                         // </addition> Bug: 4698038
120
oneFailed=true;
121                                     }
122                                 }else{
123                                     result.addErrorDetails(smh.getLocalString
124                         ("tests.componentNameConstructor",
125                         "For [ {0} ]",
126                         new Object JavaDoc[] {compName.toString()}));
127                                     result.failed(smh.getLocalString(getClass().getName()+".failed1",
128                                         "FAILED [AS-EJB pm-inuse] : pm-identifier {0} is not defined in pm-descriptors"
129                                         , new Object JavaDoc[]{pmIdentifier}));
130                                     oneFailed=true;
131                                 }
132                             }else{
133                                 result.addErrorDetails(smh.getLocalString
134                     ("tests.componentNameConstructor",
135                     "For [ {0} ]",
136                     new Object JavaDoc[] {compName.toString()}));
137                                 result.failed(smh.getLocalString(getClass().getName()+".failed12",
138                                     "FAILED [AS-EJB pm-inuse] : pm-version {0} is not defined in pm-inuse"
139                                     , new Object JavaDoc[]{pmIdentifier}));
140                                 oneFailed=true;
141                             }
142                         }else{
143                                 result.addErrorDetails(smh.getLocalString
144                    ("tests.componentNameConstructor",
145                     "For [ {0} ]",
146                     new Object JavaDoc[] {compName.toString()}));
147                                 result.failed(smh.getLocalString(getClass().getName()+".failed14",
148                                     "FAILED [AS-EJB pm-inuse] : pm-identifier {0} is not defined in pm-inuse"
149                                     , new Object JavaDoc[]{pmIdentifier}));
150                                 oneFailed=true;
151                         }
152                     }else{
153                         result.addErrorDetails(smh.getLocalString
154                         ("tests.componentNameConstructor",
155                     "For [ {0} ]",
156                     new Object JavaDoc[] {compName.toString()}));
157                         result.failed(smh.getLocalString(getClass().getName()+".failed10",
158                             "FAILED [AS-EJB pm-descriptors] : pm-inuse {0} is not defined in pm-descriptors"));
159                         oneFailed=true;
160                     }
161                 }else{
162                     result.addErrorDetails(smh.getLocalString
163                         ("tests.componentNameConstructor",
164             "For [ {0} ]",
165             new Object JavaDoc[] {compName.toString()}));
166                     result.failed(smh.getLocalString(getClass().getName()+".failed11",
167                         "FAILED [AS-EJB pm-descriptors] : pm-descriptor is not defined in pm-descriptors"));
168                     oneFailed=true;
169                 }
170             }else{
171                 result.addNaDetails(smh.getLocalString
172             ("tests.componentNameConstructor",
173             "For [ {0} ]",
174             new Object JavaDoc[] {compName.toString()}));
175                 result.notApplicable(smh.getLocalString(getClass().getName()+".notApplicable",
176                     "NOT APPLICABLE [AS-EJB enterprise-beans] : pm-descriptors Element not defined"));
177             }
178             if(oneFailed)
179                 result.setStatus(Result.FAILED);
180             else if(oneWarning)
181                 result.setStatus(Result.WARNING);
182         }catch(Exception JavaDoc ex){
183             result.addErrorDetails(smh.getLocalString
184                 ("tests.componentNameConstructor",
185         "For [ {0} ]",
186         new Object JavaDoc[] {compName.toString()}));
187             result.failed(smh.getLocalString(getClass().getName()+".notRun",
188                 "NOT RUN [AS-EJB] Could not create descriptor Object."));
189         }
190         return result;
191     }
192     
193     /**
194      * @param i int
195      * @param result Result
196      * @param idVerMap Map
197      * @param descriptor EjbDescriptor */

198     protected void testPmDescriptor(int i, Result result, Map<String JavaDoc, String JavaDoc> idVerMap, EjbDescriptor descriptor){
199         try{
200             String JavaDoc value = null;
201             //pm-identifier
202
String JavaDoc pmIdentifier = getXPathValue("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-descriptor[\""+i+"\"]/pm-identifier");
203             if(pmIdentifier==null || pmIdentifier.length()==0){
204                 result.addErrorDetails(smh.getLocalString
205                     ("tests.componentNameConstructor",
206             "For [ {0} ]",
207             new Object JavaDoc[] {compName.toString()}));
208                 result.failed(smh.getLocalString(getClass().getName()+".failed2",
209                     "FAILED [AS-EJB pm-descriptor] : pm-identifier cannot be an empty string"));
210                 oneFailed=true;
211             }else{
212                 result.addGoodDetails(smh.getLocalString
213                     ("tests.componentNameConstructor",
214                     "For [ {0} ]",
215                     new Object JavaDoc[] {compName.toString()}));
216                 result.passed(smh.getLocalString(getClass().getName()+".passed2",
217                     "PASSED [AS-EJB pm-descriptor] : pm-identifier is {0}",
218                     new Object JavaDoc[]{pmIdentifier}));
219             }
220             
221             //pm-version
222
String JavaDoc pmVersion = getXPathValue("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-descriptor[\""+i+"\"]/pm-version");
223             if(pmVersion==null || pmVersion.length()==0){
224                 result.addErrorDetails(smh.getLocalString
225                         ("tests.componentNameConstructor",
226             "For [ {0} ]",
227             new Object JavaDoc[] {compName.toString()}));
228                 result.failed(smh.getLocalString(getClass().getName()+".failed3",
229                     "FAILED [AS-EJB pm-descritor] : pm-version cannot be an empty string"));
230                 oneFailed=true;
231             }else{
232                 result.addGoodDetails(smh.getLocalString
233                     ("tests.componentNameConstructor",
234                     "For [ {0} ]",
235                     new Object JavaDoc[] {compName.toString()}));
236                 result.passed(smh.getLocalString(getClass().getName()+".passed3",
237                     "PASSED [AS-EJB pm-descriptor] : pm-version is {0}",
238                     new Object JavaDoc[]{pmVersion}));
239             }
240
241             if (pmIdentifier!=null && pmVersion!=null)
242                 idVerMap.put(pmIdentifier,pmVersion);
243         
244             //pm-config
245
value = getXPathValue("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-descriptor[\""+i+"\"]/pm-config");
246             if(value!=null){
247                 ////// //4698035
248
if(value.length()==0){
249                     result.addErrorDetails(smh.getLocalString
250                         ("tests.componentNameConstructor",
251                         "For [ {0} ]",
252                         new Object JavaDoc[] {compName.toString()}));
253                     oneFailed = true;
254                     result.failed(smh.getLocalString(getClass().getName()+".failed4",
255                         "FAILED [AS-EJB pm-descritor] : pm-config cannot be an empty string"));
256                 }else{
257 // File f = Verifier.getArchiveFile(descriptor.getEjbBundleDescriptor().getModuleDescriptor().getArchiveUri());
258
JarFile jarFile = null;
259                     InputStream deploymentEntry=null;
260                     try{
261 // if (f==null){
262
String JavaDoc uri = getAbstractArchiveUri(descriptor);
263                             try {
264                                 FileArchive arch = new FileArchive();
265                                 arch.open(uri);
266                                 deploymentEntry = arch.getEntry(value);
267                             }catch (Exception JavaDoc e) { }
268 // }else{
269
// try{
270
// jarFile = new JarFile(f);
271
// ZipEntry deploymentEntry1 = jarFile.getEntry(value);
272
// if (deploymentEntry1 != null)
273
// deploymentEntry = jarFile.getInputStream(deploymentEntry1);
274
// }catch (Exception e) { }
275
// }
276

277                         if(deploymentEntry !=null){
278                             result.addGoodDetails(smh.getLocalString
279                                 ("tests.componentNameConstructor",
280                                 "For [ {0} ]",
281                                 new Object JavaDoc[] {compName.toString()}));
282                             result.passed(smh.getLocalString(getClass().getName()+".passed4",
283                                 "PASSED [AS-EJB pm-descriptor] : pm-config is {0}",
284                                 new Object JavaDoc[]{value}));
285                         }else{
286                             result.addWarningDetails(smh.getLocalString
287                                 ("tests.componentNameConstructor",
288                                 "For [ {0} ]",
289                                 new Object JavaDoc[] {compName.toString()}));
290                             oneWarning=true;
291                             result.warning(smh.getLocalString(getClass().getName()+".warning3",
292                                 "WARNING [AS-EJB pm-descriptor] : config file {0} pointed in pm-config is not present in the jar file",
293                                 new Object JavaDoc[]{value}));
294                         }
295                     }catch(Exception JavaDoc e){}
296                     finally{
297                         try {
298                             if (jarFile != null)
299                                 jarFile.close();
300                             if (deploymentEntry != null)
301                                 deploymentEntry.close();
302                         }catch (Exception JavaDoc x) {}
303                     }
304
305                 }
306                 /////////
307
}
308
309             //pm-class-generator
310
value = getXPathValue("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-descriptor[\""+i+"\"]/pm-class-generator");
311             if (value==null || value.length()==0 ){
312                 //check for spec version accordingly give error or warning
313
Float JavaDoc specVer = getRuntimeSpecVersion();
314                 if ((Float.compare(specVer.floatValue(), (new Float JavaDoc("2.1")).floatValue()) >= 0)) {
315                     oneFailed=true;
316                     result.addErrorDetails(smh.getLocalString
317                         ("tests.componentNameConstructor",
318                         "For [ {0} ]",
319                         new Object JavaDoc[] {compName.toString()}));
320                     result.failed(smh.getLocalString(getClass().getName()+".failed13",
321                         "FAILED [AS-EJB pm-descriptor] : pm-class-generator cannot be empty."));
322                 }
323             }else{
324                 if(value.trim().indexOf(" ") != -1){
325                     oneFailed=true;
326                     result.addErrorDetails(smh.getLocalString
327                         ("tests.componentNameConstructor",
328                         "For [ {0} ]",
329                         new Object JavaDoc[] {compName.toString()}));
330                     result.failed(smh.getLocalString(getClass().getName()+".failed7",
331                         "FAILED [AS-EJB pm-descriptor] : pm-class-generator class name is invalid"));
332                 }else{
333                     result.addGoodDetails(smh.getLocalString
334                         ("tests.componentNameConstructor",
335                         "For [ {0} ]",
336                         new Object JavaDoc[] {compName.toString()}));
337                     result.passed(smh.getLocalString(getClass().getName()+".passed5",
338                         "PASSED [AS-EJB pm-descriptor] : pm-class-generator is {0}",
339                         new Object JavaDoc[]{value}));
340                 }
341             }
342
343             //pm-mapping-factory
344
value = getXPathValue("sun-ejb-jar/enterprise-beans/pm-descriptors/pm-descriptor[\""+i+"\"]/pm-mapping-factory");
345             if (value != null){
346                 if(value.trim().indexOf(" ") != -1){
347                     result.addErrorDetails(smh.getLocalString
348                         ("tests.componentNameConstructor",
349                         "For [ {0} ]",
350                         new Object JavaDoc[] {compName.toString()}));
351                     oneFailed=true;
352                     result.failed(smh.getLocalString(getClass().getName()+".failed8",
353                         "FAILED [AS-EJB pm-descriptor] : pm-mapping-factory class name is invalid"));
354                 }else{
355                     if(value.trim().length()==0){
356                         result.addErrorDetails(smh.getLocalString
357                             ("tests.componentNameConstructor",
358                             "For [ {0} ]",
359                             new Object JavaDoc[] {compName.toString()}));
360                         oneFailed=true;
361                         result.failed(smh.getLocalString(getClass().getName()+".failed6",
362                             "FAILED [AS-EJB pm-descritor] : pm-pm-mapping-factory cannot be an empty string"));
363                     }else{
364                         result.addGoodDetails(smh.getLocalString
365                             ("tests.componentNameConstructor",
366                             "For [ {0} ]",
367                             new Object JavaDoc[] {compName.toString()}));
368                         result.passed(smh.getLocalString(getClass().getName()+".passed6",
369                             "PASSED [AS-EJB pm-descriptor] : pm-mapping-factory is {0}",
370                             new Object JavaDoc[]{value}));
371                     }
372                 }
373             }
374         }catch(Exception JavaDoc ex){
375             oneFailed = true;
376             result.failed(smh.getLocalString(getClass().getName()+".notRun",
377                 "NOT RUN [AS-EJB] Could not create descriptor Object."));
378         }finally{
379         }
380     }
381 }
382
Popular Tags