1 23 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 48 public class CheckAdminObjectJavaBean 49 extends ConnectorTest 50 implements ConnectorCheck 51 { 52 53 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 [] {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 impl = adminObj.getAdminObjectClass(); 84 Class implClass = null; 85 try 86 { 87 implClass = Class.forName(impl, false, getVerifierContext().getClassLoader()); 88 } 89 catch(ClassNotFoundException e) 90 { 91 result.addErrorDetails(smh.getLocalString 92 ("tests.componentNameConstructor", 93 "For [ {0} ]", 94 new Object [] {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 [] {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 .class); 107 } 108 catch (IntrospectionException ie) { 109 oneFailed = true; 110 result.addErrorDetails(smh.getLocalString 111 ("tests.componentNameConstructor", 112 "For [ {0} ]", 113 new Object [] {compName.toString()})); 114 result.failed(smh.getLocalString 115 (getClass().getName() + ".failed", 116 "Error: The adminobject-class [ {0} ] is not JavaBeans compliant", 117 new Object [] {impl} )); 118 return result; 119 } 120 121 PropertyDescriptor[] properties = bi.getPropertyDescriptors(); 122 Hashtable<String , PropertyDescriptor> props = new Hashtable<String , 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 name = Introspector.decapitalize(envProp.getName()); 131 String 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 [] {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 [] {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 [] {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 [] {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 [] {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 |