Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java58
1 files changed, 36 insertions, 22 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java
index 9c0b9b0279..287bba0501 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java
@@ -12,10 +12,13 @@ package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.internal.protocol.model.CDOPackageImpl;
import org.eclipse.emf.cdo.internal.protocol.model.CDOPackageManagerImpl;
-import org.eclipse.emf.cdo.protocol.CDOIDRange;
import org.eclipse.emf.cdo.server.IPackageManager;
+import org.eclipse.emf.cdo.server.IStoreReader;
+import org.eclipse.emf.cdo.server.IStoreWriter;
import org.eclipse.net4j.util.ImplementationError;
+import org.eclipse.net4j.util.transaction.ITransaction;
+import org.eclipse.net4j.util.transaction.ITransactionalOperation;
/**
* @author Eike Stepper
@@ -34,37 +37,21 @@ public class PackageManager extends CDOPackageManagerImpl implements IPackageMan
return repository;
}
- @Override
- public void addPackage(CDOPackageImpl cdoPackage)
+ public void addPackages(ITransaction<IStoreWriter> storeTransaction, CDOPackageImpl[] cdoPackages)
{
- CDOIDRange metaIDRange = cdoPackage.getMetaIDRange();
- if (metaIDRange != null && metaIDRange.isTemporary())
- {
- CDOIDRange newRange = repository.getMetaIDRange(metaIDRange.getCount());
- cdoPackage.setMetaIDRange(newRange);
- }
-
- if (cdoPackage.isSystem())
- {
- addPackageToCache(cdoPackage);
- }
- else
+ for (CDOPackageImpl cdoPackage : cdoPackages)
{
- repository.getStore().addPackage(this, cdoPackage);
+ storeTransaction.execute(new AddPackageOperation(cdoPackage));
}
}
- public void addPackageToCache(CDOPackageImpl cdoPackage)
- {
- super.addPackage(cdoPackage);
- }
-
@Override
protected void resolve(CDOPackageImpl cdoPackage)
{
if (!cdoPackage.isSystem())
{
- repository.getStore().loadPackage(cdoPackage);
+ IStoreReader storeReader = StoreUtil.getReader();
+ storeReader.readPackage(cdoPackage);
}
}
@@ -73,4 +60,31 @@ public class PackageManager extends CDOPackageManagerImpl implements IPackageMan
{
throw new ImplementationError("No generated model on server side");
}
+
+ /**
+ * @author Eike Stepper
+ */
+ private final class AddPackageOperation implements ITransactionalOperation<IStoreWriter>
+ {
+ private CDOPackageImpl cdoPackage;
+
+ private AddPackageOperation(CDOPackageImpl cdoPackage)
+ {
+ this.cdoPackage = cdoPackage;
+ }
+
+ public void phase1(IStoreWriter storeWriter) throws Exception
+ {
+ storeWriter.writePackage(cdoPackage);
+ }
+
+ public void phase2(IStoreWriter storeWriter)
+ {
+ addPackage(cdoPackage);
+ }
+
+ public void undoPhase1(IStoreWriter storeWriter)
+ {
+ }
+ }
}

Back to the top