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 th...@apache.org on 2002/11/29 18:40:14 UTC
cvs commit: jakarta-ojb/src/jdori/org/apache/ojb/jdori/sql OjbStoreManager.java OjbStoreConnector.java
thma 2002/11/29 09:40:14
Modified: src/jdori/org/apache/ojb/tutorial5 UCEditProduct.java
Application.java
src/jdori/org/apache/ojb/jdori/sql OjbStoreManager.java
OjbStoreConnector.java
Log:
now all use case work with the JDO RI implementation !
Revision Changes Path
1.2 +5 -1 jakarta-ojb/src/jdori/org/apache/ojb/tutorial5/UCEditProduct.java
Index: UCEditProduct.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/jdori/org/apache/ojb/tutorial5/UCEditProduct.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- UCEditProduct.java 28 Nov 2002 07:24:02 -0000 1.1
+++ UCEditProduct.java 29 Nov 2002 17:40:14 -0000 1.2
@@ -75,7 +75,7 @@
- manager.makePersistent(toBeEdited);
+ //manager.makePersistent(toBeEdited);
manager.currentTransaction().commit();
}
@@ -85,6 +85,10 @@
//broker.abortTransaction();
manager.currentTransaction().rollback();
t.printStackTrace();
+ }
+ finally
+ {
+ manager.close();
}
}
1.2 +3 -2 jakarta-ojb/src/jdori/org/apache/ojb/tutorial5/Application.java
Index: Application.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/jdori/org/apache/ojb/tutorial5/Application.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Application.java 28 Nov 2002 07:24:02 -0000 1.1
+++ Application.java 29 Nov 2002 17:40:14 -0000 1.2
@@ -7,6 +7,7 @@
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
+import org.apache.ojb.broker.util.ui.AsciiSplash;
import org.apache.ojb.jdori.sql.OjbStorePMF;
/**
@@ -88,8 +89,8 @@
*/
public void run()
{
- //System.out.println(AsciiSplash.getSplashArt());
- System.out.println("Welcome to the OJB JDO tutorial application");
+ System.out.println(AsciiSplash.getSplashArt());
+ System.out.println("Welcome to the OJB JDO RI tutorial application");
System.out.println();
// never stop (there is a special use case to quit the application)
while (true)
1.2 +38 -26 jakarta-ojb/src/jdori/org/apache/ojb/jdori/sql/OjbStoreManager.java
Index: OjbStoreManager.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/jdori/org/apache/ojb/jdori/sql/OjbStoreManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- OjbStoreManager.java 28 Nov 2002 07:24:01 -0000 1.1
+++ OjbStoreManager.java 29 Nov 2002 17:40:14 -0000 1.2
@@ -53,6 +53,7 @@
* <http://www.apache.org/>.
*/
+import java.lang.reflect.Field;
import java.util.BitSet;
import java.util.Iterator;
@@ -107,6 +108,8 @@
/** the logger used for debugging*/
private Logger logger = LoggerFactory.getLogger("JDO");
+
+
OjbStoreManager(OjbStorePMF pmf)
{
@@ -146,7 +149,7 @@
try
{
- logger.debug("OjbSRM.insert");
+ logger.debug("OjbStoreManager.insert");
PersistenceBroker broker = connector.getBroker();
Object instance = sm.getObject();
broker.store(instance, ObjectModificationDefaultImpl.INSERT);
@@ -170,7 +173,9 @@
try
{
+ logger.debug("OjbStoreManager.update");
PersistenceBroker broker = connector.getBroker();
+ fetch(sm, null);
Object instance = sm.getObject();
broker.store(instance, ObjectModificationDefaultImpl.UPDATE);
}
@@ -200,13 +205,6 @@
return StateManagerInternal.FLUSHED_COMPLETE;
}
- // RESOLVE: Marina, do we need this? @see com.sun.jdori.StoreManager#verifyExistence.
- /**
- * @see com.sun.jdori.StoreManager#verifyExistence
- */
- // public boolean verifyExistence(StateManagerInternal sm) {
- // return verify(sm, false, null, null);
- // }
/**
* @see com.sun.jdori.StoreManager#delete(BitSet, BitSet, StateManagerInternal)
@@ -216,8 +214,11 @@
BitSet dirtyFields,
StateManagerInternal sm)
{
+ Identity oid = (Identity)sm.getInternalObjectId();
+ logger.debug("OjbStoreManager.delete(" + oid + ")");
try
{
+ fetch(sm,null);
connector.getBroker().delete(sm.getObject());
}
catch (Exception ex)
@@ -398,19 +399,13 @@
{
this.optimistic = pm.currentTransaction().getOptimistic();
- logger.debug("OjbSRM.flush: begin, optimistic=" + optimistic);
-
- preFlush();
-
- logger.debug("OjbSRM.flush: completed flush commit");
-
boolean err = false;
while (it.hasNext())
{
StateManagerInternal sm = (StateManagerInternal) it.next();
+ logger.debug("OjbStoreManager.flush: " + sm.getInternalObjectId() + ", " + getLCState(sm));
sm.preStore();
-
sm.replaceSCOFields();
sm.flush(this);
if (!sm.isFlushed())
@@ -420,7 +415,7 @@
}
}
- logger.debug("OjbSRM.flush: end, err=" + err);
+ logger.debug("OjbStoreManager.flush: end, err=" + err);
if (err)
{
@@ -428,6 +423,31 @@
}
}
+ /**
+ * @return the LifeCycleState of a StateManager instance
+ */
+ protected Object getLCState(StateManagerInternal sm)
+ {
+ // unfortunately the LifeCycleState classes ar package private.
+ // so we have to do some dirty reflection hack to access them
+ try
+ {
+ Field myLC = sm.getClass().getDeclaredField("myLC");
+ myLC.setAccessible(true);
+ return myLC.get(sm);
+ }
+ catch (NoSuchFieldException e)
+ {
+ return e;
+ }
+ catch (IllegalAccessException e)
+ {
+ return e;
+ }
+ }
+
+
+
/**
* Returns a QueryResult instance which is then returned as the result of
* Query.execute(...). This method allows support for datastore specific
@@ -469,19 +489,11 @@
*/
private boolean verify(StateManagerInternal sm, boolean verifyFields, BitSet fieldsToVerify)
{
-
+ logger.debug("OjbStoreManager.verify");
boolean rc = false;
// thma: implement here!
return rc;
}
- /**
- * Write a CommitRequest and flush the connector, to cause all
- * CreateOid and ActivateClass requests to be committed in the
- * database *before* any inserts, updates, or deletes.
- */
- private void preFlush()
- {
- //thma : don't know what to do here?
- }
+
}
1.2 +3 -3 jakarta-ojb/src/jdori/org/apache/ojb/jdori/sql/OjbStoreConnector.java
Index: OjbStoreConnector.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/jdori/org/apache/ojb/jdori/sql/OjbStoreConnector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- OjbStoreConnector.java 28 Nov 2002 07:24:01 -0000 1.1
+++ OjbStoreConnector.java 29 Nov 2002 17:40:14 -0000 1.2
@@ -113,7 +113,7 @@
//this.okToReleaseConnection = optimistic;
this.okToReleaseConnection = false;
- logger.debug("FOConnector.begin: okToReleaseConnection=" + okToReleaseConnection);
+ logger.debug("OjbStoreConnector.begin: okToReleaseConnection=" + okToReleaseConnection);
// obtain a fresh broker and open a tx on it
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
@@ -141,7 +141,7 @@
{
assertNotRollbackOnly();
- logger.debug("FOConnector.flush: " + // NOI18N
+ logger.debug("OjbStoreConnector.flush: " + // NOI18N
"okToReleaseConnection=" + okToReleaseConnection);
// thma: noop?
}
@@ -183,7 +183,7 @@
*/
public synchronized void rollback()
{
- logger.debug("FOConnector.rollback, RBO=" + rollbackOnly); // NOI18N
+ logger.debug("OjbStoreConnector.rollback, RBO=" + rollbackOnly); // NOI18N
if (!rollbackOnly)
{