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 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 @@ >> >> >> >> - >> + >> >> - >> >> org/apache/openjpa/persistence/criteria/*.java >> >> org/apache/openjpa/persistence/meta/*.java >> >> >> 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 >> pu. 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 map = new HashMap(); >> + 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 config = new HashMap> 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 jSQL = null; >> + List 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 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 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 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 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 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 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 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 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 sqls = new ArrayList(); >> + >> + @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 getSQLs() { >> + return new ArrayList(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 >> pu. >> - * 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 map = new HashMap(); >> - 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 config = new >> HashMap(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 jSQL = null; >> - List 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 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 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 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 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 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 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 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 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 sqls = new ArrayList(); >> - - @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 getSQLs() { >> - return new ArrayList(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 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 = 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 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 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 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; >> >> >> >>