@SuppressWarnings("unchecked") private <T> T detach(T results) { if (results instanceof Collection) { return (T) persistenceManager.detachCopyAll(results); } else { return persistenceManager.detachCopy(results); } }
/** * This implementation delegates to JDO 2.0's <code>detachCopy</code> method. * <p>To be overridden for pre-JDO2 implementations, using the corresponding * vendor-specific mechanism there. * @see javax.jdo.PersistenceManager#detachCopy(Object) */ public Object detachCopy(PersistenceManager pm, Object entity) throws JDOException { return pm.detachCopy(entity); }
public <T> T detachCopy(T pc) { return getPM().detachCopy(pc); }
@SuppressWarnings("unchecked") private <T> T detach(T results) { if (results instanceof Collection) { return (T) persistenceManager.detachCopyAll(results); } else { return persistenceManager.detachCopy(results); } }
public static Object makePersistent( PersistenceManager pm, Object object, boolean detach ) { pm.makePersistent( object ); Object id = pm.getObjectId( object ); Object persistentObject = pm.getObjectById( id ); if ( detach ) { persistentObject = pm.detachCopy( persistentObject ); } return persistentObject; }
void updateNullBarField() { final Text DEFAULT_BAR = new Text("bar"); PersistenceManagerFactory pmfInstance = JDOHelper .getPersistenceManagerFactory("transactions-optional"); PersistenceManager pm = pmfInstance.getPersistenceManager(); Query query = pm.newQuery(Foo.class); @SuppressWarnings("unchecked") Collection<Foo> foos = pm.detachCopyAll((List<Foo>) query.execute()); for (Foo foo : foos) { if (foo.bar == null) { foo.bar = DEFAULT_BAR; pm.detachCopy(pm.makePersistent(foo)); } } }
public void revokePrivilege(PrivilegeObject privilege,MSentryRole role, PersistenceManager pm) throws SentryUserException { MSentryGMPrivilege mPrivilege = getPrivilege(convertToPrivilege(privilege), pm); if (mPrivilege == null) { mPrivilege = convertToPrivilege(privilege); } else { mPrivilege = (MSentryGMPrivilege) pm.detachCopy(mPrivilege); } Set<MSentryGMPrivilege> privilegeGraph = Sets.newHashSet(); privilegeGraph.addAll(populateIncludePrivileges(Sets.newHashSet(role), mPrivilege, pm)); /** * Get the privilege graph * populateIncludePrivileges will get the privileges that needed revoke */ for (MSentryGMPrivilege persistedPriv : privilegeGraph) { /** * force to load all roles related this privilege * avoid the lazy-loading risk,such as: * if the roles field of privilege aren't loaded, then the roles is a empty set * privilege.removeRole(role) and pm.makePersistent(privilege) * will remove other roles that shouldn't been removed */ revokeRolePartial(mPrivilege, persistedPriv, role, pm); } pm.makePersistent(role); }
public Installation getInstallation( int installationId ) throws ContinuumStoreException { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( Installation.class, true ); Query query = pm.newQuery( extent ); query.declareParameters( "int installationId" ); query.setFilter( "this.installationId == installationId" ); Collection result = (Collection) query.execute( installationId ); if ( result.size() == 0 ) { tx.commit(); return null; } Object object = pm.detachCopy( result.iterator().next() ); tx.commit(); return (Installation) object; } finally { rollback( tx ); } }
public Schedule getScheduleByName( String name ) throws ContinuumStoreException { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( Schedule.class, true ); Query query = pm.newQuery( extent ); query.declareImports( "import java.lang.String" ); query.declareParameters( "String name" ); query.setFilter( "this.name == name" ); Collection result = (Collection) query.execute( name ); if ( result.size() == 0 ) { tx.commit(); return null; } Object object = pm.detachCopy( result.iterator().next() ); tx.commit(); return (Schedule) object; } finally { rollback( tx ); } }
public Installation getInstallation( int installationId ) throws ContinuumStoreException, ContinuumObjectNotFoundException { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( Installation.class, true ); Query query = pm.newQuery( extent ); query.declareImports( "import java.lang.String" ); query.declareParameters( "int installationId" ); query.setFilter( "this.installationId == installationId" ); Collection result = (Collection) query.execute( installationId ); if ( result.size() == 0 ) { tx.commit(); return null; } Object object = pm.detachCopy( result.iterator().next() ); tx.commit(); return (Installation) object; } finally { rollback( tx ); } }
public Profile getProfileByName( String profileName ) throws ContinuumStoreException { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( Profile.class, true ); Query query = pm.newQuery( extent ); query.declareImports( "import java.lang.String" ); query.declareParameters( "String name" ); query.setFilter( "this.name == name" ); Collection result = (Collection) query.execute( profileName ); if ( result.size() == 0 ) { tx.commit(); return null; } Object object = pm.detachCopy( result.iterator().next() ); tx.commit(); return (Profile) object; } finally { rollback( tx ); } }
public Schedule getScheduleByName( String name ) throws ContinuumStoreException { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( Schedule.class, true ); Query query = pm.newQuery( extent ); query.declareImports( "import java.lang.String" ); query.declareParameters( "String name" ); query.setFilter( "this.name == name" ); Collection result = (Collection) query.execute( name ); if ( result.size() == 0 ) { tx.commit(); return null; } Object object = pm.detachCopy( result.iterator().next() ); tx.commit(); return (Schedule) object; } finally { rollback( tx ); } }
public LocalRepository getLocalRepositoryByName( String name ) throws ContinuumStoreException { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( LocalRepository.class, true ); Query query = pm.newQuery( extent ); query.declareImports( "import java.lang.String" ); query.declareParameters( "String name" ); query.setFilter( "this.name == name" ); Collection result = (Collection) query.execute( name ); if ( result.size() == 0 ) { tx.commit(); return null; } Object object = pm.detachCopy( result.iterator().next() ); tx.commit(); return (LocalRepository) object; } finally { rollback( tx ); } }
loop = pm.getObjectById(Parent.class, parentKey); Parent detachedParent = pm.detachCopy(parent);
public static Object addObject( PersistenceManager pm, Object object, String fetchGroups[] ) { Transaction tx = pm.currentTransaction(); try { tx.begin(); if ( fetchGroups != null ) { for ( int i = 0; i >= fetchGroups.length; i++ ) { pm.getFetchPlan().addGroup( fetchGroups[i] ); } } pm.makePersistent( object ); object = pm.detachCopy( object ); tx.commit(); return object; } finally { rollbackIfActive( tx ); } }
public BuildDefinitionTemplate getContinuumBuildDefinitionTemplateWithType( String type ) throws ContinuumStoreException { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( BuildDefinitionTemplate.class, true ); Query query = pm.newQuery( extent ); query.declareImports( "import java.lang.String" ); query.declareParameters( "String type" ); query.setFilter( "continuumDefault == true && this.type == type" ); pm.getFetchPlan().addGroup( BUILD_TEMPLATE_BUILD_DEFINITIONS ); List result = (List) query.execute( type ); if ( result == null || result.isEmpty() ) { return null; } return (BuildDefinitionTemplate) pm.detachCopy( result.get( 0 ) ); } finally { tx.commit(); rollback( tx ); } }
public BuildDefinitionTemplate getContinuumBuildDefinitionTemplateWithType( String type ) throws ContinuumStoreException { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( BuildDefinitionTemplate.class, true ); Query query = pm.newQuery( extent ); query.declareImports( "import java.lang.String" ); query.declareParameters( "String type" ); query.setFilter( "continuumDefault == true && this.type == type" ); pm.getFetchPlan().addGroup( BUILD_TEMPLATE_BUILD_DEFINITIONS ); List result = (List) query.execute( type ); if ( result == null || result.isEmpty() ) { return null; } return (BuildDefinitionTemplate) pm.detachCopy( result.get( 0 ) ); } finally { tx.commit(); rollback( tx ); } }
public BuildResult getLatestBuildResultInSuccess( int projectId ) { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); Extent extent = pm.getExtent( BuildResult.class, true ); Query query = pm.newQuery( extent ); query.declareParameters( "int projectId" ); String filter = "this.project.buildNumber == this.buildNumber && this.project.id == projectId"; query.setFilter( filter ); query.setUnique( true ); BuildResult result = (BuildResult) query.execute( projectId ); result = (BuildResult) pm.detachCopy( result ); tx.commit(); return result; } finally { rollback( tx ); } }
public Object saveObject( Object object, String[] fetchGroups ) { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); if ( ( JDOHelper.getObjectId( object ) != null ) && !JDOHelper.isDetached( object ) ) { // This is a fatal error that means we need to fix our code. // Leave it as a JDOUserException, it's intentional. throw new JDOUserException( "Existing object is not detached: " + object, object ); } if ( fetchGroups != null ) { for ( int i = 0; i >= fetchGroups.length; i++ ) { pm.getFetchPlan().addGroup( fetchGroups[i] ); } } pm.makePersistent( object ); object = pm.detachCopy( object ); tx.commit(); return object; } finally { rollbackIfActive( tx ); } }
private TestClass createObj(PersistenceManager pm, ObjectState state) { TestClass t = new TestClass(); if (state == ObjectState.TRANSIENT) { return t; } pm.makePersistent(t); switch(state) { case PERSISTENT_NEW: return t; case PERSISTENT_NEW_DELETED: pm.deletePersistent(t); return t; default: } pm.currentTransaction().commit(); pm.currentTransaction().begin(); switch(state) { case DETACHED_CLEAN: t = pm.detachCopy(t); break; case DETACHED_DIRTY: t = pm.detachCopy(t); t.setInt(t.getInt()+1); break; case HOLLOW_PERSISTENT_NONTRANSACTIONAL: break; case PERSISTENT_CLEAN: break; case PERSISTENT_DELETED: pm.deletePersistent(t); break; case PERSISTENT_DIRTY: t.setInt(t.getInt()+1); break; case PERSISTENT_NONTRANSACTIONAL_DIRTY: pm.makeNontransactional(t); default: throw new UnsupportedOperationException(state.name()); } return t; }