/** * Method to transition when serialised. * @param sm State Manager * @return The new LifeCycle state */ public LifeCycleState transitionSerialize(StateManager sm) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (tx.isActive() && !tx.getOptimistic()) { return changeState(sm, P_CLEAN); } return this; }
/** * Method to transition when serialised. * @param sm State Manager * @return The new LifeCycle state */ public LifeCycleState transitionSerialize(StateManager sm) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (tx.isActive() && !tx.getOptimistic()) { return changeState(sm, P_CLEAN); } return this; }
/** * Method to transition when serialised. * @param sm State Manager * @return The new LifeCycle state */ public LifeCycleState transitionSerialize(StateManager sm) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (tx.isActive() && !tx.getOptimistic()) { return changeState(sm, P_CLEAN); } return this; }
/** * Method to transition when serialised. * @param sm State Manager * @return The new LifeCycle state */ public LifeCycleState transitionSerialize(StateManager sm) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (tx.isActive() && !tx.getOptimistic()) { return changeState(sm, P_CLEAN); } return this; }
/** * Method to transition to retrieve state. * @param sm StateManager. * @param fetchPlan the fetch plan to load fields * @return new LifeCycle state. **/ public LifeCycleState transitionRetrieve(StateManager sm, FetchPlan fetchPlan) { sm.loadUnloadedFieldsOfClassInFetchPlan(fetchPlan); Transaction tx = sm.getPersistenceManager().currentTransaction(); if (!tx.getOptimistic() && tx.isActive()) { return changeState(sm, P_CLEAN); } else if (tx.getOptimistic()) { return changeState(sm, P_NONTRANS); } return super.transitionRetrieve(sm, fetchPlan); }
/** * Method to transition to retrieve state. * @param sm StateManager. * @param fetchPlan the fetch plan to load fields * @return new LifeCycle state. **/ public LifeCycleState transitionRetrieve(StateManager sm, FetchPlan fetchPlan) { sm.loadUnloadedFieldsOfClassInFetchPlan(fetchPlan); Transaction tx = sm.getPersistenceManager().currentTransaction(); if (!tx.getOptimistic() && tx.isActive()) { return changeState(sm, P_CLEAN); } else if (tx.getOptimistic()) { return changeState(sm, P_NONTRANS); } return super.transitionRetrieve(sm, fetchPlan); }
/** * Method to transition to retrieve state. * @param sm StateManager. * @param fgOnly only the current fetch group fields * @return new LifeCycle state. */ public LifeCycleState transitionRetrieve(StateManager sm, boolean fgOnly) { if (fgOnly) { sm.loadUnloadedFieldsInFetchPlan(); } else { sm.loadUnloadedFields(); } Transaction tx = sm.getPersistenceManager().currentTransaction(); if (!tx.getOptimistic() && tx.isActive()) { return changeState(sm, P_CLEAN); } else if (tx.getOptimistic()) { return changeState(sm, P_NONTRANS); } return super.transitionRetrieve(sm, fgOnly); }
/** * Method to transition to retrieve state. * @param sm StateManager. * @param fgOnly only the current fetch group fields * @return new LifeCycle state. */ public LifeCycleState transitionRetrieve(StateManager sm, boolean fgOnly) { if (fgOnly) { sm.loadUnloadedFieldsInFetchPlan(); } else { sm.loadUnloadedFields(); } Transaction tx = sm.getPersistenceManager().currentTransaction(); if (!tx.getOptimistic() && tx.isActive()) { return changeState(sm, P_CLEAN); } else if (tx.getOptimistic()) { return changeState(sm, P_NONTRANS); } return super.transitionRetrieve(sm, fgOnly); }
/** * Method to transition to read-field state. * @param sm StateManager. * @param isLoaded if the field was previously loaded * @return new LifeCycle state. */ public LifeCycleState transitionReadField(StateManager sm, boolean isLoaded) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (!tx.getOptimistic() && tx.isActive()) { return changeState(sm, P_CLEAN); } else if (!tx.getOptimistic() && !tx.isActive()) { if (!tx.getNontransactionalRead()) { throw new JDOUserException(LOCALISER.msg("LifeCycle.HollowReadFieldNotAllowedNotActiveTx"), sm.getInternalObjectId()); } } return changeState(sm, P_NONTRANS); }
/** * Method to transition to read-field state. * @param sm StateManager. * @param isLoaded if the field was previously loaded * @return new LifeCycle state. */ public LifeCycleState transitionReadField(StateManager sm, boolean isLoaded) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (!tx.getOptimistic() && tx.isActive()) { return changeState(sm, P_CLEAN); } else if (!tx.getOptimistic() && !tx.isActive()) { if (!tx.getNontransactionalRead()) { throw new JDOUserException(LOCALISER.msg("LifeCycle.HollowReadFieldNotAllowedNotActiveTx"), sm.getInternalObjectId()); } } return changeState(sm, P_NONTRANS); }
query.getPersistenceManager().currentTransaction().getOptimistic() || fetchSize == FetchPlan.FETCH_SIZE_GREEDY)
/** * Method to transition to retrieve state. * @param sm StateManager. * @param fetchPlan the fetch plan to load fields * @return new LifeCycle state. **/ public LifeCycleState transitionRetrieve(StateManager sm, FetchPlan fetchPlan) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (tx.isActive() && !tx.getOptimistic()) { // Save the fields for rollback. sm.saveFields(); sm.loadUnloadedFieldsOfClassInFetchPlan(fetchPlan); return changeState(sm, P_CLEAN); } else if (tx.isActive() && tx.getOptimistic()) { // Save the fields for rollback. sm.saveFields(); sm.loadUnloadedFieldsOfClassInFetchPlan(fetchPlan); return this; } else { sm.loadUnloadedFieldsOfClassInFetchPlan(fetchPlan); return this; } }
/** * Method to transition to retrieve state. * @param sm StateManager. * @param fetchPlan the fetch plan to load fields * @return new LifeCycle state. **/ public LifeCycleState transitionRetrieve(StateManager sm, FetchPlan fetchPlan) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (tx.isActive() && !tx.getOptimistic()) { // Save the fields for rollback. sm.saveFields(); sm.loadUnloadedFieldsOfClassInFetchPlan(fetchPlan); return changeState(sm, P_CLEAN); } else if (tx.isActive() && tx.getOptimistic()) { // Save the fields for rollback. sm.saveFields(); sm.loadUnloadedFieldsOfClassInFetchPlan(fetchPlan); return this; } else { sm.loadUnloadedFieldsOfClassInFetchPlan(fetchPlan); return this; } }
/** * Method to transition to refresh state. * @param sm StateManager. * @return new LifeCycle state. **/ public LifeCycleState transitionRefresh(StateManager sm) { sm.clearSavedFields(); sm.refreshFieldsInFetchPlan(); Transaction tx = sm.getPersistenceManager().currentTransaction(); if (tx.isActive() && !tx.getOptimistic()) { return changeState(sm,P_CLEAN); } return changeState(sm,P_NONTRANS); }
/** * Method to transition to refresh state. * @param sm StateManager. * @return new LifeCycle state. **/ public LifeCycleState transitionRefresh(StateManager sm) { sm.clearSavedFields(); sm.refreshFieldsInFetchPlan(); Transaction tx = sm.getPersistenceManager().currentTransaction(); if (tx.isActive() && !tx.getOptimistic()) { return changeState(sm,P_CLEAN); } return changeState(sm,P_NONTRANS); }
if (tx.isActive() && !tx.getOptimistic()) else if (tx.isActive() && tx.getOptimistic())
if (tx.isActive() && !tx.getOptimistic()) else if (tx.isActive() && tx.getOptimistic())
/** * Method to transition to read-field state. * @param sm StateManager. * @param isLoaded if the field was previously loaded. * @return new LifeCycle state. **/ public LifeCycleState transitionReadField(StateManager sm, boolean isLoaded) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (!tx.isActive() && !tx.getNontransactionalRead()) { throw new JDOUserException(LOCALISER.msg("LifeCycle.PersistentNontransactionalReadFieldNotAllowedNotActiveTx"),sm.getInternalObjectId()); } if (tx.isActive() && ! tx.getOptimistic()) { // Save the fields for rollback. sm.saveFields(); sm.refreshLoadedFields(); return changeState(sm, P_CLEAN); } else { return this; } }
/** * Method to transition to read-field state. * @param sm StateManager. * @param isLoaded if the field was previously loaded. * @return new LifeCycle state. **/ public LifeCycleState transitionReadField(StateManager sm, boolean isLoaded) { Transaction tx = sm.getPersistenceManager().currentTransaction(); if (!tx.isActive() && !tx.getNontransactionalRead()) { throw new JDOUserException(LOCALISER.msg("LifeCycle.PersistentNontransactionalReadFieldNotAllowedNotActiveTx"),sm.getInternalObjectId()); } if (tx.isActive() && ! tx.getOptimistic()) { // Save the fields for rollback. sm.saveFields(); sm.refreshLoadedFields(); return changeState(sm, P_CLEAN); } else { return this; } }
@Test(expected=UnsupportedOperationException.class) public void testOptimistic() { PersistenceManager pm = TestTools.openPM(); pm.currentTransaction().begin(); //default assertFalse(pm.currentTransaction().getOptimistic()); //should work fine pm.currentTransaction().setOptimistic(true); pm.currentTransaction().setOptimistic(false); pm.currentTransaction().rollback(); TestTools.closePM(); }