You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by to...@apache.org on 2004/12/05 15:22:31 UTC
cvs commit: db-ojb/src/test/org/apache/ojb/odmg MultiDBUsageTest.java
tomdz 2004/12/05 06:22:31
Modified: src/java/org/apache/ojb/odmg/collections DListImpl.java
DMapEntry.java DMapImpl.java DListEntry.java
DSetIterator.java DListIterator.java DSetImpl.java
DBagImpl.java
src/java/org/apache/ojb/odmg ImplementationImpl.java
DatabaseImpl.java TransactionImpl.java
PBCapsule.java
src/java/org/apache/ojb/odmg/oql OQLQueryImpl.java
src/java/org/apache/ojb/otm/core BaseConnection.java
. release-notes.txt
src/test/org/apache/ojb/odmg MultiDBUsageTest.java
Log:
Changed ODMG impl to be independent from the PersistenceBrokerFactory
Revision Changes Path
1.31 +19 -22 db-ojb/src/java/org/apache/ojb/odmg/collections/DListImpl.java
Index: DListImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/collections/DListImpl.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- DListImpl.java 5 Dec 2004 12:31:00 -0000 1.30
+++ DListImpl.java 5 Dec 2004 14:22:30 -0000 1.31
@@ -24,11 +24,11 @@
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.ojb.broker.ManageableCollection;
import org.apache.ojb.broker.OJBRuntimeException;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerAware;
import org.apache.ojb.broker.PersistenceBrokerException;
import org.apache.ojb.broker.PersistenceBrokerInternal;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.core.ValueContainer;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.FieldDescriptor;
@@ -70,10 +70,7 @@
private List elements;
private int size;
private OJBTxManager txManager;
- /**
- * PBKey this DList belongs to.
- */
- private PBKey pbKey;
+ private transient PersistenceConfiguration persistenceConf;
/**
* Empty constructor for creating a list object from the database.
@@ -129,17 +126,17 @@
if ((tx != null) && tx.isOpen())
{
result = true;
- if (pbKey == null)
+ if (persistenceConf == null)
{
- pbKey = tx.getBroker().getPBKey();
+ persistenceConf = tx.getBroker().getConfiguration();
}
}
return result;
}
- public PBKey getPBKey()
+ public PersistenceConfiguration getPersistenceConfiguration()
{
- if ((pbKey == null) && (txManager != null))
+ if ((persistenceConf == null) && (txManager != null))
{
TransactionExt tx = txManager.getTransaction();
@@ -148,12 +145,12 @@
checkForOpenTransaction(tx);
}
}
- return pbKey;
+ return persistenceConf;
}
- public void setPBKey(PBKey pbKey)
+ public void setPersistenceConfiguration(PersistenceConfiguration persistenceConf)
{
- this.pbKey = pbKey;
+ this.persistenceConf = persistenceConf;
}
/**
@@ -254,7 +251,7 @@
entry.setPosition(i);
}
- return entry.getRealSubject(getPBKey(), getTxManager());
+ return entry.getRealSubject(getPersistenceConfiguration(), getTxManager());
}
/**
@@ -270,7 +267,7 @@
{
DListImpl result = new DListImpl(txManager);
- result.setPBKey(getPBKey());
+ result.setPersistenceConfiguration(getPersistenceConfiguration());
result.addAll(this);
result.addAll(otherList);
return result;
@@ -304,7 +301,7 @@
{
DListEntry entry = (DListEntry)elements.get(index);
- return entry.getRealSubject(getPBKey(), getTxManager());
+ return entry.getRealSubject(getPersistenceConfiguration(), getTxManager());
}
/**
@@ -380,7 +377,7 @@
for (int i = 0; i < elements.size(); i++)
{
DListEntry entry = (DListEntry)elements.get(i);
- Object obj = entry.getRealSubject(getPBKey(), getTxManager());
+ Object obj = entry.getRealSubject(getPersistenceConfiguration(), getTxManager());
ClassDescriptor cld = brokerForClass.getClassDescriptor(obj.getClass());
FieldDescriptor[] pkFields = cld.getPkFields();
ValueContainer[] pkValues = brokerForClass.serviceBrokerHelper().getKeyValues(cld, obj);
@@ -414,7 +411,7 @@
{
// we ll have to compute the most general extent class here !!!
DListEntry entry = (DListEntry)elements.get(0);
- Class elementsClass = entry.getRealSubject(getPBKey(), getTxManager()).getClass();
+ Class elementsClass = entry.getRealSubject(getPersistenceConfiguration(), getTxManager()).getClass();
return brokerForClass.getTopLevelClass(elementsClass);
}
@@ -432,7 +429,7 @@
String oql = "select all from java.lang.Object where " + predicate;
// TODO: Use a ObjectFactory to instantiate OQLQuery?
- OQLQuery predicateQuery = new OQLQueryImpl(pbKey, txManager, getClass());
+ OQLQuery predicateQuery = new OQLQueryImpl(getPersistenceConfiguration(), txManager, getClass());
predicateQuery.create(oql);
@@ -445,7 +442,7 @@
throw new QueryInvalidException("Need running transaction to do query");
}
- PBCapsule handle = new PBCapsule(pbKey, tx);
+ PBCapsule handle = new PBCapsule(getPersistenceConfiguration(), tx);
DList result;
try
@@ -517,7 +514,7 @@
ToStringBuilder buf = new ToStringBuilder(this);
buf.append("id", id);
- buf.append("pbKey", pbKey);
+ buf.append("persistenceConfiguration", persistenceConf);
buf.append("size", size);
buf.append("[containing elements: ");
@@ -708,9 +705,9 @@
*/
public void afterLookup(PersistenceBroker broker) throws PersistenceBrokerException
{
- if (pbKey == null)
+ if (persistenceConf == null)
{
- pbKey = broker.getPBKey();
+ persistenceConf = broker.getConfiguration();
}
if (txManager == null)
{
1.20 +14 -14 db-ojb/src/java/org/apache/ojb/odmg/collections/DMapEntry.java
Index: DMapEntry.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/collections/DMapEntry.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- DMapEntry.java 14 Nov 2004 09:37:40 -0000 1.19
+++ DMapEntry.java 5 Dec 2004 14:22:30 -0000 1.20
@@ -21,8 +21,8 @@
import org.apache.ojb.broker.Identity;
import org.apache.ojb.broker.OJBRuntimeException;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.util.logging.Logger;
import org.apache.ojb.broker.util.logging.LoggerFactory;
import org.apache.ojb.odmg.OJBTxManager;
@@ -125,11 +125,11 @@
/**
* Returns the real key object.
*
- * @param pbKey The broker key used by the owning collection
- * @param txManager The tx manager
+ * @param persistenceConf The persistence configuration
+ * @param txManager The tx manager
* @return The key object
*/
- public Object getRealKey(PBKey pbKey, OJBTxManager txManager)
+ public Object getRealKey(PersistenceConfiguration persistenceConf, OJBTxManager txManager)
{
if (keyRealSubject != null)
{
@@ -145,9 +145,9 @@
}
else
{
- if (pbKey != null)
+ if (persistenceConf != null)
{
- PBCapsule capsule = new PBCapsule(pbKey, null);
+ PBCapsule capsule = new PBCapsule(persistenceConf, null);
try
{
@@ -176,7 +176,7 @@
// so we now might have to load the object from the db
if ((keyRealSubject == null) && (dmap != null))
{
- return getRealKey(dmap.getPBKey(), dmap.getTxManager());
+ return getRealKey(dmap.getPersistenceConfiguration(), dmap.getTxManager());
}
else
{
@@ -187,11 +187,11 @@
/**
* Returns the real value object.
*
- * @param pbKey The broker key used by the owning collection
- * @param txManager The tx manager
+ * @param persistenceConf The persistence configuration
+ * @param txManager The tx manager
* @return The value object
*/
- public Object getRealValue(PBKey pbKey, OJBTxManager txManager)
+ public Object getRealValue(PersistenceConfiguration persistenceConf, OJBTxManager txManager)
{
if (valueRealSubject != null)
{
@@ -207,9 +207,9 @@
}
else
{
- if (pbKey != null)
+ if (persistenceConf != null)
{
- PBCapsule capsule = new PBCapsule(pbKey, null);
+ PBCapsule capsule = new PBCapsule(persistenceConf, null);
try
{
@@ -238,7 +238,7 @@
// so we now might have to load the object from the db
if ((valueRealSubject == null) && (dmap != null))
{
- return getRealValue(dmap.getPBKey(), dmap.getTxManager());
+ return getRealValue(dmap.getPersistenceConfiguration(), dmap.getTxManager());
}
else
{
1.23 +13 -13 db-ojb/src/java/org/apache/ojb/odmg/collections/DMapImpl.java
Index: DMapImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/collections/DMapImpl.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- DMapImpl.java 14 Nov 2004 09:37:40 -0000 1.22
+++ DMapImpl.java 5 Dec 2004 14:22:30 -0000 1.23
@@ -19,11 +19,11 @@
import java.util.AbstractMap;
import java.util.Iterator;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerAware;
import org.apache.ojb.broker.PersistenceBrokerException;
import org.apache.ojb.broker.PersistenceBrokerInternal;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.util.collections.ManageableHashSet;
import org.apache.ojb.odmg.OJBTxManager;
import org.apache.ojb.odmg.TransactionExt;
@@ -43,7 +43,7 @@
private ManageableHashSet entries;
private int size = 0;
private OJBTxManager txManager;
- private PBKey pbKey;
+ private PersistenceConfiguration persistenceConf;
/**
* Empty constructor for creating a map object from the database.
@@ -68,14 +68,14 @@
return txManager;
}
- public PBKey getPBKey()
+ public PersistenceConfiguration getPersistenceConfiguration()
{
- return pbKey;
+ return persistenceConf;
}
- public void setPBKey(PBKey pbKey)
+ public void setPersistenceConfiguration(PersistenceConfiguration persistenceConf)
{
- this.pbKey = pbKey;
+ this.persistenceConf = persistenceConf;
}
private boolean checkForOpenTransaction(TransactionExt tx)
@@ -85,9 +85,9 @@
if ((tx != null) && tx.isOpen())
{
result = true;
- if (pbKey == null)
+ if (persistenceConf == null)
{
- pbKey = tx.getBroker().getPBKey();
+ persistenceConf = tx.getBroker().getConfiguration();
}
}
return result;
@@ -157,7 +157,7 @@
{
DMapEntry e = (DMapEntry)i.next();
- if (e.getRealKey(getPBKey(), getTxManager()) == null)
+ if (e.getRealKey(getPersistenceConfiguration(), getTxManager()) == null)
{
correctEntry = e;
}
@@ -169,7 +169,7 @@
{
DMapEntry e = (DMapEntry)i.next();
- if (key.equals(e.getRealKey(getPBKey(), getTxManager())))
+ if (key.equals(e.getRealKey(getPersistenceConfiguration(), getTxManager())))
{
correctEntry = e;
}
@@ -297,9 +297,9 @@
*/
public void afterLookup(PersistenceBroker broker) throws PersistenceBrokerException
{
- if (pbKey == null)
+ if (persistenceConf == null)
{
- pbKey = broker.getPBKey();
+ persistenceConf = broker.getConfiguration();
}
if (txManager == null)
{
1.27 +29 -10 db-ojb/src/java/org/apache/ojb/odmg/collections/DListEntry.java
Index: DListEntry.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/collections/DListEntry.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- DListEntry.java 14 Nov 2004 09:37:40 -0000 1.26
+++ DListEntry.java 5 Dec 2004 14:22:30 -0000 1.27
@@ -18,13 +18,12 @@
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.ojb.broker.Identity;
import org.apache.ojb.broker.OJBRuntimeException;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.util.logging.LoggerFactory;
import org.apache.ojb.broker.util.logging.Logger;
import org.apache.ojb.odmg.OJBTxManager;
import org.apache.ojb.odmg.TransactionExt;
-import org.apache.ojb.odmg.PBCapsule;
import java.io.Serializable;
@@ -105,11 +104,11 @@
/**
* Returns the real subject, i.e. the object stored in this entry.
*
- * @param pbKey The broker key used by the owning collection
- * @param txManager The tx manager
+ * @param persistenceConf The persistence configuration
+ * @param txManager The tx manager
* @return The stored object
*/
- public Object getRealSubject(PBKey pbKey, OJBTxManager txManager)
+ public Object getRealSubject(PersistenceConfiguration persistenceConf, OJBTxManager txManager)
{
if (realSubject != null)
{
@@ -125,17 +124,37 @@
}
else
{
- if (pbKey != null)
+ if (persistenceConf != null)
{
- PBCapsule capsule = new PBCapsule(pbKey, null);
+ boolean needsPBCommit = false;
+ PersistenceBroker broker = null;
try
{
- prepareRealSubject(capsule.getBroker());
+ broker = persistenceConf.createPersistenceBroker();
+
+ // begin tx on the PB instance
+ if (!broker.isInTransaction())
+ {
+ broker.beginTransaction();
+ needsPBCommit = true;
+ }
+
+ prepareRealSubject(broker);
}
finally
{
- capsule.destroy();
+ if (needsPBCommit)
+ {
+ try
+ {
+ broker.commitTransaction();
+ }
+ finally
+ {
+ if (broker != null) broker.close();
+ }
+ }
}
}
else
1.10 +1 -1 db-ojb/src/java/org/apache/ojb/odmg/collections/DSetIterator.java
Index: DSetIterator.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/collections/DSetIterator.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DSetIterator.java 14 Nov 2004 09:37:40 -0000 1.9
+++ DSetIterator.java 5 Dec 2004 14:22:30 -0000 1.10
@@ -61,7 +61,7 @@
{
currentEntry = ((DSetEntry)iter.next());
- return currentEntry.getRealSubject(dset.getPBKey(), dset.getTxManager());
+ return currentEntry.getRealSubject(dset.getPersistenceConfiguration(), dset.getTxManager());
}
/**
1.10 +3 -3 db-ojb/src/java/org/apache/ojb/odmg/collections/DListIterator.java
Index: DListIterator.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/collections/DListIterator.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DListIterator.java 14 Nov 2004 09:37:40 -0000 1.9
+++ DListIterator.java 5 Dec 2004 14:22:30 -0000 1.10
@@ -124,7 +124,7 @@
{
currentEntry = (DListEntry)iter.next();
- return currentEntry.getRealSubject(dlist.getPBKey(), dlist.getTxManager());
+ return currentEntry.getRealSubject(dlist.getPersistenceConfiguration(), dlist.getTxManager());
}
/**
@@ -157,7 +157,7 @@
{
currentEntry = (DListEntry)iter.previous();
- return currentEntry.getRealSubject(dlist.getPBKey(), dlist.getTxManager());
+ return currentEntry.getRealSubject(dlist.getPersistenceConfiguration(), dlist.getTxManager());
}
/**
1.23 +20 -20 db-ojb/src/java/org/apache/ojb/odmg/collections/DSetImpl.java
Index: DSetImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/collections/DSetImpl.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- DSetImpl.java 14 Nov 2004 09:37:40 -0000 1.22
+++ DSetImpl.java 5 Dec 2004 14:22:30 -0000 1.23
@@ -21,11 +21,11 @@
import java.util.Iterator;
import java.util.List;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerAware;
import org.apache.ojb.broker.PersistenceBrokerException;
import org.apache.ojb.broker.PersistenceBrokerInternal;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.core.ValueContainer;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.FieldDescriptor;
@@ -53,12 +53,12 @@
public class DSetImpl extends AbstractSet implements DSet, PersistenceBrokerAware, Serializable
{
private static final long serialVersionUID = -4459673364598652639L;
- private Logger log = LoggerFactory.getLogger(DSetImpl.class);
+ private transient Logger log = LoggerFactory.getLogger(DSetImpl.class);
private Integer id;
private List elements;
private int size;
private OJBTxManager txManager;
- private PBKey pbKey;
+ private transient PersistenceConfiguration persistenceConf;
/**
* An empty constructor for materializing from the database.
@@ -85,18 +85,18 @@
/**
* DSetImpl constructor comment.
*/
- protected DSetImpl(OJBTxManager txManager, PBKey pbKey)
+ protected DSetImpl(OJBTxManager txManager, PersistenceConfiguration persistenceConf)
{
super();
- this.txManager = txManager;
- this.elements = new ArrayList();
- this.size = 0;
- this.pbKey = pbKey;
+ this.txManager = txManager;
+ this.elements = new ArrayList();
+ this.size = 0;
+ this.persistenceConf = persistenceConf;
}
- public PBKey getPBKey()
+ public PersistenceConfiguration getPersistenceConfiguration()
{
- return pbKey;
+ return persistenceConf;
}
public OJBTxManager getTxManager()
@@ -145,7 +145,7 @@
*/
public org.odmg.DSet difference(org.odmg.DSet otherSet)
{
- DSetImpl result = new DSetImpl(getTxManager(), getPBKey());
+ DSetImpl result = new DSetImpl(getTxManager(), getPersistenceConfiguration());
for (Iterator iter = this.iterator(); iter.hasNext();)
{
@@ -179,7 +179,7 @@
*/
protected int generateNewId()
{
- PBCapsule capsule = new PBCapsule(null, txManager.getTransaction());
+ PBCapsule capsule = new PBCapsule(getPersistenceConfiguration(), txManager.getTransaction());
try
{
@@ -221,7 +221,7 @@
public org.odmg.DSet intersection(org.odmg.DSet otherSet)
{
DSet union = union(otherSet);
- DSetImpl result = new DSetImpl(getTxManager(), getPBKey());
+ DSetImpl result = new DSetImpl(getTxManager(), getPersistenceConfiguration());
for (Iterator iter = union.iterator(); iter.hasNext();)
{
@@ -283,9 +283,9 @@
{
// 1.build complete OQL statement
String oql = "select all from java.lang.Object where " + predicate;
- OQLQuery predicateQuery = new OQLQueryImpl(pbKey, txManager, getClass());
+ OQLQuery predicateQuery = new OQLQueryImpl(getPersistenceConfiguration(), txManager, getClass());
TransactionExt tx = txManager.getTransaction();
- PBCapsule capsule = new PBCapsule(pbKey, tx);
+ PBCapsule capsule = new PBCapsule(getPersistenceConfiguration(), tx);
PersistenceBroker broker = capsule.getBroker();
try
@@ -329,7 +329,7 @@
for (int i = 0; i < elements.size(); i++)
{
DListEntry entry = (DListEntry)elements.get(i);
- Object obj = entry.getRealSubject(getPBKey(), getTxManager());
+ Object obj = entry.getRealSubject(getPersistenceConfiguration(), getTxManager());
ClassDescriptor cld = broker.getClassDescriptor(obj.getClass());
FieldDescriptor[] pkFields = cld.getPkFields();
ValueContainer[] pkValues = broker.serviceBrokerHelper().getKeyValues(cld, obj);
@@ -364,7 +364,7 @@
{
// we ll have to compute the most general extent class here !!!
DListEntry entry = (DListEntry)elements.get(0);
- Class elementsClass = entry.getRealSubject(getPBKey(), getTxManager()).getClass();
+ Class elementsClass = entry.getRealSubject(getPersistenceConfiguration(), getTxManager()).getClass();
return broker.getTopLevelClass(elementsClass);
}
@@ -455,7 +455,7 @@
*/
public org.odmg.DSet union(org.odmg.DSet otherSet)
{
- DSetImpl result = new DSetImpl(getTxManager(), getPBKey());
+ DSetImpl result = new DSetImpl(getTxManager(), getPersistenceConfiguration());
result.addAll(this);
result.addAll(otherSet);
@@ -538,9 +538,9 @@
*/
public void afterLookup(PersistenceBroker broker) throws PersistenceBrokerException
{
- if (pbKey == null)
+ if (persistenceConf == null)
{
- pbKey = broker.getPBKey();
+ persistenceConf = broker.getConfiguration();
}
if (txManager == null)
{
1.9 +2 -2 db-ojb/src/java/org/apache/ojb/odmg/collections/DBagImpl.java
Index: DBagImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/collections/DBagImpl.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DBagImpl.java 14 Nov 2004 09:37:40 -0000 1.8
+++ DBagImpl.java 5 Dec 2004 14:22:30 -0000 1.9
@@ -60,7 +60,7 @@
DBagImpl result = new DBagImpl();
result.setTxManager(getTxManager());
- result.setPBKey(getPBKey());
+ result.setPersistenceConfiguration(getPersistenceConfiguration());
for (Iterator iter = this.iterator(); iter.hasNext();)
{
Object candidate = iter.next();
@@ -88,7 +88,7 @@
DBagImpl result = new DBagImpl();
result.setTxManager(getTxManager());
- result.setPBKey(getPBKey());
+ result.setPersistenceConfiguration(getPersistenceConfiguration());
for (Iterator iter = otherBag.iterator(); iter.hasNext();)
{
Object candidate = iter.next();
1.5 +10 -17 db-ojb/src/java/org/apache/ojb/odmg/ImplementationImpl.java
Index: ImplementationImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/ImplementationImpl.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ImplementationImpl.java 14 Nov 2004 09:37:20 -0000 1.4
+++ ImplementationImpl.java 5 Dec 2004 14:22:30 -0000 1.5
@@ -18,7 +18,6 @@
import org.apache.ojb.broker.Identity;
import org.apache.ojb.broker.OJB;
import org.apache.ojb.broker.OJBRuntimeException;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.util.ClassHelper;
import org.apache.ojb.broker.util.logging.Logger;
@@ -126,11 +125,6 @@
return currentDatabase;
}
- public PBKey getCurrentPBKey()
- {
- return currentDatabase.getPBKey();
- }
-
/**
* Returns the transaction manager.
*
@@ -210,7 +204,7 @@
throw new DatabaseClosedException("Database is not open");
}
- return new OQLQueryImpl(this.getCurrentPBKey(), txManager, oqlCollectionClass);
+ return new OQLQueryImpl(currentDatabase.getPersistenceConfiguration(), txManager, oqlCollectionClass);
}
/**
@@ -296,16 +290,12 @@
if (getCurrentDatabase() != null)
{
- /**
- * is there an open database we are calling getObjectId against? if yes, use it
- */
- broker = ojb.lookupBroker(getCurrentDatabase().getPBKey());
+ // is there an open database we are calling getObjectId against? if yes, use it
+ broker = getCurrentDatabase().getPersistenceConfiguration().createPersistenceBroker();
}
else
{
- /**
- * otherwise, use default.
- */
+ // otherwise, use default
broker = ojb.lookupBroker();
}
@@ -343,9 +333,12 @@
//ignore
}
}
- if (log.isDebugEnabled()) log.debug("Set current database " + newDB + " PBKey was " + newDB.getPBKey());
+ if (log.isDebugEnabled())
+ {
+ log.debug("Set current database " + newDB + " with PBKey " + newDB.getPersistenceConfiguration().getKey());
+ }
setCurrentDatabase(newDB);
- usedDatabases.add(newDB.getPBKey());
+ usedDatabases.add(newDB.getPersistenceConfiguration().getKey());
}
/**
1.29 +20 -29 db-ojb/src/java/org/apache/ojb/odmg/DatabaseImpl.java
Index: DatabaseImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/DatabaseImpl.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- DatabaseImpl.java 14 Nov 2004 09:37:20 -0000 1.28
+++ DatabaseImpl.java 5 Dec 2004 14:22:30 -0000 1.29
@@ -15,11 +15,11 @@
* limitations under the License.
*/
+import org.apache.ojb.broker.ConfigurationException;
import org.apache.ojb.broker.Identity;
-import org.apache.ojb.broker.PBFactoryException;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerException;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.util.BrokerHelper;
import org.apache.ojb.broker.util.logging.Logger;
import org.apache.ojb.broker.util.logging.LoggerFactory;
@@ -44,7 +44,7 @@
{
private Logger log = LoggerFactory.getLogger(DatabaseImpl.class);
- private PBKey pbKey;
+ private PersistenceConfiguration persistenceConf;
private boolean isOpen;
private ImplementationImpl odmg;
/**
@@ -74,16 +74,15 @@
}
/**
- * Return the {@link org.apache.ojb.broker.PBKey} associated with this Database.
+ * Return the {@link org.apache.ojb.broker.PersistenceConfiguration} associated with this Database.
*/
- public PBKey getPBKey()
+ public PersistenceConfiguration getPersistenceConfiguration()
{
- if (pbKey == null)
+ if (!isOpen)
{
- log.error("## PBKey not set, Database isOpen=" + isOpen + " ##");
- if (!isOpen) throw new DatabaseClosedException("Database is not open");
+ throw new DatabaseClosedException("Database is not open");
}
- return pbKey;
+ return persistenceConf;
}
/**
@@ -93,7 +92,7 @@
*/
public PersistenceBroker getBroker()
{
- return odmg.getOJBRuntime().lookupBroker(getPBKey());
+ return persistenceConf.createPersistenceBroker();
}
public boolean isOpen()
@@ -120,37 +119,29 @@
{
throw new DatabaseOpenException("Database is already open");
}
- PersistenceBroker broker = null;
try
{
if (name == null)
{
log.info("Given argument was 'null', open default database");
- broker = odmg.getOJBRuntime().lookupBroker();
+ persistenceConf = odmg.getOJBRuntime().getConfiguration(null);
}
else
{
- broker = odmg.getOJBRuntime().lookupBroker(BrokerHelper.extractAllTokens(name));
+ persistenceConf = odmg.getOJBRuntime().getConfiguration(BrokerHelper.extractAllTokens(name));
}
- pbKey = broker.getPBKey();
isOpen = true;
//register opened database
odmg.registerOpenDatabase(this);
- if (log.isDebugEnabled()) log.debug("Open database using PBKey " + pbKey);
+ if (log.isDebugEnabled())
+ {
+ log.debug("Open database using persistence configuration " + persistenceConf);
+ }
}
- catch (PBFactoryException ex)
+ catch (ConfigurationException ex)
{
log.error("Open database failed: " + ex.getMessage(), ex);
- throw new DatabaseNotFoundException(
- "OJB can't open database " + name + "\n" + ex.getMessage());
- }
- finally
- {
- // broker must be immediately closed
- if (broker != null)
- {
- broker.close();
- }
+ throw new DatabaseNotFoundException("OJB can't open database " + name + "\n" + ex.getMessage());
}
}
@@ -186,8 +177,8 @@
throw ex;
}
isOpen = false;
- // remove the current PBKey
- pbKey = null;
+ // release the configuration reference
+ persistenceConf = null;
// if we close current database, we have to notify implementation instance
if (this == odmg.getCurrentDatabase())
{
1.69 +2 -3 db-ojb/src/java/org/apache/ojb/odmg/TransactionImpl.java
Index: TransactionImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/TransactionImpl.java,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- TransactionImpl.java 5 Dec 2004 12:31:01 -0000 1.68
+++ TransactionImpl.java 5 Dec 2004 14:22:30 -0000 1.69
@@ -1116,8 +1116,7 @@
}
catch (PBFactoryException e)
{
- log.error("Cannot obtain PersistenceBroker from PersistenceBrokerFactory, " +
- "found PBKey was " + curDB.getPBKey(), e);
+ log.error("Cannot obtain PersistenceBroker from database object", e);
throw new PersistenceBrokerException(e);
}
}
1.7 +24 -46 db-ojb/src/java/org/apache/ojb/odmg/PBCapsule.java
Index: PBCapsule.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/PBCapsule.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- PBCapsule.java 4 Apr 2004 23:53:38 -0000 1.6
+++ PBCapsule.java 5 Dec 2004 14:22:30 -0000 1.7
@@ -1,10 +1,8 @@
package org.apache.ojb.odmg;
import org.apache.ojb.broker.OJBRuntimeException;
-import org.apache.ojb.broker.PBFactoryException;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
-import org.apache.ojb.broker.PersistenceBrokerFactory;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.util.logging.Logger;
import org.apache.ojb.broker.util.logging.LoggerFactory;
import org.odmg.Transaction;
@@ -25,40 +23,47 @@
*/
public final class PBCapsule
{
- private static Logger log = LoggerFactory.getLogger(PBCapsule.class);
+ private Logger log = LoggerFactory.getLogger(PBCapsule.class);
- PersistenceBroker broker;
- PBKey pbKey;
- Transaction tx;
- boolean needsTxCommit = false;
- boolean needsPBCommit = false;
- boolean isIlleagal = false;
+ private PersistenceConfiguration persistenceConf;
+ private Transaction tx;
+ private PersistenceBroker broker;
+ private boolean needsTxCommit = false;
+ private boolean needsPBCommit = false;
+ private boolean isIllegal = false;
- public PBCapsule(final PBKey pbKey, final Transaction tx)
+ public PBCapsule(PersistenceConfiguration persistenceConf, Transaction tx)
{
this.tx = tx;
- this.pbKey = pbKey;
+ this.persistenceConf = persistenceConf;
prepare();
}
public PersistenceBroker getBroker()
{
- if(isIlleagal) throw new OJBRuntimeException("You could not reuse PBCapsule after destroy");
+ if (isIllegal)
+ {
+ throw new OJBRuntimeException("You could not reuse PBCapsule after destroy");
+ }
return broker;
}
private void prepare()
{
- if(isIlleagal) throw new OJBRuntimeException("You could not reuse PBCapsule after destroy");
+ if (isIllegal)
+ {
+ throw new OJBRuntimeException("You could not reuse PBCapsule after destroy");
+ }
// we allow queries even if no ODMG transaction is running.
// thus we use direct access to PBF via the given PBKey to
// get a PB instance
if (tx == null)
{
if (log.isDebugEnabled())
- log.debug("No running transaction found, try to get " +
- "PersistenceBroker instance via PBKey " + pbKey);
- broker = obtainBroker();
+ {
+ log.debug("No running transaction found, try to get PersistenceBroker instance from configuration " + persistenceConf);
+ }
+ broker = persistenceConf.createPersistenceBroker();
// begin tx on the PB instance
if (!broker.isInTransaction())
{
@@ -76,7 +81,7 @@
needsTxCommit = true;
}
// obtain a broker instance from the current transaction
- broker = ((HasBroker) tx).getBroker();
+ broker = ((HasBroker)tx).getBroker();
}
}
@@ -99,35 +104,8 @@
if (broker != null) broker.close();
}
}
- isIlleagal = true;
+ isIllegal = true;
needsTxCommit = false;
needsPBCommit = false;
- }
-
- /**
- * Used to get PB, when no tx is running.
- */
- private PersistenceBroker obtainBroker()
- {
- PersistenceBroker _broker;
- try
- {
- if (pbKey == null)
- {
- //throw new OJBRuntimeException("Not possible to do action, cause no tx runnning and no PBKey is set");
- log.warn("No tx runnning and PBKey is null, try to use the default PB");
- _broker = PersistenceBrokerFactory.defaultPersistenceBroker();
- }
- else
- {
- _broker = PersistenceBrokerFactory.createPersistenceBroker(pbKey);
- }
- }
- catch (PBFactoryException e)
- {
- log.error("Could not obtain PB for PBKey " + pbKey, e);
- throw new OJBRuntimeException("Unexpected micro-kernel exception", e);
- }
- return _broker;
}
}
1.21 +5 -5 db-ojb/src/java/org/apache/ojb/odmg/oql/OQLQueryImpl.java
Index: OQLQueryImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/oql/OQLQueryImpl.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- OQLQueryImpl.java 5 Dec 2004 12:31:01 -0000 1.20
+++ OQLQueryImpl.java 5 Dec 2004 14:22:31 -0000 1.21
@@ -18,8 +18,8 @@
import antlr.RecognitionException;
import antlr.TokenStreamException;
import org.apache.ojb.broker.ManageableCollection;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.accesslayer.OJBIterator;
import org.apache.ojb.broker.query.BetweenCriteria;
import org.apache.ojb.broker.query.Criteria;
@@ -58,13 +58,13 @@
*/
private Query query = null;
private ListIterator bindIterator = null;
- private PBKey pbKey;
+ private PersistenceConfiguration persistenceConf;
/** The transaction manager */
private OJBTxManager txManager;
- public OQLQueryImpl(PBKey key, OJBTxManager txManager, Class collectionClass)
+ public OQLQueryImpl(PersistenceConfiguration persistenceConf, OJBTxManager txManager, Class collectionClass)
{
- this.pbKey = key;
+ this.persistenceConf = persistenceConf;
this.txManager = txManager;
this.collectionClass = collectionClass;
}
@@ -237,7 +237,7 @@
try
{
- capsule = new PBCapsule(pbKey, tx);
+ capsule = new PBCapsule(persistenceConf, tx);
PersistenceBroker broker = capsule.getBroker();
// ask the broker to perfom the query.
1.41 +3 -3 db-ojb/src/java/org/apache/ojb/otm/core/BaseConnection.java
Index: BaseConnection.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/otm/core/BaseConnection.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- BaseConnection.java 14 Nov 2004 09:39:57 -0000 1.40
+++ BaseConnection.java 5 Dec 2004 14:22:31 -0000 1.41
@@ -388,7 +388,7 @@
checkTransaction("newOQLQuery");
// TODO: How do we get the oqlCollectionClass value
- return new OTMOQLQueryImpl(_pb.getPBKey(), DListImpl.class, lock);
+ return new OTMOQLQueryImpl(_pb.getConfiguration(), DListImpl.class, lock);
}
public int getCount(Query query)
@@ -603,10 +603,10 @@
{
int _lock;
- public OTMOQLQueryImpl(PBKey key, Class collectionClass, int lock)
+ public OTMOQLQueryImpl(PersistenceConfiguration persistenceConf, Class collectionClass, int lock)
{
// no transaction manager because we override the execute method anyway
- super(key, null, collectionClass);
+ super(persistenceConf, null, collectionClass);
_lock = lock;
}
1.70 +3 -1 db-ojb/release-notes.txt
Index: release-notes.txt
===================================================================
RCS file: /home/cvs/db-ojb/release-notes.txt,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- release-notes.txt 3 Dec 2004 21:59:17 -0000 1.69
+++ release-notes.txt 5 Dec 2004 14:22:31 -0000 1.70
@@ -11,6 +11,8 @@
Release 1.1_alpha
---------------------------------------------------------------------
NEW FEATURES:
+- ManageableCollection interface has been extended: all ojb... Methods now also receive a
+ PersistenceBroker instance
- Forward-port from 1.0 stable:
New ant-target ojb-quickstart creates archives of ready-to-run apps for tutorials 1 and 2
complete with pre-created Hsqldb databases (based on ojb-blank).
1.13 +18 -18 db-ojb/src/test/org/apache/ojb/odmg/MultiDBUsageTest.java
Index: MultiDBUsageTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/odmg/MultiDBUsageTest.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- MultiDBUsageTest.java 14 Nov 2004 09:42:54 -0000 1.12
+++ MultiDBUsageTest.java 5 Dec 2004 14:22:31 -0000 1.13
@@ -1,8 +1,8 @@
package org.apache.ojb.odmg;
import org.apache.ojb.broker.FarAwayClass;
-import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
+import org.apache.ojb.broker.PersistenceConfiguration;
import org.apache.ojb.broker.TestHelper;
import org.apache.ojb.broker.metadata.MetadataManager;
import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor;
@@ -109,9 +109,9 @@
if(ojbSkipKnownIssueProblem()) return;
// little hack for the test. use PB and ODMG api to verify results
- int odmgZoosBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), ODMGZoo.class);
- int projectsBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), Project.class);
- int farAwaysBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPBKey(), FarAwayClass.class);
+ int odmgZoosBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), ODMGZoo.class);
+ int projectsBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), Project.class);
+ int farAwaysBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPersistenceConfiguration(), FarAwayClass.class);
Transaction tx_1 = odmg_1.newTransaction();
tx_1.begin();
@@ -131,9 +131,9 @@
storeObjects(tx_2, getNewFarAways(11));
tx_2.commit();
- int odmgZoosAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), ODMGZoo.class);
- int projectsAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), Project.class);
- int farAwaysAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPBKey(), FarAwayClass.class);
+ int odmgZoosAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), ODMGZoo.class);
+ int projectsAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), Project.class);
+ int farAwaysAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPersistenceConfiguration(), FarAwayClass.class);
int odmgZoosAfterOQL = getDBObjectCountViaOqlQueryUseNewTransaction(odmg_1, ODMGZoo.class);
int projectsAfterOQL = getDBObjectCountViaOqlQueryUseNewTransaction(odmg_1, Project.class);
int farAwaysAfterOQL = getDBObjectCountViaOqlQueryUseNewTransaction(odmg_2, FarAwayClass.class);
@@ -149,9 +149,9 @@
// we do twice
//************
// little hack for the test
- odmgZoosBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), ODMGZoo.class);
- projectsBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), Project.class);
- farAwaysBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPBKey(), FarAwayClass.class);
+ odmgZoosBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), ODMGZoo.class);
+ projectsBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), Project.class);
+ farAwaysBefore = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPersistenceConfiguration(), FarAwayClass.class);
tx_1.begin();
//store
@@ -169,9 +169,9 @@
storeObjects(tx_2, getNewFarAways(11));
tx_2.commit();
- odmgZoosAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), ODMGZoo.class);
- projectsAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), Project.class);
- farAwaysAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPBKey(), FarAwayClass.class);
+ odmgZoosAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), ODMGZoo.class);
+ projectsAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), Project.class);
+ farAwaysAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPersistenceConfiguration(), FarAwayClass.class);
odmgZoosAfterOQL = getDBObjectCountViaOqlQueryUseNewTransaction(odmg_1, ODMGZoo.class);
projectsAfterOQL = getDBObjectCountViaOqlQueryUseNewTransaction(odmg_1, Project.class);
farAwaysAfterOQL = getDBObjectCountViaOqlQueryUseNewTransaction(odmg_2, FarAwayClass.class);
@@ -197,9 +197,9 @@
deleteObjects(db_2, getAllObjects(odmg_2, FarAwayClass.class));
tx_2.commit();
- int odmgZoosAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), ODMGZoo.class);
- int projectsAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPBKey(), Project.class);
- int farAwaysAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPBKey(), FarAwayClass.class);
+ int odmgZoosAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), ODMGZoo.class);
+ int projectsAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_1).getPersistenceConfiguration(), Project.class);
+ int farAwaysAfter = getDBObjectCountWithNewPB(((DatabaseImpl) db_2).getPersistenceConfiguration(), FarAwayClass.class);
//
int odmgZoosAfterOQL = getDBObjectCountViaOqlQuery(odmg_1, ODMGZoo.class);
int projectsAfterOQL = getDBObjectCountViaOqlQuery(odmg_1, Project.class);
@@ -288,9 +288,9 @@
return fa;
}
- protected int getDBObjectCountWithNewPB(PBKey pbKey, Class target) throws Exception
+ protected int getDBObjectCountWithNewPB(PersistenceConfiguration persistenceConf, Class target) throws Exception
{
- PersistenceBroker broker = ojb.getConfiguration(pbKey).createPersistenceBroker();
+ PersistenceBroker broker = persistenceConf.createPersistenceBroker();
Criteria c = new Criteria();
Query q = new QueryByCriteria(target, c);
int count = broker.getCount(q);
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org