You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Donald Woods <dw...@apache.org> on 2009/02/20 16:36:26 UTC
Re: OpenJPA svn commit: r745691 - Reverting OPENJPA-838 and OPENJPA-917
for additional testing.
Mike, removing the below fixes is causing known EJB TCK failures in
Geronimo. We'll need these reapplied before we can cut a OpenJPA 1.2.1
release and a Geronimo 2.1.4 release....
-Donald
mikedd@apache.org wrote:
> Author: mikedd
> Date: Wed Feb 18 23:27:25 2009
> New Revision: 745691
>
> URL: http://svn.apache.org/viewvc?rev=745691&view=rev
> Log:
> Reverting OPENJPA-838 and OPENJPA-917 for additional testing.
>
> Removed:
> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/Invoice.java
> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/InvoiceKey.java
> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/LineItem.java
> Modified:
> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>
> Modified: openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
> URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java?rev=745691&r1=745690&r2=745691&view=diff
> ==============================================================================
> --- openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java (original)
> +++ openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java Wed Feb 18 23:27:25 2009
> @@ -26,8 +26,11 @@
> import java.util.Map;
>
> import org.apache.openjpa.enhance.PersistenceCapable;
> +import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
> import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
> +import org.apache.openjpa.jdbc.kernel.JDBCFetchConfigurationImpl;
> import org.apache.openjpa.jdbc.kernel.JDBCStore;
> +import org.apache.openjpa.jdbc.kernel.JDBCStoreManager;
> import org.apache.openjpa.jdbc.meta.ClassMapping;
> import org.apache.openjpa.jdbc.meta.FieldMapping;
> import org.apache.openjpa.jdbc.meta.FieldStrategy;
> @@ -35,11 +38,14 @@
> import org.apache.openjpa.jdbc.schema.Column;
> import org.apache.openjpa.jdbc.schema.ForeignKey;
> import org.apache.openjpa.jdbc.sql.Joins;
> +import org.apache.openjpa.jdbc.sql.LogicalUnion;
> import org.apache.openjpa.jdbc.sql.Result;
> import org.apache.openjpa.jdbc.sql.Select;
> import org.apache.openjpa.jdbc.sql.SelectExecutor;
> +import org.apache.openjpa.jdbc.sql.SelectImpl;
> import org.apache.openjpa.jdbc.sql.Union;
> import org.apache.openjpa.kernel.OpenJPAStateManager;
> +import org.apache.openjpa.lib.log.Log;
> import org.apache.openjpa.lib.util.Localizer;
> import org.apache.openjpa.meta.ClassMetaData;
> import org.apache.openjpa.meta.JavaTypes;
> @@ -520,19 +526,86 @@
> return;
> }
>
> + //cache union for field here
> // select data for this sm
> + boolean found = true;
> final ClassMapping[] elems = getIndependentElementMappings(true);
> final Joins[] resJoins = new Joins[Math.max(1, elems.length)];
> - Union union = store.getSQLFactory().newUnion
> - (Math.max(1, elems.length));
> - union.select(new Union.Selector() {
> - public void select(Select sel, int idx) {
> - ClassMapping elem = (elems.length == 0) ? null : elems[idx];
> - resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
> - JDBCFetchConfiguration.EAGER_PARALLEL);
> + List parmList = null;
> + Union union = null;
> + SelectImpl sel = null;
> + Map<JDBCStoreManager.SelectKey, Object[]> storeCollectionUnionCache = null;
> + JDBCStoreManager.SelectKey selKey = null;
> + if (!((JDBCStoreManager)store).isQuerySQLCacheOn() || elems.length > 1)
> + union = newUnion(sm, store, fetch, elems, resJoins);
> + else {
> + parmList = new ArrayList();
> + JDBCFetchConfiguration fetchClone = new JDBCFetchConfigurationImpl();
> + fetchClone.copy(fetch);
> +
> + // to specify the type so that no cast is needed
> + storeCollectionUnionCache = ((JDBCStoreManager)store).
> + getCacheMapFromQuerySQLCache(StoreCollectionFieldStrategy.class);
> + selKey =
> + new JDBCStoreManager.SelectKey(null, field, fetchClone);
> + Object[] objs = storeCollectionUnionCache.get(selKey);
> + if (objs != null) {
> + union = (Union) objs[0];
> + resJoins[0] = (Joins) objs[1];
> }
> - });
> -
> + else {
> + synchronized(storeCollectionUnionCache) {
> + objs = storeCollectionUnionCache.get(selKey);
> + if (objs == null) {
> + // select data for this sm
> + union = newUnion(sm, store, fetch, elems, resJoins);
> + found = false;
> + } else {
> + union = (Union) objs[0];
> + resJoins[0] = (Joins) objs[1];
> + }
> +
> + sel = ((LogicalUnion.UnionSelect)union.getSelects()[0]).
> + getDelegate();
> + if (sel.getSQL() == null) {
> + ((SelectImpl)sel).setSQL(store, fetch);
> + found = false;
> + }
> +
> + // only cache the union when elems length is 1 for now
> + if (!found) {
> + Object[] objs1 = new Object[2];
> + objs1[0] = union;
> + objs1[1] = resJoins[0];
> + ((JDBCStoreManager)store).addToSqlCache(
> + storeCollectionUnionCache, selKey, objs1);
> + }
> + }
> + }
> +
> + Log log = store.getConfiguration().
> + getLog(JDBCConfiguration.LOG_JDBC);
> + if (log.isTraceEnabled()) {
> + if (found)
> + log.trace(_loc.get("cache-hit", field, this.getClass()));
> + else
> + log.trace(_loc.get("cache-missed", field, this.getClass()));
> + }
> +
> + ClassMapping mapping = field.getDefiningMapping();
> + Object oid = sm.getObjectId();
> + Column[] cols = mapping.getPrimaryKeyColumns();
> + if (sel == null)
> + sel = ((LogicalUnion.UnionSelect)union.getSelects()[0]).
> + getDelegate();
> +
> + sel.wherePrimaryKey(mapping, cols, cols, oid, store,
> + null, null, parmList);
> + List nonFKParams = sel.getSQL().getNonFKParameters();
> + if (nonFKParams != null && nonFKParams.size() > 0)
> + parmList.addAll(nonFKParams);
> + }
> +
> // create proxy
> Object coll;
> ChangeTracker ct = null;
> @@ -545,7 +618,7 @@
> }
>
> // load values
> - Result res = union.execute(store, fetch);
> + Result res = union.execute(store, fetch, parmList);
> try {
> int seq = -1;
> while (res.next()) {
> @@ -569,6 +642,21 @@
> sm.storeObject(field.getIndex(), coll);
> }
>
> + protected Union newUnion(final OpenJPAStateManager sm, final JDBCStore store,
> + final JDBCFetchConfiguration fetch, final ClassMapping[] elems,
> + final Joins[] resJoins) {
> + Union union = store.getSQLFactory().newUnion
> + (Math.max(1, elems.length));
> + union.select(new Union.Selector() {
> + public void select(Select sel, int idx) {
> + ClassMapping elem = (elems.length == 0) ? null : elems[idx];
> + resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
> + JDBCFetchConfiguration.EAGER_PARALLEL);
> + }
> + });
> + return union;
> + }
> +
> /**
> * Select data for loading, starting in field table.
> */
>
> Modified: openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
> URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java?rev=745691&r1=745690&r2=745691&view=diff
> ==============================================================================
> --- openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java (original)
> +++ openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java Wed Feb 18 23:27:25 2009
> @@ -56,6 +56,7 @@
> private List _subsels = null;
> private List _params = null;
> private List _cols = null;
> + private List _nonFKParams = null;
>
> /**
> * Default constructor.
> @@ -146,6 +147,11 @@
> _cols.add(paramIndex, null);
> }
> }
> + if (buf._nonFKParams != null) {
> + if (_nonFKParams == null)
> + _nonFKParams = new ArrayList();
> + _nonFKParams.addAll(buf._nonFKParams);
> + }
> }
>
> public SQLBuffer append(Table table) {
> @@ -265,6 +271,11 @@
> if (isFK)
> break;
> }
> + if (!isFK) {
> + if (_nonFKParams == null)
> + _nonFKParams = new ArrayList();
> + _nonFKParams.add(o);
> + }
> }
> return this;
> }
> @@ -388,6 +399,9 @@
> return (_params == null) ? Collections.EMPTY_LIST : _params;
> }
>
> + public List getNonFKParameters() {
> + return (_nonFKParams == null) ? Collections.EMPTY_LIST : _nonFKParams;
> + }
> /**
> * Return the SQL for this buffer.
> */
>
> Modified: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
> URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java?rev=745691&r1=745690&r2=745691&view=diff
> ==============================================================================
> --- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java (original)
> +++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java Wed Feb 18 23:27:25 2009
> @@ -18,10 +18,10 @@
> */
> package org.apache.openjpa.persistence.jdbc.query.cache;
>
> -import java.util.List;
> +import java.util.ArrayList;
> +import java.util.Collection;
>
> import javax.persistence.EntityManager;
> -import javax.persistence.EntityTransaction;
> import javax.persistence.Query;
>
> import org.apache.openjpa.persistence.test.SQLListenerTestCase;
> @@ -45,21 +45,18 @@
> *
> * @author Pinaki Poddar
> * @author Vikram Bhatia
> - * @author David Blevins
> + *
> */
> public class TestNonPrimaryKeyQueryParameters extends SQLListenerTestCase {
> private static final int FULLTIME_EMPLOYEE_COUNT = 3;
> private static final int PARTTIME_EMPLOYEE_COUNT = 2;
> - private static final int LINEITEM_PER_INVOICE = 1;
> private static final String DEPT_NAME = "ENGINEERING";
>
> public void setUp() {
> super.setUp(CLEAR_TABLES, Department.class, Employee.class,
> FullTimeEmployee.class, PartTimeEmployee.class,
> - Invoice.class, LineItem.class,
> "openjpa.jdbc.QuerySQLCache", "true");
> createDepartment(DEPT_NAME);
> - createInvoice();
> sql.clear();
> }
>
> @@ -106,10 +103,6 @@
> .size());
>
> assertSQL(".* AND t0.TYPE = .*");
> -
> - Invoice invoice = em.find(Invoice.class, new InvoiceKey(1, "Red"));
> - List<LineItem> list = invoice.getLineItems();
> - assertEquals(LINEITEM_PER_INVOICE, list.size());
> em.close();
> }
>
> @@ -161,20 +154,4 @@
> em.close();
>
> }
> -
> - private void createInvoice() {
> - EntityManager em = emf.createEntityManager();
> - EntityTransaction tran = em.getTransaction();
> - tran.begin();
> - Invoice invoice = new Invoice(1, "Red", 1.30);
> - for (int i = 1; i <= LINEITEM_PER_INVOICE; i++) {
> - LineItem item = new LineItem(String.valueOf(i), 10);
> - item.setInvoice(invoice);
> - invoice.getLineItems().add(item);
> - em.persist(invoice);
> - }
> - em.flush();
> - tran.commit();
> - em.close();
> - }
> }
>
>
>
Re: OpenJPA svn commit: r745691 - Reverting OPENJPA-838 and OPENJPA-917
for additional testing.
Posted by Donald Woods <dw...@apache.org>.
Mike, any ETA on when OPENJPA-838 will be reintegrated for the Geronimo
2.1.4 release?
-Donald
Donald Woods wrote:
> To be more specific, we need OPENJPA-838 to resolve an earlier reported
> problem in the EJB TCK by David Blevins in OPENJPA-872.
>
> -Donald
>
>
> Donald Woods wrote:
>> Mike, removing the below fixes is causing known EJB TCK failures in
>> Geronimo. We'll need these reapplied before we can cut a OpenJPA
>> 1.2.1 release and a Geronimo 2.1.4 release....
>>
>>
>> -Donald
>>
>>
>>
>> mikedd@apache.org wrote:
>>> Author: mikedd
>>> Date: Wed Feb 18 23:27:25 2009
>>> New Revision: 745691
>>>
>>> URL: http://svn.apache.org/viewvc?rev=745691&view=rev
>>> Log:
>>> Reverting OPENJPA-838 and OPENJPA-917 for additional testing.
>>>
>>> Removed:
>>>
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/Invoice.java
>>>
>>>
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/InvoiceKey.java
>>>
>>>
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/LineItem.java
>>>
>>> Modified:
>>>
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>>
>>>
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>>
>>>
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>>
>>>
>>> Modified:
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java?rev=745691&r1=745690&r2=745691&view=diff
>>>
>>> ==============================================================================
>>>
>>> ---
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>> (original)
>>> +++
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>> Wed Feb 18 23:27:25 2009
>>> @@ -26,8 +26,11 @@
>>> import java.util.Map;
>>>
>>> import org.apache.openjpa.enhance.PersistenceCapable;
>>> +import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
>>> import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
>>> +import org.apache.openjpa.jdbc.kernel.JDBCFetchConfigurationImpl;
>>> import org.apache.openjpa.jdbc.kernel.JDBCStore;
>>> +import org.apache.openjpa.jdbc.kernel.JDBCStoreManager;
>>> import org.apache.openjpa.jdbc.meta.ClassMapping;
>>> import org.apache.openjpa.jdbc.meta.FieldMapping;
>>> import org.apache.openjpa.jdbc.meta.FieldStrategy;
>>> @@ -35,11 +38,14 @@
>>> import org.apache.openjpa.jdbc.schema.Column;
>>> import org.apache.openjpa.jdbc.schema.ForeignKey;
>>> import org.apache.openjpa.jdbc.sql.Joins;
>>> +import org.apache.openjpa.jdbc.sql.LogicalUnion;
>>> import org.apache.openjpa.jdbc.sql.Result;
>>> import org.apache.openjpa.jdbc.sql.Select;
>>> import org.apache.openjpa.jdbc.sql.SelectExecutor;
>>> +import org.apache.openjpa.jdbc.sql.SelectImpl;
>>> import org.apache.openjpa.jdbc.sql.Union;
>>> import org.apache.openjpa.kernel.OpenJPAStateManager;
>>> +import org.apache.openjpa.lib.log.Log;
>>> import org.apache.openjpa.lib.util.Localizer;
>>> import org.apache.openjpa.meta.ClassMetaData;
>>> import org.apache.openjpa.meta.JavaTypes;
>>> @@ -520,19 +526,86 @@
>>> return;
>>> }
>>>
>>> + //cache union for field here
>>> // select data for this sm
>>> + boolean found = true;
>>> final ClassMapping[] elems =
>>> getIndependentElementMappings(true);
>>> final Joins[] resJoins = new Joins[Math.max(1, elems.length)];
>>> - Union union = store.getSQLFactory().newUnion
>>> - (Math.max(1, elems.length));
>>> - union.select(new Union.Selector() {
>>> - public void select(Select sel, int idx) {
>>> - ClassMapping elem = (elems.length == 0) ? null :
>>> elems[idx];
>>> - resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
>>> - JDBCFetchConfiguration.EAGER_PARALLEL);
>>> + List parmList = null;
>>> + Union union = null;
>>> + SelectImpl sel = null;
>>> + Map<JDBCStoreManager.SelectKey, Object[]>
>>> storeCollectionUnionCache = null;
>>> + JDBCStoreManager.SelectKey selKey = null;
>>> + if (!((JDBCStoreManager)store).isQuerySQLCacheOn() ||
>>> elems.length > 1)
>>> + union = newUnion(sm, store, fetch, elems, resJoins);
>>> + else {
>>> + parmList = new ArrayList();
>>> + JDBCFetchConfiguration fetchClone = new
>>> JDBCFetchConfigurationImpl();
>>> + fetchClone.copy(fetch);
>>> + + // to specify the type so that no cast is
>>> needed
>>> + storeCollectionUnionCache = ((JDBCStoreManager)store).
>>> +
>>> getCacheMapFromQuerySQLCache(StoreCollectionFieldStrategy.class);
>>> + selKey = + new
>>> JDBCStoreManager.SelectKey(null, field, fetchClone);
>>> + Object[] objs = storeCollectionUnionCache.get(selKey);
>>> + if (objs != null) {
>>> + union = (Union) objs[0];
>>> + resJoins[0] = (Joins) objs[1];
>>> }
>>> - });
>>> -
>>> + else {
>>> + synchronized(storeCollectionUnionCache) {
>>> + objs = storeCollectionUnionCache.get(selKey);
>>> + if (objs == null) {
>>> + // select data for this sm
>>> + union = newUnion(sm, store, fetch, elems,
>>> resJoins);
>>> + found = false;
>>> + } else {
>>> + union = (Union) objs[0];
>>> + resJoins[0] = (Joins) objs[1];
>>> + }
>>> +
>>> + sel =
>>> ((LogicalUnion.UnionSelect)union.getSelects()[0]).
>>> + getDelegate();
>>> + if (sel.getSQL() == null) {
>>> + ((SelectImpl)sel).setSQL(store, fetch);
>>> + found = false;
>>> + }
>>> +
>>> + // only cache the union when elems length is 1
>>> for now
>>> + if (!found) { + Object[]
>>> objs1 = new Object[2];
>>> + objs1[0] = union;
>>> + objs1[1] = resJoins[0];
>>> + ((JDBCStoreManager)store).addToSqlCache(
>>> + storeCollectionUnionCache, selKey, objs1);
>>> + }
>>> + }
>>> + }
>>> + + Log log = store.getConfiguration().
>>> + getLog(JDBCConfiguration.LOG_JDBC);
>>> + if (log.isTraceEnabled()) {
>>> + if (found)
>>> + log.trace(_loc.get("cache-hit", field,
>>> this.getClass()));
>>> + else
>>> + log.trace(_loc.get("cache-missed", field,
>>> this.getClass())); + }
>>> + + ClassMapping mapping =
>>> field.getDefiningMapping();
>>> + Object oid = sm.getObjectId();
>>> + Column[] cols = mapping.getPrimaryKeyColumns();
>>> + if (sel == null)
>>> + sel =
>>> ((LogicalUnion.UnionSelect)union.getSelects()[0]).
>>> + getDelegate();
>>> +
>>> + sel.wherePrimaryKey(mapping, cols, cols, oid, store,
>>> + null, null, parmList);
>>> + List nonFKParams = sel.getSQL().getNonFKParameters();
>>> + if (nonFKParams != null && nonFKParams.size() > 0)
>>> + parmList.addAll(nonFKParams);
>>> + }
>>> + // create proxy
>>> Object coll;
>>> ChangeTracker ct = null;
>>> @@ -545,7 +618,7 @@
>>> }
>>>
>>> // load values
>>> - Result res = union.execute(store, fetch);
>>> + Result res = union.execute(store, fetch, parmList);
>>> try {
>>> int seq = -1;
>>> while (res.next()) {
>>> @@ -569,6 +642,21 @@
>>> sm.storeObject(field.getIndex(), coll);
>>> }
>>>
>>> + protected Union newUnion(final OpenJPAStateManager sm, final
>>> JDBCStore store,
>>> + final JDBCFetchConfiguration fetch, final ClassMapping[] elems,
>>> + final Joins[] resJoins) {
>>> + Union union = store.getSQLFactory().newUnion
>>> + (Math.max(1, elems.length));
>>> + union.select(new Union.Selector() {
>>> + public void select(Select sel, int idx) {
>>> + ClassMapping elem = (elems.length == 0) ? null :
>>> elems[idx];
>>> + resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
>>> + JDBCFetchConfiguration.EAGER_PARALLEL);
>>> + }
>>> + });
>>> + return union;
>>> + }
>>> + /**
>>> * Select data for loading, starting in field table.
>>> */
>>>
>>> Modified:
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java?rev=745691&r1=745690&r2=745691&view=diff
>>>
>>> ==============================================================================
>>>
>>> ---
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>> (original)
>>> +++
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>> Wed Feb 18 23:27:25 2009
>>> @@ -56,6 +56,7 @@
>>> private List _subsels = null;
>>> private List _params = null;
>>> private List _cols = null;
>>> + private List _nonFKParams = null;
>>>
>>> /**
>>> * Default constructor.
>>> @@ -146,6 +147,11 @@
>>> _cols.add(paramIndex, null);
>>> }
>>> }
>>> + if (buf._nonFKParams != null) {
>>> + if (_nonFKParams == null)
>>> + _nonFKParams = new ArrayList();
>>> + _nonFKParams.addAll(buf._nonFKParams);
>>> + }
>>> }
>>>
>>> public SQLBuffer append(Table table) {
>>> @@ -265,6 +271,11 @@
>>> if (isFK)
>>> break;
>>> }
>>> + if (!isFK) {
>>> + if (_nonFKParams == null)
>>> + _nonFKParams = new ArrayList();
>>> + _nonFKParams.add(o); + }
>>> }
>>> return this;
>>> }
>>> @@ -388,6 +399,9 @@
>>> return (_params == null) ? Collections.EMPTY_LIST : _params;
>>> }
>>>
>>> + public List getNonFKParameters() {
>>> + return (_nonFKParams == null) ? Collections.EMPTY_LIST :
>>> _nonFKParams;
>>> + }
>>> /**
>>> * Return the SQL for this buffer.
>>> */
>>>
>>> Modified:
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java?rev=745691&r1=745690&r2=745691&view=diff
>>>
>>> ==============================================================================
>>>
>>> ---
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>> (original)
>>> +++
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>> Wed Feb 18 23:27:25 2009
>>> @@ -18,10 +18,10 @@
>>> */
>>> package org.apache.openjpa.persistence.jdbc.query.cache;
>>>
>>> -import java.util.List;
>>> +import java.util.ArrayList;
>>> +import java.util.Collection;
>>>
>>> import javax.persistence.EntityManager;
>>> -import javax.persistence.EntityTransaction;
>>> import javax.persistence.Query;
>>>
>>> import org.apache.openjpa.persistence.test.SQLListenerTestCase;
>>> @@ -45,21 +45,18 @@
>>> * * @author Pinaki Poddar
>>> * @author Vikram Bhatia
>>> - * @author David Blevins
>>> + * */
>>> public class TestNonPrimaryKeyQueryParameters extends
>>> SQLListenerTestCase {
>>> private static final int FULLTIME_EMPLOYEE_COUNT = 3;
>>> private static final int PARTTIME_EMPLOYEE_COUNT = 2;
>>> - private static final int LINEITEM_PER_INVOICE = 1;
>>> private static final String DEPT_NAME = "ENGINEERING";
>>>
>>> public void setUp() {
>>> super.setUp(CLEAR_TABLES, Department.class, Employee.class,
>>> FullTimeEmployee.class, PartTimeEmployee.class,
>>> - Invoice.class, LineItem.class,
>>> "openjpa.jdbc.QuerySQLCache", "true");
>>> createDepartment(DEPT_NAME);
>>> - createInvoice();
>>> sql.clear();
>>> }
>>>
>>> @@ -106,10 +103,6 @@
>>> .size());
>>>
>>> assertSQL(".* AND t0.TYPE = .*");
>>> - - Invoice invoice = em.find(Invoice.class, new
>>> InvoiceKey(1, "Red"));
>>> - List<LineItem> list = invoice.getLineItems();
>>> - assertEquals(LINEITEM_PER_INVOICE, list.size());
>>> em.close();
>>> }
>>>
>>> @@ -161,20 +154,4 @@
>>> em.close();
>>>
>>> }
>>> - - private void createInvoice() {
>>> - EntityManager em = emf.createEntityManager();
>>> - EntityTransaction tran = em.getTransaction();
>>> - tran.begin();
>>> - Invoice invoice = new Invoice(1, "Red", 1.30);
>>> - for (int i = 1; i <= LINEITEM_PER_INVOICE; i++) {
>>> - LineItem item = new LineItem(String.valueOf(i), 10);
>>> - item.setInvoice(invoice);
>>> - invoice.getLineItems().add(item);
>>> - em.persist(invoice);
>>> - }
>>> - em.flush();
>>> - tran.commit();
>>> - em.close(); - } }
>>>
>>>
>>>
>>
>
Re: OpenJPA svn commit: r745691 - Reverting OPENJPA-838 and OPENJPA-917
for additional testing.
Posted by Donald Woods <dw...@apache.org>.
Mike, any ETA on when OPENJPA-838 will be reintegrated for the Geronimo
2.1.4 release?
-Donald
Donald Woods wrote:
> To be more specific, we need OPENJPA-838 to resolve an earlier reported
> problem in the EJB TCK by David Blevins in OPENJPA-872.
>
> -Donald
>
>
> Donald Woods wrote:
>> Mike, removing the below fixes is causing known EJB TCK failures in
>> Geronimo. We'll need these reapplied before we can cut a OpenJPA
>> 1.2.1 release and a Geronimo 2.1.4 release....
>>
>>
>> -Donald
>>
>>
>>
>> mikedd@apache.org wrote:
>>> Author: mikedd
>>> Date: Wed Feb 18 23:27:25 2009
>>> New Revision: 745691
>>>
>>> URL: http://svn.apache.org/viewvc?rev=745691&view=rev
>>> Log:
>>> Reverting OPENJPA-838 and OPENJPA-917 for additional testing.
>>>
>>> Removed:
>>>
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/Invoice.java
>>>
>>>
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/InvoiceKey.java
>>>
>>>
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/LineItem.java
>>>
>>> Modified:
>>>
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>>
>>>
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>>
>>>
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>>
>>>
>>> Modified:
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java?rev=745691&r1=745690&r2=745691&view=diff
>>>
>>> ==============================================================================
>>>
>>> ---
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>> (original)
>>> +++
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>> Wed Feb 18 23:27:25 2009
>>> @@ -26,8 +26,11 @@
>>> import java.util.Map;
>>>
>>> import org.apache.openjpa.enhance.PersistenceCapable;
>>> +import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
>>> import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
>>> +import org.apache.openjpa.jdbc.kernel.JDBCFetchConfigurationImpl;
>>> import org.apache.openjpa.jdbc.kernel.JDBCStore;
>>> +import org.apache.openjpa.jdbc.kernel.JDBCStoreManager;
>>> import org.apache.openjpa.jdbc.meta.ClassMapping;
>>> import org.apache.openjpa.jdbc.meta.FieldMapping;
>>> import org.apache.openjpa.jdbc.meta.FieldStrategy;
>>> @@ -35,11 +38,14 @@
>>> import org.apache.openjpa.jdbc.schema.Column;
>>> import org.apache.openjpa.jdbc.schema.ForeignKey;
>>> import org.apache.openjpa.jdbc.sql.Joins;
>>> +import org.apache.openjpa.jdbc.sql.LogicalUnion;
>>> import org.apache.openjpa.jdbc.sql.Result;
>>> import org.apache.openjpa.jdbc.sql.Select;
>>> import org.apache.openjpa.jdbc.sql.SelectExecutor;
>>> +import org.apache.openjpa.jdbc.sql.SelectImpl;
>>> import org.apache.openjpa.jdbc.sql.Union;
>>> import org.apache.openjpa.kernel.OpenJPAStateManager;
>>> +import org.apache.openjpa.lib.log.Log;
>>> import org.apache.openjpa.lib.util.Localizer;
>>> import org.apache.openjpa.meta.ClassMetaData;
>>> import org.apache.openjpa.meta.JavaTypes;
>>> @@ -520,19 +526,86 @@
>>> return;
>>> }
>>>
>>> + //cache union for field here
>>> // select data for this sm
>>> + boolean found = true;
>>> final ClassMapping[] elems =
>>> getIndependentElementMappings(true);
>>> final Joins[] resJoins = new Joins[Math.max(1, elems.length)];
>>> - Union union = store.getSQLFactory().newUnion
>>> - (Math.max(1, elems.length));
>>> - union.select(new Union.Selector() {
>>> - public void select(Select sel, int idx) {
>>> - ClassMapping elem = (elems.length == 0) ? null :
>>> elems[idx];
>>> - resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
>>> - JDBCFetchConfiguration.EAGER_PARALLEL);
>>> + List parmList = null;
>>> + Union union = null;
>>> + SelectImpl sel = null;
>>> + Map<JDBCStoreManager.SelectKey, Object[]>
>>> storeCollectionUnionCache = null;
>>> + JDBCStoreManager.SelectKey selKey = null;
>>> + if (!((JDBCStoreManager)store).isQuerySQLCacheOn() ||
>>> elems.length > 1)
>>> + union = newUnion(sm, store, fetch, elems, resJoins);
>>> + else {
>>> + parmList = new ArrayList();
>>> + JDBCFetchConfiguration fetchClone = new
>>> JDBCFetchConfigurationImpl();
>>> + fetchClone.copy(fetch);
>>> + + // to specify the type so that no cast is
>>> needed
>>> + storeCollectionUnionCache = ((JDBCStoreManager)store).
>>> +
>>> getCacheMapFromQuerySQLCache(StoreCollectionFieldStrategy.class);
>>> + selKey = + new
>>> JDBCStoreManager.SelectKey(null, field, fetchClone);
>>> + Object[] objs = storeCollectionUnionCache.get(selKey);
>>> + if (objs != null) {
>>> + union = (Union) objs[0];
>>> + resJoins[0] = (Joins) objs[1];
>>> }
>>> - });
>>> -
>>> + else {
>>> + synchronized(storeCollectionUnionCache) {
>>> + objs = storeCollectionUnionCache.get(selKey);
>>> + if (objs == null) {
>>> + // select data for this sm
>>> + union = newUnion(sm, store, fetch, elems,
>>> resJoins);
>>> + found = false;
>>> + } else {
>>> + union = (Union) objs[0];
>>> + resJoins[0] = (Joins) objs[1];
>>> + }
>>> +
>>> + sel =
>>> ((LogicalUnion.UnionSelect)union.getSelects()[0]).
>>> + getDelegate();
>>> + if (sel.getSQL() == null) {
>>> + ((SelectImpl)sel).setSQL(store, fetch);
>>> + found = false;
>>> + }
>>> +
>>> + // only cache the union when elems length is 1
>>> for now
>>> + if (!found) { + Object[]
>>> objs1 = new Object[2];
>>> + objs1[0] = union;
>>> + objs1[1] = resJoins[0];
>>> + ((JDBCStoreManager)store).addToSqlCache(
>>> + storeCollectionUnionCache, selKey, objs1);
>>> + }
>>> + }
>>> + }
>>> + + Log log = store.getConfiguration().
>>> + getLog(JDBCConfiguration.LOG_JDBC);
>>> + if (log.isTraceEnabled()) {
>>> + if (found)
>>> + log.trace(_loc.get("cache-hit", field,
>>> this.getClass()));
>>> + else
>>> + log.trace(_loc.get("cache-missed", field,
>>> this.getClass())); + }
>>> + + ClassMapping mapping =
>>> field.getDefiningMapping();
>>> + Object oid = sm.getObjectId();
>>> + Column[] cols = mapping.getPrimaryKeyColumns();
>>> + if (sel == null)
>>> + sel =
>>> ((LogicalUnion.UnionSelect)union.getSelects()[0]).
>>> + getDelegate();
>>> +
>>> + sel.wherePrimaryKey(mapping, cols, cols, oid, store,
>>> + null, null, parmList);
>>> + List nonFKParams = sel.getSQL().getNonFKParameters();
>>> + if (nonFKParams != null && nonFKParams.size() > 0)
>>> + parmList.addAll(nonFKParams);
>>> + }
>>> + // create proxy
>>> Object coll;
>>> ChangeTracker ct = null;
>>> @@ -545,7 +618,7 @@
>>> }
>>>
>>> // load values
>>> - Result res = union.execute(store, fetch);
>>> + Result res = union.execute(store, fetch, parmList);
>>> try {
>>> int seq = -1;
>>> while (res.next()) {
>>> @@ -569,6 +642,21 @@
>>> sm.storeObject(field.getIndex(), coll);
>>> }
>>>
>>> + protected Union newUnion(final OpenJPAStateManager sm, final
>>> JDBCStore store,
>>> + final JDBCFetchConfiguration fetch, final ClassMapping[] elems,
>>> + final Joins[] resJoins) {
>>> + Union union = store.getSQLFactory().newUnion
>>> + (Math.max(1, elems.length));
>>> + union.select(new Union.Selector() {
>>> + public void select(Select sel, int idx) {
>>> + ClassMapping elem = (elems.length == 0) ? null :
>>> elems[idx];
>>> + resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
>>> + JDBCFetchConfiguration.EAGER_PARALLEL);
>>> + }
>>> + });
>>> + return union;
>>> + }
>>> + /**
>>> * Select data for loading, starting in field table.
>>> */
>>>
>>> Modified:
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java?rev=745691&r1=745690&r2=745691&view=diff
>>>
>>> ==============================================================================
>>>
>>> ---
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>> (original)
>>> +++
>>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>> Wed Feb 18 23:27:25 2009
>>> @@ -56,6 +56,7 @@
>>> private List _subsels = null;
>>> private List _params = null;
>>> private List _cols = null;
>>> + private List _nonFKParams = null;
>>>
>>> /**
>>> * Default constructor.
>>> @@ -146,6 +147,11 @@
>>> _cols.add(paramIndex, null);
>>> }
>>> }
>>> + if (buf._nonFKParams != null) {
>>> + if (_nonFKParams == null)
>>> + _nonFKParams = new ArrayList();
>>> + _nonFKParams.addAll(buf._nonFKParams);
>>> + }
>>> }
>>>
>>> public SQLBuffer append(Table table) {
>>> @@ -265,6 +271,11 @@
>>> if (isFK)
>>> break;
>>> }
>>> + if (!isFK) {
>>> + if (_nonFKParams == null)
>>> + _nonFKParams = new ArrayList();
>>> + _nonFKParams.add(o); + }
>>> }
>>> return this;
>>> }
>>> @@ -388,6 +399,9 @@
>>> return (_params == null) ? Collections.EMPTY_LIST : _params;
>>> }
>>>
>>> + public List getNonFKParameters() {
>>> + return (_nonFKParams == null) ? Collections.EMPTY_LIST :
>>> _nonFKParams;
>>> + }
>>> /**
>>> * Return the SQL for this buffer.
>>> */
>>>
>>> Modified:
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java?rev=745691&r1=745690&r2=745691&view=diff
>>>
>>> ==============================================================================
>>>
>>> ---
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>> (original)
>>> +++
>>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>> Wed Feb 18 23:27:25 2009
>>> @@ -18,10 +18,10 @@
>>> */
>>> package org.apache.openjpa.persistence.jdbc.query.cache;
>>>
>>> -import java.util.List;
>>> +import java.util.ArrayList;
>>> +import java.util.Collection;
>>>
>>> import javax.persistence.EntityManager;
>>> -import javax.persistence.EntityTransaction;
>>> import javax.persistence.Query;
>>>
>>> import org.apache.openjpa.persistence.test.SQLListenerTestCase;
>>> @@ -45,21 +45,18 @@
>>> * * @author Pinaki Poddar
>>> * @author Vikram Bhatia
>>> - * @author David Blevins
>>> + * */
>>> public class TestNonPrimaryKeyQueryParameters extends
>>> SQLListenerTestCase {
>>> private static final int FULLTIME_EMPLOYEE_COUNT = 3;
>>> private static final int PARTTIME_EMPLOYEE_COUNT = 2;
>>> - private static final int LINEITEM_PER_INVOICE = 1;
>>> private static final String DEPT_NAME = "ENGINEERING";
>>>
>>> public void setUp() {
>>> super.setUp(CLEAR_TABLES, Department.class, Employee.class,
>>> FullTimeEmployee.class, PartTimeEmployee.class,
>>> - Invoice.class, LineItem.class,
>>> "openjpa.jdbc.QuerySQLCache", "true");
>>> createDepartment(DEPT_NAME);
>>> - createInvoice();
>>> sql.clear();
>>> }
>>>
>>> @@ -106,10 +103,6 @@
>>> .size());
>>>
>>> assertSQL(".* AND t0.TYPE = .*");
>>> - - Invoice invoice = em.find(Invoice.class, new
>>> InvoiceKey(1, "Red"));
>>> - List<LineItem> list = invoice.getLineItems();
>>> - assertEquals(LINEITEM_PER_INVOICE, list.size());
>>> em.close();
>>> }
>>>
>>> @@ -161,20 +154,4 @@
>>> em.close();
>>>
>>> }
>>> - - private void createInvoice() {
>>> - EntityManager em = emf.createEntityManager();
>>> - EntityTransaction tran = em.getTransaction();
>>> - tran.begin();
>>> - Invoice invoice = new Invoice(1, "Red", 1.30);
>>> - for (int i = 1; i <= LINEITEM_PER_INVOICE; i++) {
>>> - LineItem item = new LineItem(String.valueOf(i), 10);
>>> - item.setInvoice(invoice);
>>> - invoice.getLineItems().add(item);
>>> - em.persist(invoice);
>>> - }
>>> - em.flush();
>>> - tran.commit();
>>> - em.close(); - } }
>>>
>>>
>>>
>>
>
Re: OpenJPA svn commit: r745691 - Reverting OPENJPA-838 and OPENJPA-917
for additional testing.
Posted by Donald Woods <dw...@apache.org>.
To be more specific, we need OPENJPA-838 to resolve an earlier reported
problem in the EJB TCK by David Blevins in OPENJPA-872.
-Donald
Donald Woods wrote:
> Mike, removing the below fixes is causing known EJB TCK failures in
> Geronimo. We'll need these reapplied before we can cut a OpenJPA 1.2.1
> release and a Geronimo 2.1.4 release....
>
>
> -Donald
>
>
>
> mikedd@apache.org wrote:
>> Author: mikedd
>> Date: Wed Feb 18 23:27:25 2009
>> New Revision: 745691
>>
>> URL: http://svn.apache.org/viewvc?rev=745691&view=rev
>> Log:
>> Reverting OPENJPA-838 and OPENJPA-917 for additional testing.
>>
>> Removed:
>>
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/Invoice.java
>>
>>
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/InvoiceKey.java
>>
>>
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/LineItem.java
>>
>> Modified:
>>
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>
>>
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>
>>
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>
>>
>> Modified:
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>
>> URL:
>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java?rev=745691&r1=745690&r2=745691&view=diff
>>
>> ==============================================================================
>>
>> ---
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>> (original)
>> +++
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>> Wed Feb 18 23:27:25 2009
>> @@ -26,8 +26,11 @@
>> import java.util.Map;
>>
>> import org.apache.openjpa.enhance.PersistenceCapable;
>> +import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
>> import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
>> +import org.apache.openjpa.jdbc.kernel.JDBCFetchConfigurationImpl;
>> import org.apache.openjpa.jdbc.kernel.JDBCStore;
>> +import org.apache.openjpa.jdbc.kernel.JDBCStoreManager;
>> import org.apache.openjpa.jdbc.meta.ClassMapping;
>> import org.apache.openjpa.jdbc.meta.FieldMapping;
>> import org.apache.openjpa.jdbc.meta.FieldStrategy;
>> @@ -35,11 +38,14 @@
>> import org.apache.openjpa.jdbc.schema.Column;
>> import org.apache.openjpa.jdbc.schema.ForeignKey;
>> import org.apache.openjpa.jdbc.sql.Joins;
>> +import org.apache.openjpa.jdbc.sql.LogicalUnion;
>> import org.apache.openjpa.jdbc.sql.Result;
>> import org.apache.openjpa.jdbc.sql.Select;
>> import org.apache.openjpa.jdbc.sql.SelectExecutor;
>> +import org.apache.openjpa.jdbc.sql.SelectImpl;
>> import org.apache.openjpa.jdbc.sql.Union;
>> import org.apache.openjpa.kernel.OpenJPAStateManager;
>> +import org.apache.openjpa.lib.log.Log;
>> import org.apache.openjpa.lib.util.Localizer;
>> import org.apache.openjpa.meta.ClassMetaData;
>> import org.apache.openjpa.meta.JavaTypes;
>> @@ -520,19 +526,86 @@
>> return;
>> }
>>
>> + //cache union for field here
>> // select data for this sm
>> + boolean found = true;
>> final ClassMapping[] elems =
>> getIndependentElementMappings(true);
>> final Joins[] resJoins = new Joins[Math.max(1, elems.length)];
>> - Union union = store.getSQLFactory().newUnion
>> - (Math.max(1, elems.length));
>> - union.select(new Union.Selector() {
>> - public void select(Select sel, int idx) {
>> - ClassMapping elem = (elems.length == 0) ? null :
>> elems[idx];
>> - resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
>> - JDBCFetchConfiguration.EAGER_PARALLEL);
>> + List parmList = null;
>> + Union union = null;
>> + SelectImpl sel = null;
>> + Map<JDBCStoreManager.SelectKey, Object[]>
>> storeCollectionUnionCache = null;
>> + JDBCStoreManager.SelectKey selKey = null;
>> + if (!((JDBCStoreManager)store).isQuerySQLCacheOn() ||
>> elems.length > 1)
>> + union = newUnion(sm, store, fetch, elems, resJoins);
>> + else {
>> + parmList = new ArrayList();
>> + JDBCFetchConfiguration fetchClone = new
>> JDBCFetchConfigurationImpl();
>> + fetchClone.copy(fetch);
>> + + // to specify the type so that no cast is needed
>> + storeCollectionUnionCache = ((JDBCStoreManager)store).
>> +
>> getCacheMapFromQuerySQLCache(StoreCollectionFieldStrategy.class);
>> + selKey = + new
>> JDBCStoreManager.SelectKey(null, field, fetchClone);
>> + Object[] objs = storeCollectionUnionCache.get(selKey);
>> + if (objs != null) {
>> + union = (Union) objs[0];
>> + resJoins[0] = (Joins) objs[1];
>> }
>> - });
>> -
>> + else {
>> + synchronized(storeCollectionUnionCache) {
>> + objs = storeCollectionUnionCache.get(selKey);
>> + if (objs == null) {
>> + // select data for this sm
>> + union = newUnion(sm, store, fetch, elems,
>> resJoins);
>> + found = false;
>> + } else {
>> + union = (Union) objs[0];
>> + resJoins[0] = (Joins) objs[1];
>> + }
>> +
>> + sel =
>> ((LogicalUnion.UnionSelect)union.getSelects()[0]).
>> + getDelegate();
>> + if (sel.getSQL() == null) {
>> + ((SelectImpl)sel).setSQL(store, fetch);
>> + found = false;
>> + }
>> +
>> + // only cache the union when elems length is 1
>> for now
>> + if (!found) { + Object[]
>> objs1 = new Object[2];
>> + objs1[0] = union;
>> + objs1[1] = resJoins[0];
>> + ((JDBCStoreManager)store).addToSqlCache(
>> + storeCollectionUnionCache, selKey, objs1);
>> + }
>> + }
>> + }
>> + + Log log = store.getConfiguration().
>> + getLog(JDBCConfiguration.LOG_JDBC);
>> + if (log.isTraceEnabled()) {
>> + if (found)
>> + log.trace(_loc.get("cache-hit", field,
>> this.getClass()));
>> + else
>> + log.trace(_loc.get("cache-missed", field,
>> this.getClass())); + }
>> + + ClassMapping mapping =
>> field.getDefiningMapping();
>> + Object oid = sm.getObjectId();
>> + Column[] cols = mapping.getPrimaryKeyColumns();
>> + if (sel == null)
>> + sel = ((LogicalUnion.UnionSelect)union.getSelects()[0]).
>> + getDelegate();
>> +
>> + sel.wherePrimaryKey(mapping, cols, cols, oid, store,
>> + null, null, parmList);
>> + List nonFKParams = sel.getSQL().getNonFKParameters();
>> + if (nonFKParams != null && nonFKParams.size() > 0)
>> + parmList.addAll(nonFKParams);
>> + }
>> + // create proxy
>> Object coll;
>> ChangeTracker ct = null;
>> @@ -545,7 +618,7 @@
>> }
>>
>> // load values
>> - Result res = union.execute(store, fetch);
>> + Result res = union.execute(store, fetch, parmList);
>> try {
>> int seq = -1;
>> while (res.next()) {
>> @@ -569,6 +642,21 @@
>> sm.storeObject(field.getIndex(), coll);
>> }
>>
>> + protected Union newUnion(final OpenJPAStateManager sm, final
>> JDBCStore store,
>> + final JDBCFetchConfiguration fetch, final ClassMapping[] elems,
>> + final Joins[] resJoins) {
>> + Union union = store.getSQLFactory().newUnion
>> + (Math.max(1, elems.length));
>> + union.select(new Union.Selector() {
>> + public void select(Select sel, int idx) {
>> + ClassMapping elem = (elems.length == 0) ? null :
>> elems[idx];
>> + resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
>> + JDBCFetchConfiguration.EAGER_PARALLEL);
>> + }
>> + });
>> + return union;
>> + }
>> + /**
>> * Select data for loading, starting in field table.
>> */
>>
>> Modified:
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>
>> URL:
>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java?rev=745691&r1=745690&r2=745691&view=diff
>>
>> ==============================================================================
>>
>> ---
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>> (original)
>> +++
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>> Wed Feb 18 23:27:25 2009
>> @@ -56,6 +56,7 @@
>> private List _subsels = null;
>> private List _params = null;
>> private List _cols = null;
>> + private List _nonFKParams = null;
>>
>> /**
>> * Default constructor.
>> @@ -146,6 +147,11 @@
>> _cols.add(paramIndex, null);
>> }
>> }
>> + if (buf._nonFKParams != null) {
>> + if (_nonFKParams == null)
>> + _nonFKParams = new ArrayList();
>> + _nonFKParams.addAll(buf._nonFKParams);
>> + }
>> }
>>
>> public SQLBuffer append(Table table) {
>> @@ -265,6 +271,11 @@
>> if (isFK)
>> break;
>> }
>> + if (!isFK) {
>> + if (_nonFKParams == null)
>> + _nonFKParams = new ArrayList();
>> + _nonFKParams.add(o); + }
>> }
>> return this;
>> }
>> @@ -388,6 +399,9 @@
>> return (_params == null) ? Collections.EMPTY_LIST : _params;
>> }
>>
>> + public List getNonFKParameters() {
>> + return (_nonFKParams == null) ? Collections.EMPTY_LIST :
>> _nonFKParams;
>> + }
>> /**
>> * Return the SQL for this buffer.
>> */
>>
>> Modified:
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>
>> URL:
>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java?rev=745691&r1=745690&r2=745691&view=diff
>>
>> ==============================================================================
>>
>> ---
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>> (original)
>> +++
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>> Wed Feb 18 23:27:25 2009
>> @@ -18,10 +18,10 @@
>> */
>> package org.apache.openjpa.persistence.jdbc.query.cache;
>>
>> -import java.util.List;
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>>
>> import javax.persistence.EntityManager;
>> -import javax.persistence.EntityTransaction;
>> import javax.persistence.Query;
>>
>> import org.apache.openjpa.persistence.test.SQLListenerTestCase;
>> @@ -45,21 +45,18 @@
>> * * @author Pinaki Poddar
>> * @author Vikram Bhatia
>> - * @author David Blevins
>> + * */
>> public class TestNonPrimaryKeyQueryParameters extends
>> SQLListenerTestCase {
>> private static final int FULLTIME_EMPLOYEE_COUNT = 3;
>> private static final int PARTTIME_EMPLOYEE_COUNT = 2;
>> - private static final int LINEITEM_PER_INVOICE = 1;
>> private static final String DEPT_NAME = "ENGINEERING";
>>
>> public void setUp() {
>> super.setUp(CLEAR_TABLES, Department.class, Employee.class,
>> FullTimeEmployee.class, PartTimeEmployee.class,
>> - Invoice.class, LineItem.class,
>> "openjpa.jdbc.QuerySQLCache", "true");
>> createDepartment(DEPT_NAME);
>> - createInvoice();
>> sql.clear();
>> }
>>
>> @@ -106,10 +103,6 @@
>> .size());
>>
>> assertSQL(".* AND t0.TYPE = .*");
>> -
>> - Invoice invoice = em.find(Invoice.class, new InvoiceKey(1,
>> "Red"));
>> - List<LineItem> list = invoice.getLineItems();
>> - assertEquals(LINEITEM_PER_INVOICE, list.size());
>> em.close();
>> }
>>
>> @@ -161,20 +154,4 @@
>> em.close();
>>
>> }
>> -
>> - private void createInvoice() {
>> - EntityManager em = emf.createEntityManager();
>> - EntityTransaction tran = em.getTransaction();
>> - tran.begin();
>> - Invoice invoice = new Invoice(1, "Red", 1.30);
>> - for (int i = 1; i <= LINEITEM_PER_INVOICE; i++) {
>> - LineItem item = new LineItem(String.valueOf(i), 10);
>> - item.setInvoice(invoice);
>> - invoice.getLineItems().add(item);
>> - em.persist(invoice);
>> - }
>> - em.flush();
>> - tran.commit();
>> - em.close(); - }
>> }
>>
>>
>>
>
Re: OpenJPA svn commit: r745691 - Reverting OPENJPA-838 and OPENJPA-917
for additional testing.
Posted by Donald Woods <dw...@apache.org>.
To be more specific, we need OPENJPA-838 to resolve an earlier reported
problem in the EJB TCK by David Blevins in OPENJPA-872.
-Donald
Donald Woods wrote:
> Mike, removing the below fixes is causing known EJB TCK failures in
> Geronimo. We'll need these reapplied before we can cut a OpenJPA 1.2.1
> release and a Geronimo 2.1.4 release....
>
>
> -Donald
>
>
>
> mikedd@apache.org wrote:
>> Author: mikedd
>> Date: Wed Feb 18 23:27:25 2009
>> New Revision: 745691
>>
>> URL: http://svn.apache.org/viewvc?rev=745691&view=rev
>> Log:
>> Reverting OPENJPA-838 and OPENJPA-917 for additional testing.
>>
>> Removed:
>>
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/Invoice.java
>>
>>
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/InvoiceKey.java
>>
>>
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/LineItem.java
>>
>> Modified:
>>
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>
>>
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>
>>
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>
>>
>> Modified:
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>>
>> URL:
>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java?rev=745691&r1=745690&r2=745691&view=diff
>>
>> ==============================================================================
>>
>> ---
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>> (original)
>> +++
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
>> Wed Feb 18 23:27:25 2009
>> @@ -26,8 +26,11 @@
>> import java.util.Map;
>>
>> import org.apache.openjpa.enhance.PersistenceCapable;
>> +import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
>> import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
>> +import org.apache.openjpa.jdbc.kernel.JDBCFetchConfigurationImpl;
>> import org.apache.openjpa.jdbc.kernel.JDBCStore;
>> +import org.apache.openjpa.jdbc.kernel.JDBCStoreManager;
>> import org.apache.openjpa.jdbc.meta.ClassMapping;
>> import org.apache.openjpa.jdbc.meta.FieldMapping;
>> import org.apache.openjpa.jdbc.meta.FieldStrategy;
>> @@ -35,11 +38,14 @@
>> import org.apache.openjpa.jdbc.schema.Column;
>> import org.apache.openjpa.jdbc.schema.ForeignKey;
>> import org.apache.openjpa.jdbc.sql.Joins;
>> +import org.apache.openjpa.jdbc.sql.LogicalUnion;
>> import org.apache.openjpa.jdbc.sql.Result;
>> import org.apache.openjpa.jdbc.sql.Select;
>> import org.apache.openjpa.jdbc.sql.SelectExecutor;
>> +import org.apache.openjpa.jdbc.sql.SelectImpl;
>> import org.apache.openjpa.jdbc.sql.Union;
>> import org.apache.openjpa.kernel.OpenJPAStateManager;
>> +import org.apache.openjpa.lib.log.Log;
>> import org.apache.openjpa.lib.util.Localizer;
>> import org.apache.openjpa.meta.ClassMetaData;
>> import org.apache.openjpa.meta.JavaTypes;
>> @@ -520,19 +526,86 @@
>> return;
>> }
>>
>> + //cache union for field here
>> // select data for this sm
>> + boolean found = true;
>> final ClassMapping[] elems =
>> getIndependentElementMappings(true);
>> final Joins[] resJoins = new Joins[Math.max(1, elems.length)];
>> - Union union = store.getSQLFactory().newUnion
>> - (Math.max(1, elems.length));
>> - union.select(new Union.Selector() {
>> - public void select(Select sel, int idx) {
>> - ClassMapping elem = (elems.length == 0) ? null :
>> elems[idx];
>> - resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
>> - JDBCFetchConfiguration.EAGER_PARALLEL);
>> + List parmList = null;
>> + Union union = null;
>> + SelectImpl sel = null;
>> + Map<JDBCStoreManager.SelectKey, Object[]>
>> storeCollectionUnionCache = null;
>> + JDBCStoreManager.SelectKey selKey = null;
>> + if (!((JDBCStoreManager)store).isQuerySQLCacheOn() ||
>> elems.length > 1)
>> + union = newUnion(sm, store, fetch, elems, resJoins);
>> + else {
>> + parmList = new ArrayList();
>> + JDBCFetchConfiguration fetchClone = new
>> JDBCFetchConfigurationImpl();
>> + fetchClone.copy(fetch);
>> + + // to specify the type so that no cast is needed
>> + storeCollectionUnionCache = ((JDBCStoreManager)store).
>> +
>> getCacheMapFromQuerySQLCache(StoreCollectionFieldStrategy.class);
>> + selKey = + new
>> JDBCStoreManager.SelectKey(null, field, fetchClone);
>> + Object[] objs = storeCollectionUnionCache.get(selKey);
>> + if (objs != null) {
>> + union = (Union) objs[0];
>> + resJoins[0] = (Joins) objs[1];
>> }
>> - });
>> -
>> + else {
>> + synchronized(storeCollectionUnionCache) {
>> + objs = storeCollectionUnionCache.get(selKey);
>> + if (objs == null) {
>> + // select data for this sm
>> + union = newUnion(sm, store, fetch, elems,
>> resJoins);
>> + found = false;
>> + } else {
>> + union = (Union) objs[0];
>> + resJoins[0] = (Joins) objs[1];
>> + }
>> +
>> + sel =
>> ((LogicalUnion.UnionSelect)union.getSelects()[0]).
>> + getDelegate();
>> + if (sel.getSQL() == null) {
>> + ((SelectImpl)sel).setSQL(store, fetch);
>> + found = false;
>> + }
>> +
>> + // only cache the union when elems length is 1
>> for now
>> + if (!found) { + Object[]
>> objs1 = new Object[2];
>> + objs1[0] = union;
>> + objs1[1] = resJoins[0];
>> + ((JDBCStoreManager)store).addToSqlCache(
>> + storeCollectionUnionCache, selKey, objs1);
>> + }
>> + }
>> + }
>> + + Log log = store.getConfiguration().
>> + getLog(JDBCConfiguration.LOG_JDBC);
>> + if (log.isTraceEnabled()) {
>> + if (found)
>> + log.trace(_loc.get("cache-hit", field,
>> this.getClass()));
>> + else
>> + log.trace(_loc.get("cache-missed", field,
>> this.getClass())); + }
>> + + ClassMapping mapping =
>> field.getDefiningMapping();
>> + Object oid = sm.getObjectId();
>> + Column[] cols = mapping.getPrimaryKeyColumns();
>> + if (sel == null)
>> + sel = ((LogicalUnion.UnionSelect)union.getSelects()[0]).
>> + getDelegate();
>> +
>> + sel.wherePrimaryKey(mapping, cols, cols, oid, store,
>> + null, null, parmList);
>> + List nonFKParams = sel.getSQL().getNonFKParameters();
>> + if (nonFKParams != null && nonFKParams.size() > 0)
>> + parmList.addAll(nonFKParams);
>> + }
>> + // create proxy
>> Object coll;
>> ChangeTracker ct = null;
>> @@ -545,7 +618,7 @@
>> }
>>
>> // load values
>> - Result res = union.execute(store, fetch);
>> + Result res = union.execute(store, fetch, parmList);
>> try {
>> int seq = -1;
>> while (res.next()) {
>> @@ -569,6 +642,21 @@
>> sm.storeObject(field.getIndex(), coll);
>> }
>>
>> + protected Union newUnion(final OpenJPAStateManager sm, final
>> JDBCStore store,
>> + final JDBCFetchConfiguration fetch, final ClassMapping[] elems,
>> + final Joins[] resJoins) {
>> + Union union = store.getSQLFactory().newUnion
>> + (Math.max(1, elems.length));
>> + union.select(new Union.Selector() {
>> + public void select(Select sel, int idx) {
>> + ClassMapping elem = (elems.length == 0) ? null :
>> elems[idx];
>> + resJoins[idx] = selectAll(sel, elem, sm, store, fetch,
>> + JDBCFetchConfiguration.EAGER_PARALLEL);
>> + }
>> + });
>> + return union;
>> + }
>> + /**
>> * Select data for loading, starting in field table.
>> */
>>
>> Modified:
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>>
>> URL:
>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java?rev=745691&r1=745690&r2=745691&view=diff
>>
>> ==============================================================================
>>
>> ---
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>> (original)
>> +++
>> openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java
>> Wed Feb 18 23:27:25 2009
>> @@ -56,6 +56,7 @@
>> private List _subsels = null;
>> private List _params = null;
>> private List _cols = null;
>> + private List _nonFKParams = null;
>>
>> /**
>> * Default constructor.
>> @@ -146,6 +147,11 @@
>> _cols.add(paramIndex, null);
>> }
>> }
>> + if (buf._nonFKParams != null) {
>> + if (_nonFKParams == null)
>> + _nonFKParams = new ArrayList();
>> + _nonFKParams.addAll(buf._nonFKParams);
>> + }
>> }
>>
>> public SQLBuffer append(Table table) {
>> @@ -265,6 +271,11 @@
>> if (isFK)
>> break;
>> }
>> + if (!isFK) {
>> + if (_nonFKParams == null)
>> + _nonFKParams = new ArrayList();
>> + _nonFKParams.add(o); + }
>> }
>> return this;
>> }
>> @@ -388,6 +399,9 @@
>> return (_params == null) ? Collections.EMPTY_LIST : _params;
>> }
>>
>> + public List getNonFKParameters() {
>> + return (_nonFKParams == null) ? Collections.EMPTY_LIST :
>> _nonFKParams;
>> + }
>> /**
>> * Return the SQL for this buffer.
>> */
>>
>> Modified:
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>>
>> URL:
>> http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java?rev=745691&r1=745690&r2=745691&view=diff
>>
>> ==============================================================================
>>
>> ---
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>> (original)
>> +++
>> openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/cache/TestNonPrimaryKeyQueryParameters.java
>> Wed Feb 18 23:27:25 2009
>> @@ -18,10 +18,10 @@
>> */
>> package org.apache.openjpa.persistence.jdbc.query.cache;
>>
>> -import java.util.List;
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>>
>> import javax.persistence.EntityManager;
>> -import javax.persistence.EntityTransaction;
>> import javax.persistence.Query;
>>
>> import org.apache.openjpa.persistence.test.SQLListenerTestCase;
>> @@ -45,21 +45,18 @@
>> * * @author Pinaki Poddar
>> * @author Vikram Bhatia
>> - * @author David Blevins
>> + * */
>> public class TestNonPrimaryKeyQueryParameters extends
>> SQLListenerTestCase {
>> private static final int FULLTIME_EMPLOYEE_COUNT = 3;
>> private static final int PARTTIME_EMPLOYEE_COUNT = 2;
>> - private static final int LINEITEM_PER_INVOICE = 1;
>> private static final String DEPT_NAME = "ENGINEERING";
>>
>> public void setUp() {
>> super.setUp(CLEAR_TABLES, Department.class, Employee.class,
>> FullTimeEmployee.class, PartTimeEmployee.class,
>> - Invoice.class, LineItem.class,
>> "openjpa.jdbc.QuerySQLCache", "true");
>> createDepartment(DEPT_NAME);
>> - createInvoice();
>> sql.clear();
>> }
>>
>> @@ -106,10 +103,6 @@
>> .size());
>>
>> assertSQL(".* AND t0.TYPE = .*");
>> -
>> - Invoice invoice = em.find(Invoice.class, new InvoiceKey(1,
>> "Red"));
>> - List<LineItem> list = invoice.getLineItems();
>> - assertEquals(LINEITEM_PER_INVOICE, list.size());
>> em.close();
>> }
>>
>> @@ -161,20 +154,4 @@
>> em.close();
>>
>> }
>> -
>> - private void createInvoice() {
>> - EntityManager em = emf.createEntityManager();
>> - EntityTransaction tran = em.getTransaction();
>> - tran.begin();
>> - Invoice invoice = new Invoice(1, "Red", 1.30);
>> - for (int i = 1; i <= LINEITEM_PER_INVOICE; i++) {
>> - LineItem item = new LineItem(String.valueOf(i), 10);
>> - item.setInvoice(invoice);
>> - invoice.getLineItems().add(item);
>> - em.persist(invoice);
>> - }
>> - em.flush();
>> - tran.commit();
>> - em.close(); - }
>> }
>>
>>
>>
>