Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_539332_Test.java57
2 files changed, 61 insertions, 1 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 51d3c4ae42..70cb7ba82a 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
@@ -2154,6 +2154,9 @@ public class Repository extends Container<Object> implements InternalRepository,
else
{
timeStamp = getTimeStamp();
+ initPackage(timeStamp, EcorePackage.eINSTANCE);
+ initPackage(timeStamp, EresourcePackage.eINSTANCE);
+ initPackage(timeStamp, EtypesPackage.eINSTANCE);
}
if (initialPackages != null)
@@ -2455,8 +2458,8 @@ public class Repository extends Container<Object> implements InternalRepository,
}
else
{
- readPackageUnits();
initSystemPackages(false);
+ readPackageUnits();
readRootResource();
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_539332_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_539332_Test.java
new file mode 100644
index 0000000000..27d3f79964
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_539332_Test.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2018 Eike Stepper (Loehne, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.tests.bugzilla;
+
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.tests.AbstractCDOTest;
+import org.eclipse.emf.cdo.tests.config.IRepositoryConfig;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+/**
+ * Bug 539332 - Repository can't initialize dynamic packages.
+ *
+ * @author Eike Stepper
+ */
+public class Bugzilla_539332_Test extends AbstractCDOTest
+{
+ @Requires(IRepositoryConfig.CAPABILITY_RESTARTABLE)
+ public void testRestartWithDynamicPackage() throws Exception
+ {
+ CDOSession session = openSession();
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource resource = transaction.createResource(getResourcePath("res"));
+
+ EClass eClass = createDynamicEClass();
+ EObject eObject = EcoreUtil.create(eClass);
+
+ resource.getContents().add(eObject);
+ transaction.commit();
+
+ restartRepository();
+ }
+
+ private EClass createDynamicEClass()
+ {
+ EPackage ePackage = createUniquePackage();
+
+ EClass result = EcoreFactory.eINSTANCE.createEClass();
+ result.setName("Dynamic");
+ ePackage.getEClassifiers().add(result);
+ return result;
+ }
+}

Back to the top