[jboss-cvs] JBossAS SVN: r59640 - in branches/JBoss_4_0_4_GA_JBAS-3983: server/src/main/org/jboss/ejb/plugins/cmp/jdbc and 8 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jan 15 04:39:21 EST 2007
Author: alex.loubyansky at jboss.com
Date: 2007-01-15 04:39:08 -0500 (Mon, 15 Jan 2007)
New Revision: 59640
Added:
branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/main/org/jboss/test/cmp2/enums/test/JDBC2PmEnumUnitTestCase.java
branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/main/org/jboss/test/cmp2/jbas3541/JDBC2PmJBAS3541UnitTestCase.java
branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/enums/META-INF/jdbc2pm-jboss.xml
branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/jbas3541/META-INF/jdbc2pm-jboss.xml
Modified:
branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/bridge/CMPFieldBridge.java
branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/EJBQLToSQL92Compiler.java
branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCCMPFieldBridge.java
branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc2/bridge/JDBCCMPFieldBridge2.java
branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/imports/sections/cmp.xml
branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/ejbselect/META-INF/jdbc2pm-jboss.xml
Log:
JBAS-3983
Modified: branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/bridge/CMPFieldBridge.java
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/bridge/CMPFieldBridge.java 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/bridge/CMPFieldBridge.java 2007-01-15 09:39:08 UTC (rev 59640)
@@ -21,6 +21,8 @@
*/
package org.jboss.ejb.plugins.cmp.bridge;
-public interface CMPFieldBridge extends FieldBridge {
+import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCFieldBridge;
+
+public interface CMPFieldBridge extends JDBCFieldBridge {
public Class getFieldType();
}
Modified: branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/EJBQLToSQL92Compiler.java
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/EJBQLToSQL92Compiler.java 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/EJBQLToSQL92Compiler.java 2007-01-15 09:39:08 UTC (rev 59640)
@@ -34,11 +34,13 @@
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCFieldBridge;
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractEntityBridge;
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMRFieldBridge;
+import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCReadAheadMetaData;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCTypeMappingMetaData;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationMetaData;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCFunctionMappingMetaData;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaData;
+import org.jboss.ejb.plugins.cmp.bridge.CMPFieldBridge;
import org.jboss.ejb.EntityPersistenceStore;
import org.jboss.logging.Logger;
@@ -903,7 +905,61 @@
public Object visit(ASTValueClassComparison node, Object data)
{
- throw new IllegalStateException("Value class comparison is not yet supported.");
+ StringBuffer buf = (StringBuffer) data;
+
+ boolean not = (node.opp.equals(SQLUtil.NOT_EQUAL));
+ String comparison = node.opp;
+ buf.append('(');
+ if(not)
+ {
+ buf.append(SQLUtil.NOT).append('(');
+ comparison = "=";
+ }
+
+ // setup the from path
+ ASTPath fromPath = (ASTPath) node.jjtGetChild(0);
+ addInnerJoinPath(fromPath);
+ String fromAlias = aliasManager.getAlias(fromPath.getPath(fromPath.size() - 2));
+ CMPFieldBridge fromCMPField = (CMPFieldBridge) fromPath.getCMPField();
+
+ Node toNode = node.jjtGetChild(1);
+ if(toNode instanceof ASTParameter)
+ {
+ ASTParameter toParam = (ASTParameter) toNode;
+
+ // can only compare like kind entities
+ Class parameterType = getParameterType(toParam.number);
+ if(!(fromCMPField.getFieldType().equals(parameterType)))
+ {
+ throw new IllegalStateException("Only like types can be " +
+ "compared: from CMP field=" +
+ fromCMPField.getFieldType() +
+ " to parameter=" + parameterType);
+ }
+
+ inputParameters.addAll(QueryParameter.createParameters(toParam.number - 1, fromCMPField));
+ SQLUtil.getWhereClause(fromCMPField.getJDBCType(), fromAlias, comparison, buf);
+ }
+ else
+ {
+ ASTPath toPath = (ASTPath) toNode;
+ addInnerJoinPath(toPath);
+ String toAlias = aliasManager.getAlias(toPath.getPath(toPath.size() - 2));
+ JDBCCMPFieldBridge toCMPField = (JDBCCMPFieldBridge) toPath.getCMPField();
+
+ // can only compare like kind entities
+ if(!(fromCMPField.getFieldType().equals(toCMPField.getFieldType())))
+ {
+ throw new IllegalStateException("Only like types can be " +
+ "compared: from CMP field=" +
+ fromCMPField.getFieldType() +
+ " to CMP field=" + toCMPField.getFieldType());
+ }
+
+ SQLUtil.getSelfCompareWhereClause(fromCMPField, toCMPField, fromAlias, toAlias, comparison, buf);
+ }
+
+ return (not ? buf.append(')') : buf).append(')');
}
public Object visit(ASTEntityComparison node, Object data)
@@ -1171,18 +1227,24 @@
+ "Should have been handled at a higher level.");
}
+ JDBCFieldBridge cmpField = (JDBCFieldBridge) node.getCMPField();
+
// make sure this is mapped to a single column
switch(node.type)
{
case EJBQLTypes.ENTITY_TYPE:
case EJBQLTypes.VALUE_CLASS_TYPE:
+ if(cmpField.getJDBCType().hasMapper() ||
+ cmpField.getJDBCType().getParameterSetter() != null)
+ {
+ break;
+ }
case EJBQLTypes.UNKNOWN_TYPE:
throw new IllegalStateException("Can not visit multi-column path " +
"node. Should have been handled at a higher level.");
}
addLeftJoinPath(node);
- JDBCFieldBridge cmpField = (JDBCFieldBridge) node.getCMPField();
String alias = aliasManager.getAlias(node.getPath(node.size() - 2));
SQLUtil.getColumnNamesClause(cmpField, alias, buf);
return data;
Modified: branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCCMPFieldBridge.java
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCCMPFieldBridge.java 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCCMPFieldBridge.java 2007-01-15 09:39:08 UTC (rev 59640)
@@ -27,7 +27,6 @@
import java.sql.ResultSet;
import org.jboss.ejb.plugins.cmp.bridge.CMPFieldBridge;
-import org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager;
import org.jboss.ejb.plugins.cmp.jdbc.LockingStrategy;
import org.jboss.ejb.EntityEnterpriseContext;
@@ -48,7 +47,7 @@
*
* @version $Revision$
*/
-public interface JDBCCMPFieldBridge extends JDBCFieldBridge, CMPFieldBridge
+public interface JDBCCMPFieldBridge extends CMPFieldBridge
{
/**
* The index of the field among the table fields.
Modified: branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc2/bridge/JDBCCMPFieldBridge2.java
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc2/bridge/JDBCCMPFieldBridge2.java 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/server/src/main/org/jboss/ejb/plugins/cmp/jdbc2/bridge/JDBCCMPFieldBridge2.java 2007-01-15 09:39:08 UTC (rev 59640)
@@ -28,7 +28,6 @@
import org.jboss.ejb.plugins.cmp.jdbc.JDBCType;
import org.jboss.ejb.plugins.cmp.jdbc.JDBCEntityPersistenceStore;
import org.jboss.ejb.plugins.cmp.jdbc.JDBCResultSetReader;
-import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCFieldBridge;
import org.jboss.ejb.EntityEnterpriseContext;
import org.jboss.deployment.DeploymentException;
import org.jboss.logging.Logger;
@@ -44,7 +43,7 @@
* @version <tt>$Revision$</tt>
*/
public class JDBCCMPFieldBridge2
- implements CMPFieldBridge, JDBCFieldBridge
+ implements CMPFieldBridge
{
private final JDBCEntityBridge2 entity;
private final int rowIndex;
Modified: branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/imports/sections/cmp.xml
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/imports/sections/cmp.xml 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/imports/sections/cmp.xml 2007-01-15 09:39:08 UTC (rev 59640)
@@ -322,6 +322,28 @@
<zipfileset src="${junit.junit.lib}/junit.jar"
includes="junit/**/*.*"/>
</jar>
+ <copy file="${build.resources}/cmp2/jbas3541/META-INF/jboss.xml"
+ tofile="${build.resources}/cmp2/jbas3541/META-INF/original-jboss.xml"/>
+ <copy file="${build.resources}/cmp2/jbas3541/META-INF/jdbc2pm-jboss.xml"
+ tofile="${build.resources}/cmp2/jbas3541/META-INF/jboss.xml"
+ overwrite="true"/>
+ <jar jarfile="${build.lib}/cmp2-jdbc2pm-jbas3541.jar">
+ <fileset dir="${build.classes}">
+ <patternset refid="common.test.client.classes"/>
+ <include name="org/jboss/test/cmp2/jbas3541/**"/>
+ </fileset>
+ <fileset dir="${build.resources}/cmp2/jbas3541">
+ <include name="**/*.*"/>
+ </fileset>
+ <zipfileset src="${junitejb.junitejb.lib}/junitejb.jar"
+ includes="net/**/*.*"/>
+ <zipfileset src="${junit.junit.lib}/junit.jar"
+ includes="junit/**/*.*"/>
+ </jar>
+ <copy
+ file="${build.resources}/cmp2/jbas3541/META-INF/original-jboss.xml"
+ tofile="${build.resources}/cmp2/jbas3541/META-INF/jboss.xml"
+ overwrite="true"/>
<!-- build cmp2-jbas979.jar -->
<jar destfile="${build.lib}/cmp2-jbas979.jar">
@@ -408,6 +430,28 @@
<patternset refid="ejbrunner.set"/>
</zipfileset>
</jar>
+ <copy file="${build.resources}/cmp2/enums/META-INF/jboss.xml"
+ tofile="${build.resources}/cmp2/enums/META-INF/original-jboss.xml"/>
+ <copy file="${build.resources}/cmp2/enums/META-INF/jdbc2pm-jboss.xml"
+ tofile="${build.resources}/cmp2/enums/META-INF/jboss.xml"
+ overwrite="true"/>
+ <jar jarfile="${build.lib}/cmp2-jdbc2pm-enum.jar">
+ <fileset dir="${build.classes}">
+ <patternset refid="common.test.client.classes"/>
+ <include name="org/jboss/test/cmp2/enums/**"/>
+ </fileset>
+ <fileset dir="${build.resources}/cmp2/enums">
+ <include name="**/*.*"/>
+ </fileset>
+ <zipfileset src="${junitejb.junitejb.lib}/junitejb.jar"
+ includes="net/**/*.*"/>
+ <zipfileset src="${junit.junit.lib}/junit.jar"
+ includes="junit/**/*.*"/>
+ </jar>
+ <copy
+ file="${build.resources}/cmp2/enums/META-INF/original-jboss.xml"
+ tofile="${build.resources}/cmp2/enums/META-INF/jboss.xml"
+ overwrite="true"/>
<!-- build cmp2-cmrtansaction.jar -->
<jar destfile="${build.lib}/cmp2-cmrtransaction.jar">
Added: branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/main/org/jboss/test/cmp2/enums/test/JDBC2PmEnumUnitTestCase.java
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/main/org/jboss/test/cmp2/enums/test/JDBC2PmEnumUnitTestCase.java 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/main/org/jboss/test/cmp2/enums/test/JDBC2PmEnumUnitTestCase.java 2007-01-15 09:39:08 UTC (rev 59640)
@@ -0,0 +1,43 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cmp2.enums.test;
+
+import junit.framework.Test;
+import org.jboss.test.JBossTestCase;
+
+/**
+ *
+ * @author <a href="mailto:alex at jboss.org">Alexey Loubyansky</a>
+ */
+public class JDBC2PmEnumUnitTestCase
+ extends EnumUnitTestCase
+{
+ public static Test suite() throws Exception
+ {
+ return JBossTestCase.getDeploySetup(JDBC2PmEnumUnitTestCase.class, "cmp2-jdbc2pm-enum.jar");
+ }
+
+ public JDBC2PmEnumUnitTestCase(String s)
+ {
+ super(s);
+ }
+}
Added: branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/main/org/jboss/test/cmp2/jbas3541/JDBC2PmJBAS3541UnitTestCase.java
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/main/org/jboss/test/cmp2/jbas3541/JDBC2PmJBAS3541UnitTestCase.java 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/main/org/jboss/test/cmp2/jbas3541/JDBC2PmJBAS3541UnitTestCase.java 2007-01-15 09:39:08 UTC (rev 59640)
@@ -0,0 +1,43 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cmp2.jbas3541;
+
+import org.jboss.test.JBossTestCase;
+import junit.framework.Test;
+
+/**
+ * @author <a href="mailto:alex at jboss.org">Alexey Loubyansky</a>
+ * @version <tt>$Revision: 44174 $</tt>
+ */
+public class JDBC2PmJBAS3541UnitTestCase
+ extends JBAS3541UnitTestCase
+{
+ public static Test suite() throws Exception
+ {
+ return JBossTestCase.getDeploySetup(JDBC2PmJBAS3541UnitTestCase.class, "cmp2-jdbc2pm-jbas3541.jar");
+ }
+
+ public JDBC2PmJBAS3541UnitTestCase(String methodName)
+ {
+ super(methodName);
+ }
+}
Modified: branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/ejbselect/META-INF/jdbc2pm-jboss.xml
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/ejbselect/META-INF/jdbc2pm-jboss.xml 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/ejbselect/META-INF/jdbc2pm-jboss.xml 2007-01-15 09:39:08 UTC (rev 59640)
@@ -13,12 +13,12 @@
<entity>
<ejb-name>B</ejb-name>
<local-jndi-name>BLocal</local-jndi-name>
- <container-name>cmp2.x jdbc2 pm</container-name>
+ <configuration-name>cmp2.x jdbc2 pm</configuration-name>
</entity>
<entity>
<ejb-name>A</ejb-name>
<local-jndi-name>ALocal</local-jndi-name>
- <container-name>cmp2.x jdbc2 pm</container-name>
+ <configuration-name>cmp2.x jdbc2 pm</configuration-name>
</entity>
</enterprise-beans>
</jboss>
Added: branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/enums/META-INF/jdbc2pm-jboss.xml
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/enums/META-INF/jdbc2pm-jboss.xml 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/enums/META-INF/jdbc2pm-jboss.xml 2007-01-15 09:39:08 UTC (rev 59640)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
+
+<jboss>
+
+ <enterprise-beans>
+
+ <entity>
+ <ejb-name>Child</ejb-name>
+ <local-jndi-name>ChildLocal</local-jndi-name>
+ <configuration-name>cmp2.x jdbc2 pm</configuration-name>
+ </entity>
+
+ <session>
+ <ejb-name>Facade</ejb-name>
+ <jndi-name>Facade</jndi-name>
+ </session>
+ <session>
+ <ejb-name>EJBTestRunnerEJB</ejb-name>
+ <jndi-name>ejb/EJBTestRunner</jndi-name>
+ </session>
+
+ </enterprise-beans>
+
+</jboss>
Added: branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/jbas3541/META-INF/jdbc2pm-jboss.xml
===================================================================
--- branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/jbas3541/META-INF/jdbc2pm-jboss.xml 2007-01-15 08:33:20 UTC (rev 59639)
+++ branches/JBoss_4_0_4_GA_JBAS-3983/testsuite/src/resources/cmp2/jbas3541/META-INF/jdbc2pm-jboss.xml 2007-01-15 09:39:08 UTC (rev 59640)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<jboss>
+ <enterprise-beans>
+ <entity>
+ <ejb-name>A</ejb-name>
+ <local-jndi-name>ALocal</local-jndi-name>
+ <configuration-name>cmp2.x jdbc2 pm</configuration-name>
+ </entity>
+ <session>
+ <ejb-name>EJBTestRunnerEJB</ejb-name>
+ <jndi-name>ejb/EJBTestRunner</jndi-name>
+ </session>
+ </enterprise-beans>
+</jboss>
More information about the jboss-cvs-commits
mailing list