Author: arminw
Date: Fri Mar 30 16:15:02 2007
New Revision: 524321
URL: http://svn.apache.org/viewvc?view=rev&rev=524321
Log:
introduce new method Query.hasPrefetchedRelationships(), move methods to super
interface
Modified:
db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java
db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java
db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java
db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java
db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java
db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java
db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java
URL:
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java Fri Mar 30
16:15:02 2007
@@ -76,23 +76,25 @@
* Convenience shortcut method for
* [EMAIL PROTECTED] #buildIdentity(java.lang.Class, java.lang.Class,
java.lang.String[], java.lang.Object[])}.
*
- * @param realClass The class of the associated object
+ * @param clazz The class of the persistent object we look for. This can
be an interface,
+ * abstract base class or the real implementation class.
* @param pkFieldName The field names of the PK fields
* @param pkValues The PK values
* @return The new <em>Identity</em> object
*/
- Identity buildIdentity(Class realClass, String[] pkFieldName, Object[]
pkValues);
+ Identity buildIdentity(Class clazz, String[] pkFieldName, Object[]
pkValues);
/**
* Convenience method for persistent objects with single primary key.
* NOTE: Do not use for objects with composed PK!
*
- * @param realClass The class of the associated object
- * @param pkValue The PK value
+ * @param clazz The class of the persistent object we look for. This can
be an interface,
+ * abstract base class or the real implementation class.
+ * @param pkValue The primary key value.
* @return The new <em>Identity</em> object
* @see #buildIdentity(java.lang.Class, java.lang.String[],
java.lang.Object[])
*/
- Identity buildIdentity(Class realClass, Object pkValue);
+ Identity buildIdentity(Class clazz, Object pkValue);
/**
* Create a new [EMAIL PROTECTED] Identity} object based on given
arguments - NOTE: There
Modified:
db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
URL:
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
Fri Mar 30 16:15:02 2007
@@ -1363,23 +1363,9 @@
if(query != null)
{
- /*
- * MBAIRD: we should create a scrollable resultset if the start at
- * index or end at index is set
- */
- scrollable = ((query.getStartAtIndex() > Query.NO_START_AT_INDEX)
|| (query.getEndAtIndex() > Query.NO_END_AT_INDEX));
-
- if(query instanceof QueryByCriteria)
- {
- QueryByCriteria qbc = (QueryByCriteria) query;
- /*
- * OR if the prefetching of relationships is being used.
- */
- if(qbc.getPrefetchedRelationships() != null &&
!qbc.getPrefetchedRelationships().isEmpty())
- {
- scrollable = true;
- }
- }
+ scrollable = (query.getStartAtIndex() > Query.NO_START_AT_INDEX)
+ || (query.getEndAtIndex() > Query.NO_END_AT_INDEX)
+ || query.hasPrefetchedRelationships();
}
return scrollable;
}
Modified:
db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java
URL:
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java Fri
Mar 30 16:15:02 2007
@@ -318,7 +318,7 @@
String relName;
RelationshipPrefetcher[] prefetchers;
- if (query == null || query.getPrefetchedRelationships() == null ||
query.getPrefetchedRelationships().isEmpty())
+ if (query == null || !query.hasPrefetchedRelationships())
{
return;
}
Modified:
db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java
URL:
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java
Fri Mar 30 16:15:02 2007
@@ -31,7 +31,6 @@
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException;
import org.apache.ojb.broker.metadata.FieldDescriptor;
-import org.apache.ojb.broker.util.BrokerHelper;
import org.apache.ojb.broker.util.sequence.SequenceManager;
import org.apache.ojb.broker.util.sequence.SequenceManagerTransientImpl;
@@ -100,7 +99,6 @@
cld = broker.getClassDescriptor(realClass);
}
topLevelClass = cld.getTopLevelClass();
- BrokerHelper helper = broker.serviceBrokerHelper();
FieldDescriptor[] fields = cld.getPkFields();
pks = new Object[fields.length];
@@ -121,6 +119,7 @@
result = new Identity(realClass, topLevelClass,
pks, true);
transientIdentityMap.put(objOrProxy, result);
}
+ // we only need tp populate one temporary PK
break;
}
else
@@ -176,7 +175,12 @@
else
{
// in other more complex cases we do several check
- FieldDescriptor[] flds =
broker.getClassDescriptor(realClass).getPkFields();
+ ClassDescriptor cld = broker.getClassDescriptor(realClass);
+ if(!cld.isMappedToTable())
+ {
+ cld = cld.getRepository().findFirstConcreteClass(cld);
+ }
+ FieldDescriptor[] flds = cld.getPkFields();
if(!isOrdered(flds, pkFieldNames))
{
orderedPKValues = reorderFieldValues(flds, pkFieldNames,
pkValues);
@@ -242,9 +246,9 @@
}
/** @see org.apache.ojb.broker.IdentityFactory#buildIdentity(Class,
String[], Object[]) */
- public Identity buildIdentity(final Class realClass, final String[]
pkFieldNames, final Object[] pkValues)
+ public Identity buildIdentity(final Class clazz, final String[]
pkFieldNames, final Object[] pkValues)
{
- return buildIdentity(realClass, broker.getTopLevelClass(realClass),
pkFieldNames, pkValues);
+ return buildIdentity(clazz, broker.getTopLevelClass(clazz),
pkFieldNames, pkValues);
}
/** @see org.apache.ojb.broker.IdentityFactory#buildIdentity(Class,
String[], Object[]) */
@@ -254,9 +258,9 @@
}
/** @see org.apache.ojb.broker.IdentityFactory#buildIdentity(Class,
Object) */
- public Identity buildIdentity(final Class realClass, final Object pkValue)
+ public Identity buildIdentity(final Class clazz, final Object pkValue)
{
- return buildIdentity(realClass, (String[]) null, new
Object[]{pkValue});
+ return buildIdentity(clazz, (String[]) null, new Object[]{pkValue});
}
/**
Modified:
db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java
URL:
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java
Fri Mar 30 16:15:02 2007
@@ -17,6 +17,7 @@
import java.io.Serializable;
import java.util.List;
+import java.util.Collections;
import org.apache.ojb.broker.PersistenceBrokerInternal;
import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor;
@@ -246,4 +247,17 @@
jcd = broker.serviceConnectionManager().getConnectionDescriptor();
}
+ public void addPrefetchedRelationship(String aName)
+ {
+ }
+
+ public List getPrefetchedRelationships()
+ {
+ return Collections.EMPTY_LIST;
+ }
+
+ public boolean hasPrefetchedRelationships()
+ {
+ return false;
+ }
}
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java
URL:
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java Fri Mar 30
16:15:02 2007
@@ -16,6 +16,7 @@
*/
import java.io.Serializable;
+import java.util.List;
import org.apache.ojb.broker.PersistenceBrokerInternal;
@@ -51,6 +52,25 @@
public static final int NO_END_AT_INDEX = 0;
public static final boolean SCROLLABLE = true;
public static final boolean NOT_SCROLLABLE = false;
+
+ /**
+ * add the name of aRelationship for prefetched read
+ */
+ public void addPrefetchedRelationship(String aName);
+
+ /**
+ * Check for prefetched relationships.
+ *
+ * @return <tt>True</tt> if relationships marked for prefetching.
+ */
+ public boolean hasPrefetchedRelationships();
+
+ /**
+ * Returns the names of Relationships to be prefetched
+ *
+ * @return List of Strings
+ */
+ public List getPrefetchedRelationships();
/**
* Return the target class, representing the extend to be searched.
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java
URL:
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java Fri
Mar 30 16:15:02 2007
@@ -196,18 +196,6 @@
public List getOrderBy();
/**
- * add the name of aRelationship for prefetched read
- */
- public void addPrefetchedRelationship(String aName);
-
- /**
- * Returns the names of Relationships to be prefetched
- *
- * @return List of Strings
- */
- public List getPrefetchedRelationships();
-
- /**
* Get a Collection containing all Paths having an Outer-Joins-Setting.
*
* @return a Collection containing the Paths (Strings)
Modified:
db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java
URL:
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java
Fri Mar 30 16:15:02 2007
@@ -472,6 +472,12 @@
return temp;
}
+ public boolean hasPrefetchedRelationships()
+ {
+ return m_prefetchedRelationships.size() > 0 ||
+ (getCriteria() != null &&
getCriteria().getPrefetchedRelationships().size() > 0);
+ }
+
/**
* @see org.apache.ojb.broker.query.QueryByCriteria#getOuterJoinPaths()
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]