Author: arminw
Date: Tue Nov 7 07:18:13 2006
New Revision: 472135
URL: http://svn.apache.org/viewvc?view=rev&rev=472135
Log:
minor improvements
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/MtoNBroker.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/BrokerHelper.java
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/MtoNBroker.java
URL:
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/MtoNBroker.java?view=diff&rev=472135&r1=472134&r2=472135
==============================================================================
---
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/MtoNBroker.java
(original)
+++
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/MtoNBroker.java
Tue Nov 7 07:18:13 2006
@@ -29,7 +29,6 @@
import org.apache.ojb.broker.OJBRuntimeException;
import org.apache.ojb.broker.PersistenceBrokerException;
import org.apache.ojb.broker.PersistenceBrokerSQLException;
-import org.apache.ojb.broker.core.proxy.IndirectionHandler;
import org.apache.ojb.broker.accesslayer.ResultSetAndStatement;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.CollectionDescriptor;
@@ -37,9 +36,9 @@
import org.apache.ojb.broker.metadata.FieldDescriptor;
import org.apache.ojb.broker.metadata.JdbcType;
import org.apache.ojb.broker.query.Query;
+import org.apache.ojb.broker.util.BrokerHelper;
import org.apache.ojb.broker.util.logging.Logger;
import org.apache.ojb.broker.util.logging.LoggerFactory;
-import org.apache.ojb.broker.util.BrokerHelper;
/**
* Manage all stuff related to non-decomposed M:N association.
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/BrokerHelper.java
URL:
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/BrokerHelper.java?view=diff&rev=472135&r1=472134&r2=472135
==============================================================================
---
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/BrokerHelper.java
(original)
+++
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/BrokerHelper.java
Tue Nov 7 07:18:13 2006
@@ -40,6 +40,7 @@
import org.apache.ojb.broker.core.PersistenceBrokerImpl;
import org.apache.ojb.broker.core.ValueContainer;
import org.apache.ojb.broker.core.proxy.IndirectionHandler;
+import org.apache.ojb.broker.core.proxy.ProxyFactory;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.CollectionDescriptor;
import org.apache.ojb.broker.metadata.FieldDescriptor;
@@ -73,10 +74,12 @@
{
public static final String REPOSITORY_NAME_SEPARATOR = "#";
private PersistenceBrokerImpl m_broker;
+ private ProxyFactory proxyFactory;
public BrokerHelper(PersistenceBrokerImpl broker)
{
this.m_broker = broker;
+ this.proxyFactory = broker.getProxyFactory();
}
/**
@@ -135,22 +138,22 @@
}
/**
- * Answer the real ClassDescriptor for anObj
- * ie. aCld may be an Interface of anObj, so the cld for anObj is returned
+ * Answer the real ClassDescriptor for realObject
+ * ie. aCld may be an Interface of the realObject, so
+ * the cld for realObject is returned.
*/
- private ClassDescriptor getRealClassDescriptor(ClassDescriptor aCld,
Object anObj)
+ private ClassDescriptor getRealClassDescriptor(ClassDescriptor cld, Object
realObject)
{
ClassDescriptor result;
-
- if(aCld.getClassOfObject() ==
m_broker.getProxyFactory().getRealClass(anObj))
+ Class realClass = proxyFactory.getRealClass(realObject);
+ if(cld.getClassOfObject().equals(realClass))
{
- result = aCld;
+ result = cld;
}
else
{
- result = aCld.getRepository().getDescriptorFor(anObj.getClass());
+ result = cld.getRepository().getDescriptorFor(realClass);
}
-
return result;
}
@@ -166,7 +169,7 @@
*/
public ValueContainer[] getKeyValues(ClassDescriptor cld, Object
objectOrProxy, boolean convertToSql) throws PersistenceBrokerException
{
- IndirectionHandler handler =
m_broker.getProxyFactory().getIndirectionHandler(objectOrProxy);
+ IndirectionHandler handler =
proxyFactory.getIndirectionHandler(objectOrProxy);
if(handler != null)
{
@@ -181,8 +184,9 @@
/**
* Get the values of the fk-target-fields for an obj.
- * @param rds
- * @param objOrProxy
+ *
+ * @param rds The reference descriptor
+ * @param objOrProxy The object/proxy object.
* @throws PersistenceBrokerException
*/
public ValueContainer[]
getFkTargetValuesForObject(ObjectReferenceDescriptor rds, Object objOrProxy,
boolean convertToSql) throws PersistenceBrokerException
@@ -191,7 +195,7 @@
Class refClass;
Object source = null;
- IndirectionHandler handler =
m_broker.getProxyFactory().getIndirectionHandler(objOrProxy);
+ IndirectionHandler handler =
proxyFactory.getIndirectionHandler(objOrProxy);
if(handler != null)
{
if(handler.alreadyMaterialized())
@@ -233,19 +237,20 @@
}
// use the values of the target-fields
- Object obj = m_broker.getProxyFactory().getRealObject(objOrProxy);
+ Object obj = proxyFactory.getRealObject(objOrProxy);
return getValuesForObject(targetFd, obj, convertToSql);
}
/**
* Get the values of the fk-fields for an obj.
- * @param rds
- * @param objOrProxy
+ *
+ * @param rds The reference descriptor.
+ * @param objOrProxy The object/proxy object.
* @throws PersistenceBrokerException
*/
public ValueContainer[] getFkValuesForObject(ObjectReferenceDescriptor
rds, Object objOrProxy, boolean convertToSql) throws PersistenceBrokerException
{
- Class refClass = m_broker.getProxyFactory().getRealClass(objOrProxy);
+ Class refClass = proxyFactory.getRealClass(objOrProxy);
ClassDescriptor refCld = m_broker.getClassDescriptor(refClass);
FieldDescriptor pkFd[] = refCld.getPkFields();
FieldDescriptor targetFd[] = rds.getForeignKeyFieldDescriptors(refCld);
@@ -257,7 +262,7 @@
}
// use the values of the target-fields
- Object obj = m_broker.getProxyFactory().getRealObject(objOrProxy);
+ Object obj = proxyFactory.getRealObject(objOrProxy);
return getValuesForObject(targetFd, obj, convertToSql);
}
@@ -339,7 +344,7 @@
FieldDescriptor[] fields = cld.getPkFields();
boolean hasNull = false;
// an unmaterialized proxy object can never have nullified PK's
- IndirectionHandler handler =
m_broker.getProxyFactory().getIndirectionHandler(obj);
+ IndirectionHandler handler = proxyFactory.getIndirectionHandler(obj);
if(handler == null || handler.alreadyMaterialized())
{
if(handler != null) obj = handler.getRealSubject();
@@ -391,10 +396,16 @@
}
/**
- * Get the values of the fields for an obj
- * Autoincrement values are automatically set.
- * @param fields
- * @param obj
+ * Get the values of the fields for an obj.
+ * Autoincrement values can be automatically assigned.
+ *
+ * @param fields The fields to extract values.
+ * @param obj The real (non-proxy) object.
+ * @param convertToSql If <em>true</em> all values are converted to
sql-type.
+ * @param assignAutoincrement This argument is for backward compatibility
with OJB versions
+ * before OJB 1.0.5. If <em>true</em> all nullified auto-increment fields
will be automatically
+ * populated with the next sequence value.
+ * @return An array of extracted values.
* @throws PersistenceBrokerException
*/
public ValueContainer[] getValuesForObject(FieldDescriptor[] fields,
Object obj, boolean convertToSql, boolean assignAutoincrement) throws
PersistenceBrokerException
@@ -434,6 +445,15 @@
return result;
}
+ /**
+ * Extracts the values of the specified fields.
+ *
+ * @param fields The fields to extract values.
+ * @param obj The real (non-proxy) object.
+ * @param convertToSql If <em>true</em> all values are converted to
sql-type.
+ * @return An array of extracted values.
+ * @throws PersistenceBrokerException
+ */
public ValueContainer[] getValuesForObject(FieldDescriptor[] fields,
Object obj, boolean convertToSql) throws PersistenceBrokerException
{
return getValuesForObject(fields, obj, convertToSql, false);
@@ -447,7 +467,7 @@
* the caller is reponsible to pass a valid descriptor.
*
* @param cld The [EMAIL PROTECTED]
org.apache.ojb.broker.metadata.ClassDescriptor} to extract the RW-fields
- * @param obj The object with target fields to extract.
+ * @param obj The non-proxy object with target fields to extract.
* @throws MetadataException if there is an erros accessing obj field
values
*/
public ValueContainer[] getNonKeyRwValues(ClassDescriptor cld, Object obj)
throws PersistenceBrokerException
@@ -525,7 +545,7 @@
*/
public boolean assertValidPkForDelete(ClassDescriptor cld, Object obj)
{
- if(!m_broker.getProxyFactory().isProxy(obj))
+ if(!proxyFactory.isProxy(obj))
{
FieldDescriptor fieldDescriptors[] = cld.getPkFields();
int fieldDescriptorSize = fieldDescriptors.length;
@@ -594,9 +614,9 @@
private Query getQueryByCriteriaCount(QueryByCriteria aQuery)
{
Class searchClass = aQuery.getSearchClass();
- ReportQueryByCriteria countQuery = null;
+ ReportQueryByCriteria countQuery;
Criteria countCrit = null;
- String[] columns = new String[1];
+ String[] columns;
// BRJ: copied Criteria without groupby, orderby, and prefetched
relationships
if (aQuery.getCriteria() != null)
@@ -856,7 +876,7 @@
public boolean link(Object obj, String attributeName, Object reference,
boolean insert)
{
ClassDescriptor cld =
m_broker.getDescriptorRepository().getDescriptorFor(
- m_broker.getProxyFactory().getRealClass(obj));
+ proxyFactory.getRealClass(obj));
ObjectReferenceDescriptor ord;
boolean match = false;
// first look for reference then for collection
@@ -918,7 +938,7 @@
{
boolean match = false;
ClassDescriptor cld =
m_broker.getDescriptorRepository().getDescriptorFor(
- m_broker.getProxyFactory().getRealClass(obj));
+ proxyFactory.getRealClass(obj));
ObjectReferenceDescriptor ord;
// first look for reference then for collection
@@ -983,7 +1003,7 @@
ClassDescriptor cld = ord.getClassDescriptor();
if(cld.isInterface())
{
- cld =
m_broker.getDescriptorRepository().getDescriptorFor(m_broker.getProxyFactory().getRealClass(obj));
+ cld =
m_broker.getDescriptorRepository().getDescriptorFor(proxyFactory.getRealClass(obj));
}
if (doLink)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]