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/Repository.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java55
1 files changed, 24 insertions, 31 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
index 79b61a60e2..63fe994b61 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
@@ -51,6 +51,7 @@ import org.eclipse.emf.cdo.common.util.CurrentTimeProvider;
import org.eclipse.emf.cdo.common.util.RepositoryStateChangedEvent;
import org.eclipse.emf.cdo.common.util.RepositoryTypeChangedEvent;
import org.eclipse.emf.cdo.eresource.EresourcePackage;
+import org.eclipse.emf.cdo.etypes.EtypesPackage;
import org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.server.IQueryHandler;
@@ -96,8 +97,6 @@ import org.eclipse.emf.cdo.spi.server.InternalUnitManager;
import org.eclipse.emf.cdo.spi.server.InternalView;
import org.eclipse.emf.internal.cdo.object.CDOFactoryImpl;
-import org.eclipse.emf.internal.cdo.util.CompletePackageClosure;
-import org.eclipse.emf.internal.cdo.util.IPackageClosure;
import org.eclipse.net4j.util.AdapterUtil;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
@@ -2138,30 +2137,37 @@ public class Repository extends Container<Object> implements InternalRepository,
public void initSystemPackages(final boolean firstStart)
{
+ final List<InternalCDOPackageUnit> list = new ArrayList<InternalCDOPackageUnit>();
IStoreAccessor writer = store.getWriter(null);
StoreThreadLocal.setAccessor(writer);
try
{
- List<InternalCDOPackageUnit> list = new ArrayList<InternalCDOPackageUnit>();
- boolean nonSystemPackages = false;
+ long timeStamp;
+ if (firstStart)
+ {
+ timeStamp = store.getCreationTime();
+ list.add(initPackage(timeStamp, EcorePackage.eINSTANCE));
+ list.add(initPackage(timeStamp, EresourcePackage.eINSTANCE));
+ list.add(initPackage(timeStamp, EtypesPackage.eINSTANCE));
+ }
+ else
+ {
+ timeStamp = getTimeStamp();
+ }
+
if (initialPackages != null)
{
for (EPackage initialPackage : initialPackages)
{
if (!packageRegistry.containsKey(initialPackage.getNsURI()))
{
- list.add(initPackage(initialPackage));
- nonSystemPackages = true;
+ InternalCDOPackageUnit packageUnit = initPackage(timeStamp, initialPackage);
+ list.add(packageUnit);
}
}
}
- if (nonSystemPackages && !firstStart)
- {
- OM.LOG.info("Initial packages are about to be pre-registered. They may not become part of replications.");
- }
-
if (!list.isEmpty())
{
InternalCDOPackageUnit[] initialUnits = list.toArray(new InternalCDOPackageUnit[list.size()]);
@@ -2185,16 +2191,21 @@ public class Repository extends Container<Object> implements InternalRepository,
{
return firstStart;
}
+
+ public List<InternalCDOPackageUnit> getPackageUnits()
+ {
+ return Collections.unmodifiableList(list);
+ }
});
}
- protected InternalCDOPackageUnit initPackage(EPackage ePackage)
+ protected InternalCDOPackageUnit initPackage(long timeStamp, EPackage ePackage)
{
EMFUtil.registerPackage(ePackage, packageRegistry);
InternalCDOPackageInfo packageInfo = packageRegistry.getPackageInfo(ePackage);
InternalCDOPackageUnit packageUnit = packageInfo.getPackageUnit();
- packageUnit.setTimeStamp(store.getCreationTime());
+ packageUnit.setTimeStamp(timeStamp);
packageUnit.setState(CDOPackageUnit.State.LOADED);
return packageUnit;
}
@@ -2244,7 +2255,6 @@ public class Repository extends Container<Object> implements InternalRepository,
};
commitContext.setNewObjects(new InternalCDORevision[] { rootResource });
- commitContext.setNewPackageUnits(getNewPackageUnitsForRootResource(commitContext.getPackageRegistry()));
commitContext.preWrite();
commitContext.write(new Monitor());
@@ -2262,23 +2272,6 @@ public class Repository extends Container<Object> implements InternalRepository,
session.close();
}
- private InternalCDOPackageUnit[] getNewPackageUnitsForRootResource(InternalCDOPackageRegistry commitContextPackageRegistry)
- {
- Collection<InternalCDOPackageUnit> newPackageUnitsForRootResource = new ArrayList<InternalCDOPackageUnit>();
- IPackageClosure closure = new CompletePackageClosure();
- Set<EPackage> ePackages = closure.calculate(Collections.<EPackage> singletonList(EresourcePackage.eINSTANCE));
- for (EPackage ePackage : ePackages)
- {
- InternalCDOPackageUnit packageUnit = commitContextPackageRegistry.getPackageUnit(ePackage);
- if (packageUnit != null)
- {
- newPackageUnitsForRootResource.add(packageUnit);
- }
- }
-
- return newPackageUnitsForRootResource.toArray(new InternalCDOPackageUnit[0]);
- }
-
protected CDOID createRootResourceID()
{
if (getIDGenerationLocation() == IDGenerationLocation.STORE)

Back to the top