User: dsundstrom Date: 02/02/26 15:47:10 Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCEJBQLQuery.java Log: Changed to use new JDBCEJBQLCompiler based on JavaCC. Revision Changes Path 1.6 +25 -37 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCEJBQLQuery.java Index: JDBCEJBQLQuery.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCEJBQLQuery.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- JDBCEJBQLQuery.java 22 Feb 2002 04:24:55 -0000 1.5 +++ JDBCEJBQLQuery.java 26 Feb 2002 23:47:10 -0000 1.6 @@ -8,12 +8,7 @@ package org.jboss.ejb.plugins.cmp.jdbc; import org.jboss.deployment.DeploymentException; -import org.jboss.ejb.plugins.cmp.ejbql.Assembly; -import org.jboss.ejb.plugins.cmp.ejbql.Parser; -import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge; -import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge; -import org.jboss.ejb.plugins.cmp.jdbc.ejbql.EJBQLParser; -import org.jboss.ejb.plugins.cmp.jdbc.ejbql.SQLTarget; +import org.jboss.ejb.plugins.cmp.ejbql.Catalog; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQlQueryMetaData; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaData; @@ -21,7 +16,7 @@ * This class generates a query from EJB-QL. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ public class JDBCEJBQLQuery extends JDBCAbstractQueryCommand { @@ -32,44 +27,37 @@ super(manager, q); JDBCQlQueryMetaData metadata = (JDBCQlQueryMetaData)q; - getLog().debug("EQL-QL: "+metadata.getEjbQl()); - - // get a parser - Parser ejbql = new EJBQLParser().ejbqlQuery(); - - // initialize the assembly - Assembly a = new Assembly(metadata.getEjbQl()); - a.setTarget(new SQLTarget( - q.getMethod(), - manager.getJDBCTypeFactory(), - manager.getContainer().getEjbModule(), - q.getReadAhead())); - - // match the query - a = ejbql.soleMatch(a); - if(a == null) { - throw new DeploymentException("Unable to parse EJB-QL: " + - metadata.getEjbQl()); + if(getLog().isDebugEnabled()) { + getLog().debug("EJB-QL: " + metadata.getEjbQl()); } - // get the final target - SQLTarget target = (SQLTarget)a.getTarget(); + JDBCEJBQLCompiler compiler = new JDBCEJBQLCompiler( + (Catalog)manager.getApplicationData("CATALOG")); + + try { + compiler.compileEJBQL( + metadata.getEjbQl(), + metadata.getMethod().getReturnType(), + metadata.getMethod().getParameterTypes(), + metadata.getReadAhead()); + } catch(Throwable t) { + throw new DeploymentException("Error compiling ejbql", t); + } // set the sql - setSQL(target.toSQL()); + if(getLog().isDebugEnabled()) { + getLog().debug("SQL:\r\n" + compiler.getSQL()); + } + setSQL(compiler.getSQL()); - // select bridge object - Object selectBridgeObject = target.getSelectObject(); - if(selectBridgeObject instanceof JDBCEntityBridge) { - setSelectEntity((JDBCEntityBridge)selectBridgeObject); - } else if(selectBridgeObject instanceof JDBCCMPFieldBridge) { - setSelectField((JDBCCMPFieldBridge)selectBridgeObject); + // set select object + if(compiler.isSelectEntity()) { + setSelectEntity(compiler.getSelectEntity()); } else { - throw new IllegalStateException("Select bridge object is instance " + - "of unknown type: selectBridgeObject=" + selectBridgeObject); + setSelectField(compiler.getSelectField()); } - + // get the parameter order - setParameterList(target.getInputParameters()); + setParameterList(compiler.getInputParameters()); } }
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development