openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dick <michael.d.d...@gmail.com>
Subject Re: svn commit: r800847 - OPENJPA-1222
Date Tue, 04 Aug 2009 19:16:08 GMT
Might be specific to the 64 bit version, the criteria tests work for me with
Sun 32 bit JDK6 (java full version "1.6.0_07-b06"). That JDK is a bit old
though, I'll try upgrading.

-mike

On Tue, Aug 4, 2009 at 2:10 PM, Donald Woods <dwoods@apache.org> wrote:

> This seems to have broken builds with 64bit Sun 6 JDK on Linux (but not
> MacOSX), as now there are 239 criteria test errors/failures....
>
>
> -Donald
>
>
> mikedd@apache.org wrote:
>
>> 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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message