[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