KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > enterprise > tools > verifier > tests > connector > admin > CheckAdminObjectJavaBean


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 /*
24  * CheckAdminObjectJavaBean.java
25  *
26  * Created on August 29, 2002
27  */

28
29 package com.sun.enterprise.tools.verifier.tests.connector.admin;
30
31 import com.sun.enterprise.tools.verifier.tests.connector.ConnectorTest;
32 import com.sun.enterprise.tools.verifier.tests.connector.ConnectorCheck;
33 import com.sun.enterprise.tools.verifier.Result;
34 import com.sun.enterprise.tools.verifier.*;
35 import com.sun.enterprise.deployment.ConnectorDescriptor;
36 import com.sun.enterprise.deployment.AdminObject;
37 import com.sun.enterprise.deployment.EnvironmentProperty;
38 import com.sun.enterprise.tools.verifier.tests.*;
39 import java.util.*;
40 import java.beans.*;
41
42 /**
43  * Test for each adminobject, that "adminobject-class" is a Java Bean.
44  *
45  * @author Anisha Malhotra
46  * @version
47  */

48 public class CheckAdminObjectJavaBean
49     extends ConnectorTest
50     implements ConnectorCheck
51 {
52
53   /** <p>
54    * Test for each adminobject, that "adminobject-class" is a Java Bean.
55    * </p>
56    *
57    * @param descriptor deployment descriptor for the rar file
58    * @return result object containing the result of the individual test
59    * performed
60    */

61   public Result check(ConnectorDescriptor descriptor) {
62
63     Result result = getInitializedResult();
64     ComponentNameConstructor compName =
65       getVerifierContext().getComponentNameConstructor();
66     if(!descriptor.hasAdminObjects())
67     {
68       result.addNaDetails(smh.getLocalString
69           ("tests.componentNameConstructor",
70            "For [ {0} ]",
71            new Object JavaDoc[] {compName.toString()}));
72       result.notApplicable(smh.getLocalString
73           ("com.sun.enterprise.tools.verifier.tests.connector.admin.notApp",
74            "Resource Adapter does not define any administered objects"));
75       return result;
76     }
77     Set adminObjects = descriptor.getAdminObjects();
78     boolean oneFailed = false;
79     Iterator iter = adminObjects.iterator();
80     while(iter.hasNext())
81     {
82       AdminObject adminObj = (AdminObject) iter.next();
83       String JavaDoc impl = adminObj.getAdminObjectClass();
84       Class JavaDoc implClass = null;
85       try
86       {
87         implClass = Class.forName(impl, false, getVerifierContext().getClassLoader());
88       }
89       catch(ClassNotFoundException JavaDoc e)
90       {
91         result.addErrorDetails(smh.getLocalString
92             ("tests.componentNameConstructor",
93              "For [ {0} ]",
94              new Object JavaDoc[] {compName.toString()}));
95         result.failed(smh.getLocalString
96             ("com.sun.enterprise.tools.verifier.tests.connector.admin.nonexist",
97              "Error: The class [ {0} ] as defined under adminobject-class in the deployment descriptor does not exist",
98              new Object JavaDoc[] {impl}));
99         return result;
100       }
101       Set configProps = adminObj.getConfigProperties();
102       Iterator propIter = configProps.iterator();
103       BeanInfo bi = null;
104       try
105       {
106         bi = Introspector.getBeanInfo(implClass, Object JavaDoc.class);
107       }
108       catch (IntrospectionException ie) {
109         oneFailed = true;
110         result.addErrorDetails(smh.getLocalString
111             ("tests.componentNameConstructor",
112              "For [ {0} ]",
113              new Object JavaDoc[] {compName.toString()}));
114         result.failed(smh.getLocalString
115             (getClass().getName() + ".failed",
116              "Error: The adminobject-class [ {0} ] is not JavaBeans compliant",
117              new Object JavaDoc[] {impl} ));
118         return result;
119       }
120
121       PropertyDescriptor[] properties = bi.getPropertyDescriptors();
122       Hashtable<String JavaDoc, PropertyDescriptor> props = new Hashtable<String JavaDoc, PropertyDescriptor>();
123       for(int i=0;i<properties.length;i++)
124       {
125         props.put(properties[i].getName(), properties[i]);
126       }
127       while(propIter.hasNext())
128       {
129         EnvironmentProperty envProp = (EnvironmentProperty) propIter.next();
130         String JavaDoc name = Introspector.decapitalize(envProp.getName());
131         String JavaDoc type = envProp.getType();
132
133         PropertyDescriptor propDesc = props.get(name);
134         if(propDesc != null)
135         {
136           if (propDesc.getReadMethod()==null || propDesc.getWriteMethod()==null)
137           {
138             oneFailed = true;
139             result.addErrorDetails(smh.getLocalString
140                 ("tests.componentNameConstructor",
141                  "For [ {0} ]",
142                  new Object JavaDoc[] {compName.toString()}));
143             result.failed(smh.getLocalString
144                 (getClass().getName() + ".failed1",
145                  "Error: The adminobject-class [ {0} ] does not provide accessor methods for [ {1} ].",
146                  new Object JavaDoc[] {impl, name} ));
147             return result;
148           }
149         }
150         else
151         {
152           oneFailed = true;
153           result.addErrorDetails(smh.getLocalString
154               ("tests.componentNameConstructor",
155                "For [ {0} ]",
156                new Object JavaDoc[] {compName.toString()}));
157           result.failed(smh.getLocalString
158               (getClass().getName() + ".failed1",
159                "Error: The adminobject-class [ {0} ] does not provide accessor methods for [ {1} ].",
160                new Object JavaDoc[] {impl, name} ));
161           return result;
162         }
163       }
164     }
165     if(!oneFailed)
166     {
167       result.addGoodDetails(smh.getLocalString
168           ("tests.componentNameConstructor",
169            "For [ {0} ]",
170            new Object JavaDoc[] {compName.toString()}));
171       result.passed(smh.getLocalString(getClass().getName() + ".passed",
172             "Success: Each adminobject-class is a Java Bean"));
173     }
174     return result;
175   }
176 }
177
Popular Tags