1 23 24 package com.sun.enterprise.tools.verifier.tests.ejb.entity.ejbql; 25 26 import com.sun.jdo.spi.persistence.support.ejb.ejbqlc.EJBQLC; 27 import com.sun.jdo.spi.persistence.support.ejb.ejbqlc.EJBQLException; 28 29 import com.sun.enterprise.deployment.PersistenceDescriptor; 30 import com.sun.enterprise.deployment.EjbDescriptor; 31 import com.sun.enterprise.deployment.EjbCMPEntityDescriptor; 32 import com.sun.enterprise.deployment.QueryDescriptor; 33 import com.sun.enterprise.deployment.MethodDescriptor; 34 import com.sun.enterprise.tools.verifier.Result; 35 import com.sun.enterprise.tools.verifier.StringManagerHelper; 36 import com.sun.enterprise.util.LocalStringManagerImpl; 37 import java.lang.reflect.Method ; 38 import java.util.Iterator ; 39 import com.sun.enterprise.tools.verifier.tests.*; 40 41 42 49 public class EjbQLChecker { 50 51 56 protected static final LocalStringManagerImpl smh = 57 StringManagerHelper.getLocalStringsManager(); 58 59 70 public static boolean checkSyntax (EjbDescriptor ejbDesc, 71 EJBQLC ejbqlDriver, Result result, String ownerClassName) { 72 73 boolean hasError = false; 74 String query = null; 75 PersistenceDescriptor desc = ((EjbCMPEntityDescriptor)ejbDesc).getPersistenceDescriptor(); 76 77 for (Iterator it = desc.getQueriedMethods().iterator(); it.hasNext();) { 78 MethodDescriptor method = (MethodDescriptor) it.next(); 79 try { 80 QueryDescriptor qDesc = desc.getQueryFor(method); 81 query = qDesc.getQuery(); 82 83 if (qDesc.getIsEjbQl()) { 84 Method m = method.getMethod(ejbDesc); 85 86 int retypeMapping = mapRetType(qDesc.getReturnTypeMapping()); 87 88 boolean finder = false; 89 90 if ((method.getName()).startsWith("find")) { 91 finder = true; 92 retypeMapping = 2; 93 } 94 95 ejbqlDriver.compile(query, m, retypeMapping, finder, ejbDesc.getName()); 96 } 97 } catch (EJBQLException ex) { 98 ex.printStackTrace(); 99 if (!hasError) { 100 hasError = true; 101 } 102 103 result.addErrorDetails 104 (smh.getLocalString(ownerClassName + ".parseError", 105 "Error: [ {0} ] has parsing error(s)", 106 new Object [] {query})); 107 result.addErrorDetails 108 (smh.getLocalString(ownerClassName + ".SAXParseException", 109 "Exception occured : [{0}]", 110 new Object [] {ex.toString()})); 111 } 112 113 } 114 if (hasError == false) { 115 result.addGoodDetails 116 (smh.getLocalString(ownerClassName + ".passed", 117 " Syntax and Semantics of the Queries are correct", 118 new Object [] {})); 119 } 120 return hasError; 121 } 122 123 private static int mapRetType(int rettype) { 124 125 switch(rettype) { 126 127 case 0 : return 2; 128 case 1 : return 0; 129 case 2 : return 1; 130 default: return 2; 131 132 } 133 134 } 135 136 } 137 | Popular Tags |