diff options
author | Eike Stepper | 2014-03-08 09:44:54 +0000 |
---|---|---|
committer | Eike Stepper | 2014-03-08 11:01:50 +0000 |
commit | ccd53285217afb0f3cfdbfea336b82e9ffc1daae (patch) | |
tree | e91c1b022edfc46fcb2515659f6bcbf7a1a06315 | |
parent | 63144000028802be2b39f2d9a2721d374203e5ce (diff) | |
download | cdo-ccd53285217afb0f3cfdbfea336b82e9ffc1daae.tar.gz cdo-ccd53285217afb0f3cfdbfea336b82e9ffc1daae.tar.xz cdo-ccd53285217afb0f3cfdbfea336b82e9ffc1daae.zip |
[345431] Make it possible to preregister epackages
https://bugs.eclipse.org/bugs/show_bug.cgi?id=345431
3 files changed, 34 insertions, 20 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 02744d06d5..f90b37fe27 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 @@ -1837,32 +1837,45 @@ public class Repository extends Container<Object> implements InternalRepository } } - public void initSystemPackages() + public void initSystemPackages(boolean firstStart) { - List<InternalCDOPackageUnit> units = new ArrayList<InternalCDOPackageUnit>(); - units.add(initPackage(EcorePackage.eINSTANCE)); - units.add(initPackage(EresourcePackage.eINSTANCE)); - units.add(initPackage(EtypesPackage.eINSTANCE)); + IStoreAccessor writer = store.getWriter(null); + StoreThreadLocal.setAccessor(writer); - if (initialPackages != null) + try { - for (EPackage initialPackage : initialPackages) + List<InternalCDOPackageUnit> list = new ArrayList<InternalCDOPackageUnit>(); + if (firstStart) { - if (!packageRegistry.containsKey(initialPackage.getNsURI())) + list.add(initPackage(EcorePackage.eINSTANCE)); + list.add(initPackage(EresourcePackage.eINSTANCE)); + list.add(initPackage(EtypesPackage.eINSTANCE)); + } + + boolean nonSystemPackages = false; + if (initialPackages != null) + { + for (EPackage initialPackage : initialPackages) { - units.add(initPackage(initialPackage)); + if (!packageRegistry.containsKey(initialPackage.getNsURI())) + { + list.add(initPackage(initialPackage)); + nonSystemPackages = true; + } } } - } - IStoreAccessor writer = store.getWriter(null); - StoreThreadLocal.setAccessor(writer); + if (nonSystemPackages && !firstStart) + { + OM.LOG.info("Initial packages are about to be pre-registered. They may not become part of replications."); + } - try - { - InternalCDOPackageUnit[] systemUnits = units.toArray(new InternalCDOPackageUnit[units.size()]); - writer.writePackageUnits(systemUnits, new Monitor()); - writer.commit(new Monitor()); + if (!list.isEmpty()) + { + InternalCDOPackageUnit[] initialUnits = list.toArray(new InternalCDOPackageUnit[list.size()]); + writer.writePackageUnits(initialUnits, new Monitor()); + writer.commit(new Monitor()); + } } finally { @@ -2062,11 +2075,12 @@ public class Repository extends Container<Object> implements InternalRepository if (store.isFirstStart()) { - initSystemPackages(); + initSystemPackages(true); initRootResource(); } else { + initSystemPackages(false); readPackageUnits(); readRootResource(); } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java index 8d0f69fce0..666eefb980 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerImporter.java @@ -173,7 +173,7 @@ public abstract class CDOServerImporter repository.initMainBranch(branchManager, created); LifecycleUtil.activate(branchManager); - repository.initSystemPackages(); + repository.initSystemPackages(true); repository.setRootResourceID(root); // InternalSession session = repository.getSessionManager().openSession(null); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java index a35639c226..d998289829 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java @@ -259,7 +259,7 @@ public interface InternalRepository extends IRepository, PackageProcessor, Packa /** * @since 4.0 */ - public void initSystemPackages(); + public void initSystemPackages(boolean firstStart); /** * @since 4.0 |