/** * 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); }
/** * 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; } }
assertFalse(pmf.getNontransactionalRead()); pm = pmf.getPersistenceManager(); assertFalse(pm.currentTransaction().getNontransactionalRead()); pm.currentTransaction().setNontransactionalRead(true); assertTrue(pm.currentTransaction().getNontransactionalRead()); pm.currentTransaction().setNontransactionalRead(false); assertFalse(pm.currentTransaction().getNontransactionalRead()); pm.close(); assertTrue(pmf.getNontransactionalRead()); pm = pmf.getPersistenceManager(); assertTrue(pm.currentTransaction().getNontransactionalRead()); pm.currentTransaction().setNontransactionalRead(false); assertFalse(pm.currentTransaction().getNontransactionalRead()); pm.currentTransaction().setNontransactionalRead(true); assertTrue(pm.currentTransaction().getNontransactionalRead()); pm.close();
pm.currentTransaction().begin(); assertFalse(pm.currentTransaction().getNontransactionalRead());