openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mik...@apache.org
Subject svn commit: r800847 - in /openjpa/trunk/openjpa-persistence-jdbc: ./ src/test/java/org/apache/openjpa/persistence/criteria/ src/test/java/org/apache/openjpa/persistence/embed/
Date Tue, 04 Aug 2009 15:36:19 GMT
Author: mikedd
Date: Tue Aug  4 15:36:18 2009
New Revision: 800847

URL: http://svn.apache.org/viewvc?rev=800847&view=rev
Log:
OPENJPA-1222: 
Enabling and refactoring Criteria testcases. The Criteria testcases use a static EMF which requires the entity model to be known up front - refactoring creates a separate EMF for the embeddable and joined models.

Added:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/EmbeddableDomainTestCase.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/JoinDomainTestCase.java   (with props)
Modified:
    openjpa/trunk/openjpa-persistence-jdbc/pom.xml
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJoinCondition.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/Item1.java

Modified: openjpa/trunk/openjpa-persistence-jdbc/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/pom.xml?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/pom.xml (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/pom.xml Tue Aug  4 15:36:18 2009
@@ -810,10 +810,9 @@
                         <!-- <exclude>org/apache/openjpa/persistence/lockmgr/*.java</exclude> -->
 						
                         <!-- ================================================================== -->
-						<!--  Critera & MetaModel tests are *temporarily* excluded to wait for  -->
+						<!--  MetaModel tests are *temporarily* excluded to wait for            -->
 						<!--  spec to stabilize on Result Processing API                        -->
 						<!-- ================================================================== --> 
-                        <exclude>org/apache/openjpa/persistence/criteria/*.java</exclude>
                         <exclude>org/apache/openjpa/persistence/meta/*.java</exclude>
                         
                         <!-- Exclude subclassing tests   -->

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java?rev=800847&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java Tue Aug  4 15:36:18 2009
@@ -0,0 +1,386 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ package org.apache.openjpa.persistence.criteria;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+import javax.persistence.criteria.CriteriaQuery;
+
+import junit.framework.TestCase;
+
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.sql.DBDictionary;
+import org.apache.openjpa.jdbc.sql.DerbyDictionary;
+import org.apache.openjpa.lib.jdbc.AbstractJDBCListener;
+import org.apache.openjpa.lib.jdbc.JDBCEvent;
+import org.apache.openjpa.lib.jdbc.JDBCListener;
+import org.apache.openjpa.lib.jdbc.ReportingSQLException;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
+import org.apache.openjpa.persistence.test.AllowFailure;
+
+public abstract class AbstractCriteriaTestCase extends TestCase {
+
+    protected abstract SQLAuditor getAuditor();
+
+    protected abstract OpenJPAEntityManagerFactorySPI getEntityManagerFactory();
+    
+    protected abstract EntityManager getEntityManager();
+
+    /**
+     * Create an entity manager factory for persistence unit <code>pu</code>. Put {@link #CLEAR_TABLES} in this list to
+     * tell the test framework to delete all table contents before running the tests.
+     * 
+     * @param props
+     *            list of persistent types used in testing and/or configuration values in the form
+     *            key,value,key,value...
+     */
+    protected OpenJPAEntityManagerFactorySPI createNamedEMF(Class<?>... types) {
+        Map<Object, Object> map = new HashMap<Object, Object>();
+        map.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true," + "SchemaAction='add')");
+        map.put("openjpa.jdbc.QuerySQLCache", "false");
+        map.put("openjpa.DynamicEnhancementAgent", "false");
+        map.put("openjpa.RuntimeUnenhancedClasses", "unsupported");
+        map.put("openjpa.Compatibility", "QuotedNumbersInQueries=true");
+        map.put("openjpa.jdbc.JDBCListeners", new JDBCListener[] { getAuditor() });
+
+        StringBuffer buf = new StringBuffer();
+        for (Class<?> c : types) {
+            if (buf.length() > 0)
+                buf.append(";");
+            buf.append(c.getName());
+        }
+
+        map.put("openjpa.MetaDataFactory", "jpa(Types=" + buf.toString() + ")");
+
+        Map<Object, Object> config = new HashMap<Object, Object>(System.getProperties());
+        config.putAll(map);
+        return (OpenJPAEntityManagerFactorySPI) Persistence.createEntityManagerFactory("test", config);
+    }
+
+    void setDictionary() {
+        JDBCConfiguration conf = (JDBCConfiguration) getEntityManagerFactory().getConfiguration();
+        DBDictionary dict = conf.getDBDictionaryInstance();
+        dict.requiresCastForComparisons = false;
+        dict.requiresCastForMathFunctions = false;
+    }
+
+    /**
+     * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality.
+     */
+    void assertEquivalence(CriteriaQuery<?> c, String jpql) {
+        assertEquivalence(c, jpql, null);
+    }
+
+    /**
+     * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality. Sets the
+     * supplied parameters, if any.
+     */
+    void assertEquivalence(CriteriaQuery<?> c, String jpql, String[] paramNames, Object[] params) {
+        Query cQ = getEntityManager().createQuery(c);
+        Query jQ = getEntityManager().createQuery(jpql);
+        setParameters(cQ, paramNames, params);
+        setParameters(jQ, paramNames, params);
+
+        executeAndCompareSQL(jpql, cQ, jQ);
+    }
+
+    /**
+     * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality.
+     */
+    void assertEquivalence(CriteriaQuery<?> c, String jpql, Object[] params) {
+        
+        Query cQ = getEntityManager().createQuery(c);
+        Query jQ = getEntityManager().createQuery(jpql);
+        setParameters(cQ, params);
+        setParameters(jQ, params);
+
+        executeAndCompareSQL(jpql, cQ, jQ);
+    }
+
+    /**
+     * Execute the two given queries. The first query originated from a JPQL string must be well-formed. The second
+     * query originated from a Criteria is being tested.
+     * 
+     * @param sqls
+     *            The target SQL for the queries will be filled-in the given array.
+     * @return true if both queries execute successfully.
+     */
+    void executeAndCompareSQL(String jpql, Query cQ, Query jQ) {
+        List<String> jSQL = null;
+        List<String> cSQL = null;
+        try {
+            jSQL = executeQueryAndCollectSQL(jQ);
+        } catch (Exception e) {
+            StringWriter w = new StringWriter();
+            e.printStackTrace(new PrintWriter(w));
+            fail("JPQL " + jpql + " failed to execute\r\n" + w);
+        }
+        getEntityManager().clear();
+        try {
+            cSQL = executeQueryAndCollectSQL(cQ);
+        } catch (Exception e) {
+            StringWriter w = new StringWriter();
+            e.printStackTrace(new PrintWriter(w));
+            fail("CriteriaQuery corresponding to " + jpql + " failed to execute\r\n" + w);
+        }
+
+        printSQL("Target SQL for JPQL", jSQL);
+        printSQL("Target SQL for CriteriaQuery", cSQL);
+        if (jSQL.size() != cSQL.size()) {
+            printSQL("Target SQL for JPQL", jSQL);
+            printSQL("Target SQL for CriteriaQuery", cSQL);
+            assertEquals("No. of SQL generated for JPQL and CriteriaQuery for " + jpql + " is different", jSQL.size(),
+                cSQL.size());
+        }
+
+        for (int i = 0; i < jSQL.size(); i++) {
+            if (!jSQL.get(i).equals(cSQL.get(i))) {
+                printSQL("Target SQL for JPQL", jSQL);
+                printSQL("Target SQL for CriteriaQuery", cSQL);
+                assertEquals(i + "-th SQL for JPQL and CriteriaQuery for " + jpql + " is different", jSQL.get(i), cSQL
+                    .get(i));
+            }
+        }
+    }
+
+    void executeAndCompareSQL(String jpql, String expectedSQL) {
+        JDBCConfiguration conf = (JDBCConfiguration) getEntityManagerFactory().getConfiguration();
+        DBDictionary dict = conf.getDBDictionaryInstance();
+
+        Query jQ = getEntityManager().createQuery(jpql);
+
+        List<String> jSQL = null;
+        try {
+            jSQL = executeQueryAndCollectSQL(jQ);
+        } catch (Exception e) {
+            StringWriter w = new StringWriter();
+            e.printStackTrace(new PrintWriter(w));
+            fail("JPQL " + jpql + " failed to execute\r\n" + w);
+        }
+
+        printSQL("Target SQL for JPQL", jSQL);
+
+        if (!(dict instanceof DerbyDictionary))
+            return;
+
+        for (int i = 0; i < jSQL.size(); i++) {
+            if (!jSQL.get(i).equals(expectedSQL)) {
+                printSQL("SQL for JPQL", jSQL.get(i));
+                printSQL("Expected SQL", expectedSQL);
+                assertEquals(i + "-th Expected SQL and SQL for JPQL: " + jpql + " are different", expectedSQL, jSQL
+                    .get(i));
+            }
+        }
+    }
+
+    void executeAndCompareSQL(Query jQ, String expectedSQL) {
+        JDBCConfiguration conf = (JDBCConfiguration) getEntityManagerFactory().getConfiguration();
+        DBDictionary dict = conf.getDBDictionaryInstance();
+
+        List<String> jSQL = null;
+        try {
+            jSQL = executeQueryAndCollectSQL(jQ);
+        } catch (Exception e) {
+            StringWriter w = new StringWriter();
+            e.printStackTrace(new PrintWriter(w));
+        }
+
+        if (!(dict instanceof DerbyDictionary))
+            return;
+
+        printSQL("Expected SQL", expectedSQL);
+        String jSql = jSQL.get(0).trim();
+        if (jSql.indexOf("optimize for 1 row") != -1)
+            jSql = jSql.substring(0, jSql.indexOf("optimize for 1 row")).trim();
+
+        if (!jSql.equals(expectedSQL)) {
+            printSQL("SQL for JPQL", jSql);
+            assertEquals(expectedSQL, jSql);
+        }
+    }
+
+    void executeExpectFail(CriteriaQuery<?> c, String jpql) {
+        List<String> cSQL = null;
+        StringWriter w = new StringWriter();
+        try {
+            Query cQ = getEntityManager().createQuery(c);
+            cSQL = executeQueryAndCollectSQL(cQ);
+            fail("CriteriaQuery corresponding to " + jpql + " is expected to fail\r\n" + w);
+        } catch (Exception e) {
+            e.printStackTrace(new PrintWriter(w));
+        }
+    }
+
+    void executeExpectFail(CriteriaQuery<?> c, String jpql, String[] paramNames, Object[] params) {
+        List<String> cSQL = null;
+        StringWriter w = new StringWriter();
+        try {
+            Query cQ = getEntityManager().createQuery(c);
+            for (int i = 0; i < params.length; i++)
+                cQ.setParameter(paramNames[i], params[i]);
+            cSQL = executeQueryAndCollectSQL(cQ);
+            fail("CriteriaQuery corresponding to " + jpql + " is expected to fail\r\n" + w);
+        } catch (Exception e) {
+            e.printStackTrace(new PrintWriter(w));
+        }
+    }
+
+    void executeExpectFail(String jpql) {
+        List<String> jSQL = null;
+        StringWriter w = new StringWriter();
+        try {
+            Query jQ = getEntityManager().createQuery(jpql);
+            jSQL = executeQueryAndCollectSQL(jQ);
+            fail("JPQL " + jpql + " is expected to Failed to execute\r\n" + w);
+        } catch (Exception e) {
+            e.printStackTrace(new PrintWriter(w));
+        }
+    }
+
+    void executeExpectFail(String jpql, String[] paramNames, Object[] params) {
+        List<String> jSQL = null;
+        StringWriter w = new StringWriter();
+        try {
+            Query jQ = getEntityManager().createQuery(jpql);
+            for (int i = 0; i < params.length; i++)
+                jQ.setParameter(paramNames[i], params[i]);
+            jSQL = executeQueryAndCollectSQL(jQ);
+            fail("JPQL " + jpql + " is expected to Failed to execute\r\n" + w);
+        } catch (Exception e) {
+            e.printStackTrace(new PrintWriter(w));
+        }
+    }
+
+    void printSQL(String header, String sql) {
+        System.err.println(header);
+        System.err.println(sql);
+    }
+
+    void printSQL(String header, List<String> sqls) {
+        System.err.println(header);
+        for (int i = 0; sqls != null && i < sqls.size(); i++) {
+            System.err.println(i + ":" + sqls.get(i));
+        }
+    }
+
+    void setParameters(Query q, String[] paramNames, Object[] params) {
+        for (int i = 0; paramNames != null && i < paramNames.length; i++)
+            q.setParameter(paramNames[i], params[i]);
+    }
+
+    void setParameters(Query q, Object[] params) {
+        for (int i = 0; params != null && i < params.length; i++)
+            q.setParameter(i + 1, params[i]);
+    }
+
+    /**
+     * Execute the given query and return the generated SQL. If the query execution fail because the generated SQL is
+     * ill-formed, then raised exception should carry the ill-formed SQL for diagnosis.
+     */
+    List<String> executeQueryAndCollectSQL(Query q) {
+        getAuditor().clear();
+        try {
+            List<?> result = q.getResultList();
+        } catch (Exception e) {
+            throw new RuntimeException(extractSQL(e), e);
+        }
+        assertFalse(getAuditor().getSQLs().isEmpty());
+        return getAuditor().getSQLs();
+    }
+
+    void executeAndCompareSQL(CriteriaQuery<?> q, String expectedSQL) {
+        executeAndCompareSQL(getEntityManager().createQuery(q), expectedSQL);
+    }
+
+    String extractSQL(Exception e) {
+        Throwable t = e.getCause();
+        if (t instanceof ReportingSQLException)
+            return ((ReportingSQLException) t).getSQL();
+        return "Can not extract SQL from exception " + e;
+    }
+
+    @Override
+    public void runBare() throws Throwable {
+        try {
+            super.runBare();
+        } catch (Throwable t) {
+            AllowFailure allowFailure = getAllowFailure();
+            if (allowFailure != null && allowFailure.value()) {
+                System.err.println("*** FAILED (but ignored): " + this);
+                System.err.println("***              Reason : " + allowFailure.message());
+                System.err.println("Stacktrace of failure");
+                t.printStackTrace();
+            } else {
+                throw t;
+            }
+        }
+    }
+
+    /**
+     * Affirms if the test case or the test method is annotated with
+     * 
+     * @AllowFailure. Method level annotation has higher precedence than Class level annotation.
+     * 
+     *                Set -DIgnoreAllowFailure=true to ignore this directive altogether.
+     */
+    protected AllowFailure getAllowFailure() {
+        if (Boolean.getBoolean("IgnoreAllowFailure"))
+            return null;
+        try {
+            Method runMethod = getClass().getMethod(getName(), (Class[]) null);
+            AllowFailure anno = runMethod.getAnnotation(AllowFailure.class);
+            if (anno != null)
+                return anno;
+        } catch (SecurityException e) {
+            // ignore
+        } catch (NoSuchMethodException e) {
+            // ignore
+        }
+        return getClass().getAnnotation(AllowFailure.class);
+    }
+
+    public class SQLAuditor extends AbstractJDBCListener {
+        private List<String> sqls = new ArrayList<String>();
+
+        @Override
+        public void beforeExecuteStatement(JDBCEvent event) {
+            if (event.getSQL() != null && sqls != null) {
+                System.err.println("Adding " + event.getSQL());
+                sqls.add(event.getSQL());
+            }
+        }
+
+        void clear() {
+            sqls.clear();
+        }
+
+        List<String> getSQLs() {
+            return new ArrayList<String>(sqls);
+        }
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java Tue Aug  4 15:36:18 2009
@@ -18,442 +18,76 @@
  */
 package org.apache.openjpa.persistence.criteria;
 
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import javax.persistence.EntityManager;
-import javax.persistence.Persistence;
-import javax.persistence.PersistenceException;
-import javax.persistence.Query;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.QueryBuilder;
-
-import junit.framework.TestCase;
-
-import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
-import org.apache.openjpa.jdbc.sql.DBDictionary;
-import org.apache.openjpa.jdbc.sql.DerbyDictionary;
-import org.apache.openjpa.lib.jdbc.AbstractJDBCListener;
-import org.apache.openjpa.lib.jdbc.JDBCEvent;
-import org.apache.openjpa.lib.jdbc.JDBCListener;
-import org.apache.openjpa.lib.jdbc.ReportingSQLException;
-import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
-import org.apache.openjpa.persistence.OpenJPAPersistence;
-import org.apache.openjpa.persistence.test.AllowFailure;
 
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
 
 /**
- * Generic utility to run Criteria tests. 
+ * Generic utility to run Criteria tests.
  * 
- * Provides facility to compare the target SQL generated by good old JPQL
- * and newly minted Criteria.
+ * Provides facility to compare the target SQL generated by good old JPQL and newly minted Criteria.
  * 
  */
-public abstract class CriteriaTest extends TestCase {
+public abstract class CriteriaTest extends AbstractCriteriaTestCase {
     protected static OpenJPAEntityManagerFactorySPI emf;
     protected static SQLAuditor auditor;
-    
+
     protected CriteriaBuilder cb;
     protected EntityManager em;
-    
-    protected static Class[] CLASSES = {
-            Account.class,
-            Address.class,
-            A.class,
-            B.class,
-            CompUser.class,
-            Contact.class,
-            Contractor.class,
-            Course.class,
-            CreditCard.class,
-            Customer.class,
-            C.class,
-            Department.class,
-            DependentId.class,
-            Dependent.class,
-            D.class,
-            Employee.class,
-            Exempt.class,
-            FemaleUser.class,
-            FrequentFlierPlan.class,
-            Item.class,
-            LineItem.class,
-            Magazine.class,
-            MaleUser.class,
-            Manager.class,
-            Movie.class,
-            Order.class,
-            Person.class,
-            Phone.class,
-            Photo.class,
-            Product.class,
-            Publisher.class,
-            Request.class,
-            Semester.class,
-            Student.class,
-            TransactionHistory.class,
-            Transaction.class,
-            VideoStore.class,
-    };
-    
-    protected Class[] getDomainClasses() {
+
+    protected static Class<?>[] CLASSES =
+        { Account.class, Address.class, A.class, B.class, CompUser.class, Contact.class, Contractor.class,
+            Course.class, CreditCard.class, Customer.class, C.class, Department.class, DependentId.class,
+            Dependent.class, D.class, Employee.class, Exempt.class, FemaleUser.class, FrequentFlierPlan.class,
+            Item.class, LineItem.class, Magazine.class, MaleUser.class, Manager.class, Movie.class, Order.class,
+            Person.class, Phone.class, Photo.class, Product.class, Publisher.class, Request.class, Semester.class,
+            Student.class, TransactionHistory.class, Transaction.class, VideoStore.class, };
+
+    protected Class<?>[] getDomainClasses() {
         return CLASSES;
     }
-    
+
     public void setUp() {
-        if (emf == null) {
+        if (getEntityManagerFactory() == null) {
             auditor = new SQLAuditor();
-            createNamedEMF(getDomainClasses());
-            assertNotNull(emf);
+            setEntityManagerFactory(createNamedEMF(getDomainClasses()));
+            assertNotNull(getEntityManagerFactory());
             setDictionary();
         }
-        em = emf.createEntityManager();
-        cb = emf.getQueryBuilder();
-    }
-    
-    /**
-     * Create an entity manager factory for persistence unit <code>pu</code>.
-     * Put {@link #CLEAR_TABLES} in
-     * this list to tell the test framework to delete all table contents
-     * before running the tests.
-     *
-     * @param props list of persistent types used in testing and/or
-     * configuration values in the form key,value,key,value...
-     */
-    protected void createNamedEMF(Class<?>... types) {
-        Map<Object,Object> map = new HashMap<Object,Object>();
-        map.put("openjpa.jdbc.SynchronizeMappings",
-                "buildSchema(ForeignKeys=true," 
-              + "SchemaAction='add')");
-        map.put("openjpa.jdbc.QuerySQLCache", "false");
-        map.put("openjpa.DynamicEnhancementAgent", "false");
-        map.put("openjpa.RuntimeUnenhancedClasses", "unsupported");
-        map.put("openjpa.Compatibility", "QuotedNumbersInQueries=true");
-        map.put("openjpa.jdbc.JDBCListeners", new JDBCListener[] { auditor });
-        
-            StringBuffer buf = new StringBuffer();
-            for (Class<?> c : types) {
-                if (buf.length() > 0)
-                    buf.append(";");
-                buf.append(c.getName());
-            }
-           
-            map.put("openjpa.MetaDataFactory", "jpa(Types=" + buf.toString() + ")");
-        
-            Map<Object,Object> config = new HashMap<Object,Object>(System.getProperties());
-            config.putAll(map);
-            emf = (OpenJPAEntityManagerFactorySPI) Persistence.createEntityManagerFactory("test", config);
-    }
-
-    void setDictionary() {
-        JDBCConfiguration conf = (JDBCConfiguration) emf.getConfiguration();
-        DBDictionary dict = conf.getDBDictionaryInstance();
-        dict.requiresCastForComparisons = false;
-        dict.requiresCastForMathFunctions = false;
+        em = getEntityManagerFactory().createEntityManager();
+        cb = getEntityManagerFactory().getQueryBuilder();
     }
 
-    /**
-     * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality.
-     */
-    void assertEquivalence(CriteriaQuery<?> c, String jpql) {
-        assertEquivalence(c, jpql, null);
-    }
-    
-    /**
-     * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality.
-     * Sets the supplied parameters, if any.
-     */
-    void assertEquivalence(CriteriaQuery<?> c, String jpql, String[] paramNames,  Object[] params) {
-        Query cQ = em.createQuery(c);
-        Query jQ = em.createQuery(jpql);
-        setParameters(cQ, paramNames, params);
-        setParameters(jQ, paramNames, params);
-        
-        executeAndCompareSQL(jpql, cQ, jQ);
-    }
-
-    /**
-     * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality.
-     */
-
-    void assertEquivalence(CriteriaQuery<?> c, String jpql, Object[] params) {
-        Query cQ = em.createQuery(c);
-        Query jQ = em.createQuery(jpql);
-        setParameters(cQ, params);
-        setParameters(jQ, params);
-        
-        executeAndCompareSQL(jpql, cQ, jQ);
-    }
-
-    /**
-     * Execute the two given queries. The first query originated from a JPQL
-     * string must be well-formed. The second query originated from a Criteria
-     * is being tested.
-     * 
-     * @param sqls The target SQL for the queries will be filled-in the given
-     *            array.
-     * @return true if both queries execute successfully.
-     */
-    void executeAndCompareSQL(String jpql, Query cQ, Query jQ) {
-        List<String> jSQL = null;
-        List<String> cSQL = null;
-        try {
-            jSQL = executeQueryAndCollectSQL(jQ);
-        } catch (Exception e) {
-            StringWriter w = new StringWriter();
-            e.printStackTrace(new PrintWriter(w));
-            fail("JPQL " + jpql + " failed to execute\r\n" + w);
-        }
-        em.clear();
-        try {
-            cSQL = executeQueryAndCollectSQL(cQ);
-        } catch (Exception e) {
-            StringWriter w = new StringWriter();
-            e.printStackTrace(new PrintWriter(w));
-            fail("CriteriaQuery corresponding to " + jpql + " failed to execute\r\n" + w);
-        }
-        
-        printSQL("Target SQL for JPQL", jSQL);
-        printSQL("Target SQL for CriteriaQuery", cSQL);
-        if (jSQL.size() != cSQL.size()) {
-            printSQL("Target SQL for JPQL", jSQL);
-            printSQL("Target SQL for CriteriaQuery", cSQL);
-            assertEquals("No. of SQL generated for JPQL and CriteriaQuery for " + jpql + " is different", 
-                 jSQL.size(), cSQL.size());
-        }
-        
-        for (int i = 0; i < jSQL.size(); i++) {
-            if (!jSQL.get(i).equals(cSQL.get(i))) {
-                printSQL("Target SQL for JPQL", jSQL);
-                printSQL("Target SQL for CriteriaQuery", cSQL);
-                assertEquals(i + "-th SQL for JPQL and CriteriaQuery for " + jpql + " is different",
-                     jSQL.get(i), cSQL.get(i));
-            }
-        }
-    }
-    
-    void executeAndCompareSQL(String jpql, String expectedSQL) {
-        JDBCConfiguration conf = (JDBCConfiguration) emf.getConfiguration();
-        DBDictionary dict = conf.getDBDictionaryInstance();
-
-        Query jQ = em.createQuery(jpql);
-
-        List<String> jSQL = null;
-        try {
-            jSQL = executeQueryAndCollectSQL(jQ);
-        } catch (Exception e) {
-            StringWriter w = new StringWriter();
-            e.printStackTrace(new PrintWriter(w));
-            fail("JPQL " + jpql + " failed to execute\r\n" + w);
-        }
-        
-        printSQL("Target SQL for JPQL", jSQL);
-        
-        if (!(dict instanceof DerbyDictionary))
-            return;
-
-        for (int i = 0; i < jSQL.size(); i++) {
-            if (!jSQL.get(i).equals(expectedSQL)) {
-                printSQL("SQL for JPQL", jSQL.get(i));
-                printSQL("Expected SQL", expectedSQL);
-                assertEquals(i + "-th Expected SQL and SQL for JPQL: " + jpql + " are different",
-                     expectedSQL, jSQL.get(i));
-            }
-        }
-    }
-    
-    void executeAndCompareSQL(Query jQ, String expectedSQL) {
-        JDBCConfiguration conf = (JDBCConfiguration) emf.getConfiguration();
-        DBDictionary dict = conf.getDBDictionaryInstance();
-
-        List<String> jSQL = null;
-        try {
-            jSQL = executeQueryAndCollectSQL(jQ);
-        } catch (Exception e) {
-            StringWriter w = new StringWriter();
-            e.printStackTrace(new PrintWriter(w));
-        }
-        
-        if (!(dict instanceof DerbyDictionary))
-            return;
-
-        printSQL("Expected SQL", expectedSQL);
-        String jSql = jSQL.get(0).trim();
-        if (jSql.indexOf("optimize for 1 row") != -1)
-            jSql = jSql.substring(0, jSql.indexOf("optimize for 1 row")).trim();
-        
-        if (!jSql.equals(expectedSQL)) {
-            printSQL("SQL for JPQL", jSql);
-            assertEquals(expectedSQL, jSql);
-        }
+    protected OpenJPAEntityManagerFactorySPI getEntityManagerFactory() {
+        return emf;
     }
 
-    void executeExpectFail(CriteriaQuery<?> c, String jpql) {
-        List<String> cSQL = null;
-        StringWriter w = new StringWriter();
-        try {
-            Query cQ = em.createQuery(c);
-            cSQL = executeQueryAndCollectSQL(cQ);
-            fail("CriteriaQuery corresponding to " + jpql + " is expected to fail\r\n" + w);
-        } catch (Exception e) {
-            e.printStackTrace(new PrintWriter(w));
-        }
+    protected void setEntityManagerFactory(OpenJPAEntityManagerFactorySPI emf) {
+        CriteriaTest.emf = emf;
     }
     
-    void executeExpectFail(CriteriaQuery<?> c, String jpql, String[] paramNames, Object[] params) {
-        List<String> cSQL = null;
-        StringWriter w = new StringWriter();
-        try {
-            Query cQ = em.createQuery(c);
-            for (int i = 0; i < params.length; i++)
-                cQ.setParameter(paramNames[i], params[i]);
-            cSQL = executeQueryAndCollectSQL(cQ);
-            fail("CriteriaQuery corresponding to " + jpql + " is expected to fail\r\n" + w);
-        } catch (Exception e) {
-            e.printStackTrace(new PrintWriter(w));
-        }
+    protected SQLAuditor getAuditor() {
+        return auditor;
     }
     
-    void executeExpectFail(String jpql) {
-        List<String> jSQL = null;
-        StringWriter w = new StringWriter();
-        try {
-            Query jQ = em.createQuery(jpql);
-            jSQL = executeQueryAndCollectSQL(jQ);
-            fail("JPQL " + jpql + " is expected to Failed to execute\r\n" + w);
-        } catch (Exception e) {
-            e.printStackTrace(new PrintWriter(w));
-        }
+    protected void setAuditor(SQLAuditor auditor) { 
+        CriteriaTest.auditor = auditor;
     }
 
-    void executeExpectFail(String jpql, String[] paramNames, Object[] params) {
-        List<String> jSQL = null;
-        StringWriter w = new StringWriter();
-        try {
-            Query jQ = em.createQuery(jpql);
-            for (int i = 0; i < params.length; i++)
-                jQ.setParameter(paramNames[i], params[i]);
-            jSQL = executeQueryAndCollectSQL(jQ);
-            fail("JPQL " + jpql + " is expected to Failed to execute\r\n" + w);
-        } catch (Exception e) {
-            e.printStackTrace(new PrintWriter(w));
-        }
+    protected CriteriaBuilder getCriteriaBuilder() {
+        return cb;
     }
 
-    void printSQL(String header, String sql) {
-        System.err.println(header);
-        System.err.println(sql);
+    protected void setCriteriaBuilder(CriteriaBuilder cb) {
+        this.cb = cb;
     }
 
-    void printSQL(String header, List<String> sqls) {
-        System.err.println(header);
-        for (int i = 0; sqls != null && i < sqls.size(); i++) {
-            System.err.println(i + ":" + sqls.get(i));
-        }
-    }
-    
-    void setParameters(Query q, String[] paramNames, Object[] params) {
-        for (int i = 0; paramNames != null && i < paramNames.length; i++)
-            q.setParameter(paramNames[i], params[i]);
-    }
-    
-    void setParameters(Query q, Object[] params) {
-        for (int i = 0; params != null && i < params.length; i++)
-            q.setParameter(i+1, params[i]);
-    }
-    
-    /**
-     * Execute the given query and return the generated SQL.
-     * If the query execution fail because the generated SQL is ill-formed, then raised exception should
-     * carry the ill-formed SQL for diagnosis.  
-     */
-    List<String> executeQueryAndCollectSQL(Query q) {
-        auditor.clear();
-        try {
-            List<?> result = q.getResultList();
-        } catch (Exception e) {
-            throw new RuntimeException(extractSQL(e), e);
-        }    
-        assertFalse(auditor.getSQLs().isEmpty());
-        return auditor.getSQLs();
-    }
-    
-    void executeAndCompareSQL(CriteriaQuery<?> q, String expectedSQL) {
-        executeAndCompareSQL(em.createQuery(q), expectedSQL);
+    protected EntityManager getEntityManager() {
+        return em;
     }
 
-    String extractSQL(Exception e) {
-        Throwable t = e.getCause();
-        if (t instanceof ReportingSQLException)
-            return ((ReportingSQLException) t).getSQL();
-        return "Can not extract SQL from exception " + e;
-    }
-    
-    @Override
-    public void runBare() throws Throwable {
-        try {
-            super.runBare();
-        } catch (Throwable t) {
-            AllowFailure allowFailure = getAllowFailure();
-            if ( allowFailure != null && allowFailure.value()) {
-                System.err.println("*** FAILED (but ignored): " + this);
-                System.err.println("***              Reason : " 
-                    + allowFailure.message());
-                System.err.println("Stacktrace of failure");
-                t.printStackTrace();
-            } else {
-                throw t;
-            }
-        }
-    }
-    
-    /**
-     * Affirms if the test case or the test method is annotated with 
-     * @AllowFailure. Method level annotation has higher precedence than Class
-     * level annotation.
-     * 
-     * Set -DIgnoreAllowFailure=true to ignore this directive altogether.
-     */
-    protected AllowFailure getAllowFailure() {
-        if (Boolean.getBoolean("IgnoreAllowFailure"))
-            return null;
-        try {
-            Method runMethod = getClass().getMethod(getName(), (Class[])null);
-            AllowFailure anno = runMethod.getAnnotation(AllowFailure.class);
-            if (anno != null)
-                return anno;
-        } catch (SecurityException e) {
-            //ignore
-        } catch (NoSuchMethodException e) {
-            //ignore
-        }
-        return getClass().getAnnotation(AllowFailure.class);
+    protected void setEntityManager(EntityManager em) {
+        this.em = em;
     }
-
     
-    public class SQLAuditor extends AbstractJDBCListener {
-        private List<String> sqls = new ArrayList<String>();
-    
-        @Override
-        public void beforeExecuteStatement(JDBCEvent event) {
-            if (event.getSQL() != null && sqls != null) {
-                System.err.println("Adding " + event.getSQL());
-               sqls.add(event.getSQL());
-            }
-        }
-        
-        void clear() {
-            sqls.clear();
-        }
-        
-        List<String> getSQLs() {
-            return new ArrayList<String>(sqls);
-        }
-    }
 }

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/EmbeddableDomainTestCase.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/EmbeddableDomainTestCase.java?rev=800847&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/EmbeddableDomainTestCase.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/EmbeddableDomainTestCase.java Tue Aug  4 15:36:18 2009
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.criteria;
+
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
+import org.apache.openjpa.persistence.embed.Company1;
+import org.apache.openjpa.persistence.embed.Company2;
+import org.apache.openjpa.persistence.embed.Department1;
+import org.apache.openjpa.persistence.embed.Department2;
+import org.apache.openjpa.persistence.embed.Department3;
+import org.apache.openjpa.persistence.embed.Division;
+import org.apache.openjpa.persistence.embed.Embed;
+import org.apache.openjpa.persistence.embed.Embed_Coll_Embed;
+import org.apache.openjpa.persistence.embed.Embed_Coll_Integer;
+import org.apache.openjpa.persistence.embed.Embed_Embed;
+import org.apache.openjpa.persistence.embed.Embed_Embed_ToMany;
+import org.apache.openjpa.persistence.embed.Embed_MappedToOne;
+import org.apache.openjpa.persistence.embed.Embed_ToMany;
+import org.apache.openjpa.persistence.embed.Embed_ToOne;
+import org.apache.openjpa.persistence.embed.Employee1;
+import org.apache.openjpa.persistence.embed.Employee2;
+import org.apache.openjpa.persistence.embed.Employee3;
+import org.apache.openjpa.persistence.embed.EmployeeName3;
+import org.apache.openjpa.persistence.embed.EmployeePK2;
+import org.apache.openjpa.persistence.embed.EntityA_Coll_Embed_Embed;
+import org.apache.openjpa.persistence.embed.EntityA_Coll_Embed_ToOne;
+import org.apache.openjpa.persistence.embed.EntityA_Coll_String;
+import org.apache.openjpa.persistence.embed.EntityA_Embed_Coll_Embed;
+import org.apache.openjpa.persistence.embed.EntityA_Embed_Coll_Integer;
+import org.apache.openjpa.persistence.embed.EntityA_Embed_Embed;
+import org.apache.openjpa.persistence.embed.EntityA_Embed_Embed_ToMany;
+import org.apache.openjpa.persistence.embed.EntityA_Embed_MappedToOne;
+import org.apache.openjpa.persistence.embed.EntityA_Embed_ToMany;
+import org.apache.openjpa.persistence.embed.EntityA_Embed_ToOne;
+import org.apache.openjpa.persistence.embed.EntityB1;
+import org.apache.openjpa.persistence.embed.Item1;
+import org.apache.openjpa.persistence.embed.Item2;
+import org.apache.openjpa.persistence.embed.Item3;
+import org.apache.openjpa.persistence.embed.VicePresident;
+
+/**
+ */
+public abstract class EmbeddableDomainTestCase extends AbstractCriteriaTestCase {
+    protected static OpenJPAEntityManagerFactorySPI emf = null;
+    protected static SQLAuditor auditor = null;
+
+    protected CriteriaBuilder cb;
+    protected EntityManager em;
+
+    protected static Class<?>[] CLASSES =
+        { Company1.class, Company2.class, Department1.class, Department2.class, Department3.class, Division.class,
+            Embed.class, Embed_Coll_Embed.class, Embed_Coll_Integer.class, Embed_Embed.class, Embed_Embed_ToMany.class,
+            Embed_MappedToOne.class, Embed_ToMany.class, Embed_ToOne.class, Employee1.class, Employee2.class,
+            Employee3.class, EmployeeName3.class, EmployeePK2.class, EntityA_Coll_Embed_Embed.class,
+            EntityA_Coll_Embed_ToOne.class, EntityA_Coll_String.class, EntityA_Embed_Coll_Embed.class,
+            EntityA_Embed_Coll_Integer.class, EntityA_Embed_Embed.class, EntityA_Embed_Embed_ToMany.class,
+            EntityA_Embed_MappedToOne.class, EntityA_Embed_ToMany.class, EntityA_Embed_ToOne.class, EntityB1.class,
+            Item1.class, Item2.class, Item3.class, VicePresident.class };
+
+    protected Class<?>[] getDomainClasses() {
+        return CLASSES;
+    }
+
+    public void setUp() {
+        if (getEntityManagerFactory() == null) {
+            auditor = new SQLAuditor();
+            setEntityManagerFactory(createNamedEMF(getDomainClasses()));
+            assertNotNull(getEntityManagerFactory());
+            setDictionary();
+        }
+        em = getEntityManagerFactory().createEntityManager();
+        cb = getEntityManagerFactory().getQueryBuilder();
+    }
+
+    protected OpenJPAEntityManagerFactorySPI getEntityManagerFactory() {
+        return emf;
+    }
+
+    protected void setEntityManagerFactory(OpenJPAEntityManagerFactorySPI emf) {
+        EmbeddableDomainTestCase.emf = emf;
+    }
+
+    protected SQLAuditor getAuditor() {
+        return auditor;
+    }
+
+    protected void setAuditor(SQLAuditor auditor) {
+        EmbeddableDomainTestCase.auditor = auditor;
+    }
+
+    protected CriteriaBuilder getCriteriaBuilder() {
+        return cb;
+    }
+
+    protected void setCriteriaBuilder(CriteriaBuilder cb) {
+        this.cb = cb;
+    }
+
+    protected EntityManager getEntityManager() {
+        return em;
+    }
+
+    protected void setEntityManager(EntityManager em) {
+        this.em = em;
+    }
+
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/EmbeddableDomainTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/JoinDomainTestCase.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/JoinDomainTestCase.java?rev=800847&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/JoinDomainTestCase.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/JoinDomainTestCase.java Tue Aug  4 15:36:18 2009
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ package org.apache.openjpa.persistence.criteria;
+
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
+
+public abstract class JoinDomainTestCase extends AbstractCriteriaTestCase {
+    protected static OpenJPAEntityManagerFactorySPI emf;
+    protected static SQLAuditor auditor;
+
+    protected CriteriaBuilder cb;
+    protected EntityManager em;
+
+    protected Class<?>[] getDomainClasses() {
+        return new Class[]{A.class,B.class,C.class,D.class};
+    }
+
+    public void setUp() {
+        if (getEntityManagerFactory() == null) {
+            auditor = new SQLAuditor();
+            setEntityManagerFactory(createNamedEMF(getDomainClasses()));
+            assertNotNull(getEntityManagerFactory());
+            setDictionary();
+        }
+        em = getEntityManagerFactory().createEntityManager();
+        cb = getEntityManagerFactory().getQueryBuilder();
+    }
+
+    protected OpenJPAEntityManagerFactorySPI getEntityManagerFactory() {
+        return emf;
+    }
+
+    protected void setEntityManagerFactory(OpenJPAEntityManagerFactorySPI emf) {
+        JoinDomainTestCase.emf = emf;
+    }
+
+    protected SQLAuditor getAuditor() {
+        return auditor;
+    }
+
+    protected void setAuditor(SQLAuditor auditor) {
+        JoinDomainTestCase.auditor = auditor;
+    }
+
+    protected CriteriaBuilder getCriteriaBuilder() {
+        return cb;
+    }
+
+    protected void setCriteriaBuilder(CriteriaBuilder cb) {
+        this.cb = cb;
+    }
+
+    protected EntityManager getEntityManager() {
+        return em;
+    }
+
+    protected void setEntityManager(EntityManager em) {
+        this.em = em;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/JoinDomainTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java Tue Aug  4 15:36:18 2009
@@ -33,6 +33,7 @@
 import javax.persistence.criteria.Root;
 import javax.persistence.criteria.Subquery;
 
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
 import org.apache.openjpa.persistence.embed.Company1;
 import org.apache.openjpa.persistence.embed.Company1_;
 import org.apache.openjpa.persistence.embed.Company2;
@@ -95,49 +96,7 @@
 import org.apache.openjpa.persistence.test.AllowFailure;
 
 
-public class TestEmbeddableCriteria extends CriteriaTest {
-    protected static Class[] CLASSES = {
-    org.apache.openjpa.persistence.embed.Company1.class,
-    org.apache.openjpa.persistence.embed.Company2.class,
-    org.apache.openjpa.persistence.embed.Department1.class,
-    org.apache.openjpa.persistence.embed.Department2.class,
-    org.apache.openjpa.persistence.embed.Department3.class,
-    org.apache.openjpa.persistence.embed.Division.class,
-    org.apache.openjpa.persistence.embed.Embed.class,
-    org.apache.openjpa.persistence.embed.Embed_Coll_Embed.class,
-    org.apache.openjpa.persistence.embed.Embed_Coll_Integer.class,
-    org.apache.openjpa.persistence.embed.Embed_Embed.class,
-    org.apache.openjpa.persistence.embed.Embed_Embed_ToMany.class,
-    org.apache.openjpa.persistence.embed.Embed_MappedToOne.class,
-    org.apache.openjpa.persistence.embed.Embed_ToMany.class,
-    org.apache.openjpa.persistence.embed.Embed_ToOne.class,
-    org.apache.openjpa.persistence.embed.Employee1.class,
-    org.apache.openjpa.persistence.embed.Employee2.class,
-    org.apache.openjpa.persistence.embed.Employee3.class,
-    org.apache.openjpa.persistence.embed.EmployeeName3.class,
-    org.apache.openjpa.persistence.embed.EmployeePK2.class,
-    org.apache.openjpa.persistence.embed.EntityA_Coll_Embed_Embed.class,
-    org.apache.openjpa.persistence.embed.EntityA_Coll_Embed_ToOne.class,
-    org.apache.openjpa.persistence.embed.EntityA_Coll_String.class,
-    org.apache.openjpa.persistence.embed.EntityA_Embed_Coll_Embed.class,
-    org.apache.openjpa.persistence.embed.EntityA_Embed_Coll_Integer.class,
-    org.apache.openjpa.persistence.embed.EntityA_Embed_Embed.class,
-    org.apache.openjpa.persistence.embed.EntityA_Embed_Embed_ToMany.class,
-    org.apache.openjpa.persistence.embed.EntityA_Embed_MappedToOne.class,
-    org.apache.openjpa.persistence.embed.EntityA_Embed_ToMany.class,
-    org.apache.openjpa.persistence.embed.EntityA_Embed_ToOne.class,
-    org.apache.openjpa.persistence.embed.EntityB1.class,
-    org.apache.openjpa.persistence.embed.Item1.class,
-    org.apache.openjpa.persistence.embed.Item2.class,
-    org.apache.openjpa.persistence.embed.Item3.class,
-    org.apache.openjpa.persistence.embed.VicePresident.class
-    };       
-
-    @Override
-    protected Class[] getDomainClasses() {
-        return CLASSES;
-    }
-
+public class TestEmbeddableCriteria extends EmbeddableDomainTestCase {
     // can not translate to criteria
     @AllowFailure
     public void testEmbeddableQuery1() {
@@ -1821,5 +1780,5 @@
         Root<VicePresident> vp = q.from(VicePresident.class);
         q.select(vp);
         assertEquivalence(q, jpql);
-    }        
+    }
 }

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJoinCondition.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJoinCondition.java?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJoinCondition.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJoinCondition.java Tue Aug  4 15:36:18 2009
@@ -34,11 +34,7 @@
  * @author Pinaki Poddar
  *
  */
-public class TestJoinCondition extends CriteriaTest {
-    protected Class[] getDomainClasses() {
-        return new Class[]{A.class,B.class,C.class,D.class};
-    }
-
+public class TestJoinCondition extends JoinDomainTestCase {
     public void testSingleAttributeJoinModel() {
         CriteriaQuery<?> cq = cb.createQuery();
         Root<A> a = cq.from(A.class);

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java Tue Aug  4 15:36:18 2009
@@ -325,7 +325,7 @@
      
        assertEquivalence(q, jpql); 
      }
-
+    @AllowFailure
     public void testParameters() {
         String jpql = "SELECT c FROM Customer c Where c.status = :stat";
         CriteriaQuery<?> q = cb.createQuery();

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java Tue Aug  4 15:36:18 2009
@@ -206,7 +206,8 @@
       
           assertEquivalence(q, jpql); 
      }
-
+      
+    @AllowFailure
     public void testParameters() {
         String jpql = "SELECT c FROM Customer c Where c.status = :stat";
         CriteriaQuery<Customer> q = cb.createQuery(Customer.class);

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java Tue Aug  4 15:36:18 2009
@@ -154,6 +154,7 @@
         assertEquivalence(cq, jpql);
     }
     
+    @AllowFailure
     public void testLikeWithEscapeCharacter() {
         String query = "SELECT o.name FROM CompUser o WHERE o.name LIKE :name ESCAPE '|'";
         
@@ -490,6 +491,7 @@
         assertEquivalence(q, query);
     }
 
+    @AllowFailure
     public void testTypeExpression1() {
         String jpql = "SELECT e FROM CompUser e where TYPE(e) in (:a, :b) ORDER By e.name";
         
@@ -505,7 +507,7 @@
              new Class[]{MaleUser.class,FemaleUser.class});
     }
 
-    
+    @AllowFailure
     public void testTypeExpression2() {
         String query = "SELECT TYPE(e) FROM CompUser e where TYPE(e) <> :t";
         

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java Tue Aug  4 15:36:18 2009
@@ -48,13 +48,13 @@
  * 
  */
 public class TestTypesafeCriteria extends CriteriaTest {
-    
+    @AllowFailure
     public void testTrue() {
         CriteriaQuery<Person> q = cb.createQuery(Person.class);
         q.from(Person.class);
         assertEquivalence(q.where(cb.literal(Boolean.TRUE)), "SELECT p FROM Person p WHERE 1=1");
     }
-    
+    @AllowFailure
     public void testFalse() {
         CriteriaQuery<Person> q = cb.createQuery(Person.class);
         q.from(Person.class);
@@ -503,7 +503,7 @@
 
         assertEquivalence(q, jpql);
     }
-
+    @AllowFailure
     public void testParameters1() {
         String jpql = "SELECT c FROM Customer c Where c.status = :stat";
         
@@ -514,7 +514,7 @@
 
         assertEquivalence(q, jpql, new String[] { "stat" }, new Object[] { 1 });
     }
-
+    @AllowFailure
     public void testParameters2() {
         String jpql = "SELECT c FROM Customer c Where c.status = :stat AND c.name = :name";
         
@@ -528,7 +528,7 @@
         assertEquivalence(q, jpql, new String[] { "stat", "name" },
                 new Object[] { 1, "test" });
     }
-
+    @AllowFailure
     public void testParameters3() {
         String jpql = "SELECT c FROM Customer c Where c.status = :stat";
 
@@ -539,7 +539,7 @@
         
         assertEquivalence(q, jpql, new String[]{"stat"}, new Object[] { 1 });
     }
-
+    @AllowFailure
     public void testParameters4() {
         String jpql = "SELECT c FROM Customer c Where c.status = :stat AND c.name = :name";
         
@@ -552,7 +552,7 @@
         assertEquivalence(q, jpql, new String[]{"stat", "name"},
                 new Object[] { 1, "test" });
     }
-    
+    @AllowFailure
     public void testParameters5() {
         String jpql = "SELECT c FROM Customer c Where c.status IN (:coll)";
         
@@ -818,6 +818,7 @@
     /**
      * 0-arg function works only if there is a other projection items to determine the table to select from. 
      */
+    @AllowFailure
     public void testFunctionWithNoArgument() {
         String jpql = "SELECT c.balanceOwed FROM Customer c";
         String sql = "SELECT CURRENT_USER(), t0.balanceOwed FROM CR_CUST t0";

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/Item1.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/Item1.java?rev=800847&r1=800846&r2=800847&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/Item1.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/Item1.java Tue Aug  4 15:36:18 2009
@@ -24,6 +24,7 @@
 import javax.persistence.*;
 
 @Entity
+@Table(name="CR_EMBED_ITEM")
 public class Item1 {
     @Id
     int id;



Mime
View raw message