1 23 package com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2; 24 25 import java.lang.reflect.Method ; 26 import java.util.*; 27 import com.sun.enterprise.deployment.*; 28 import com.sun.enterprise.tools.verifier.Result; 29 import com.sun.enterprise.tools.verifier.*; 30 import java.lang.ClassLoader ; 31 import com.sun.enterprise.tools.verifier.tests.*; 32 33 40 public class CmpFieldsAccessorExposition extends CMPTest { 41 Result result = null; 42 ComponentNameConstructor compName = null; 43 44 50 public Result check(EjbCMPEntityDescriptor descriptor) { 51 52 result = getInitializedResult(); 53 boolean oneFailed = false; 54 compName = getVerifierContext().getComponentNameConstructor(); 55 56 if (descriptor.getRemoteClassName() != null && !((descriptor.getRemoteClassName()).equals(""))) 57 oneFailed = commonToBothInterfaces(descriptor.getRemoteClassName(),descriptor); 58 if(oneFailed == false) { 59 if (descriptor.getLocalClassName() != null && !((descriptor.getLocalClassName()).equals(""))) 60 oneFailed = commonToBothInterfaces(descriptor.getLocalClassName(),descriptor); 61 } 62 if (oneFailed) 63 result.setStatus(Result.WARNING); 64 else 65 result.setStatus(Result.PASSED); 66 return result; 67 } 68 69 75 76 private boolean commonToBothInterfaces(String remote, EjbDescriptor descriptor) { 77 boolean oneFailed = false; 78 try { 79 Class c = Class.forName(remote, false, getVerifierContext().getClassLoader()); 80 boolean foundAtLeastOne = false; 81 82 try { 83 PersistentFieldInfo[] pkFieldInfos = ((EjbCMPEntityDescriptor)descriptor).getPersistenceDescriptor().getPkeyFieldInfo(); 85 for (int i=0;i<pkFieldInfos.length;i++) { 86 foundAtLeastOne = true; 87 PersistentFieldInfo info = pkFieldInfos[i]; 88 String setMethodName = "set" + Character.toUpperCase(info.name.charAt(0)) + info.name.substring(1); 90 Class parms[] = { info.type }; 91 Method setMethod = getMethod(c, setMethodName, parms ); 92 if (setMethod != null) { 93 result.addWarningDetails(smh.getLocalString 95 ("tests.componentNameConstructor", 96 "For [ {0} ]", 97 new Object [] {compName.toString()})); 98 result.addWarningDetails(smh.getLocalString 99 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CmpFieldsAccessorExposition.failed", 100 "Error : Primary key field set accessor method [ {0} ] is exposed through the component interface [ {1} ]", 101 new Object [] {info.name,remote})); 102 oneFailed = true; 103 } else { 104 result.addGoodDetails(smh.getLocalString 105 ("tests.componentNameConstructor", 106 "For [ {0} ]", 107 new Object [] {compName.toString()})); 108 result.addGoodDetails(smh.getLocalString 109 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CmpFieldsAccessorExposition.passed", 110 "Primary key field set accessor method [ {0} ] is not exposed through the component interface [ {1} ]", 111 new Object [] {info.name,remote})); 112 } 113 } 114 if (foundAtLeastOne == false) { 115 result.addGoodDetails(smh.getLocalString 116 ("tests.componentNameConstructor", 117 "For [ {0} ]", 118 new Object [] {compName.toString()})); 119 result.addGoodDetails(smh.getLocalString 120 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CmpFieldsAccessorExposition.notApplicable", 121 "No persistent fields found.", 122 new Object [] {})); 123 return oneFailed; 124 } 125 126 } catch (RuntimeException rt) { 127 result.addErrorDetails(smh.getLocalString 128 ("tests.componentNameConstructor", 129 "For [ {0} ]", 130 new Object [] {compName.toString()})); 131 result.failed(smh.getLocalString 132 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CmpFieldsAccessorExposition.failedException1", 133 "Exception occured while trying to access Primary key info in PersistenceDescriptor.", 134 new Object [] {})); 135 } 136 return oneFailed; 137 } catch (ClassNotFoundException e) { 138 Verifier.debug(e); 139 result.addErrorDetails(smh.getLocalString 140 ("tests.componentNameConstructor", 141 "For [ {0} ]", 142 new Object [] {compName.toString()})); 143 result.failed(smh.getLocalString 144 ("com.sun.enterprise.tools.verifier.tests.ejb.EjbTest.failedException", 145 "Error: [ {0} ] class not found.", 146 new Object [] {descriptor.getEjbClassName()})); 147 oneFailed = true; 148 return oneFailed; 149 150 } 151 } 152 } 153 | Popular Tags |