From 2e1532a7c4522da00164d4935f5a3ebb4de3f334 Mon Sep 17 00:00:00 2001 From: Eike Stepper Date: Tue, 3 Sep 2013 13:56:42 +0200 Subject: [416428] NPE in AbstractMappingStrategy.handleRevisions() https://bugs.eclipse.org/bugs/show_bug.cgi?id=416428 --- .../db/mapping/AbstractMappingStrategy.java | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java index e5ceb6a82f..e71c45165e 100644 --- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java +++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java @@ -206,14 +206,22 @@ public abstract class AbstractMappingStrategy extends Lifecycle implements IMapp else { EPackage ePackage = eClass.getEPackage(); - if (CDOModelUtil.isCorePackage(ePackage) && !systemPackageMappingInfo.ecoreMapped) + if (CDOModelUtil.isCorePackage(ePackage)) { - return; + initSystemPackageMappingInfo(); + if (!systemPackageMappingInfo.ecoreMapped) + { + return; + } } - if (CDOModelUtil.isTypesPackage(ePackage) && !systemPackageMappingInfo.etypesMapped) + if (CDOModelUtil.isTypesPackage(ePackage)) { - return; + initSystemPackageMappingInfo(); + if (!systemPackageMappingInfo.etypesMapped) + { + return; + } } IClassMapping classMapping = getClassMapping(eClass); @@ -490,12 +498,7 @@ public abstract class AbstractMappingStrategy extends Lifecycle implements IMapp } } - if (systemPackageMappingInfo == null) - { - systemPackageMappingInfo = new SystemPackageMappingInfo(); - systemPackageMappingInfo.ecoreMapped = hasTableFor(EcorePackage.eINSTANCE.getEPackage()); - systemPackageMappingInfo.etypesMapped = hasTableFor(EtypesPackage.eINSTANCE.getAnnotation()); - } + initSystemPackageMappingInfo(); if (!systemPackageMappingInfo.ecoreMapped || !systemPackageMappingInfo.etypesMapped) { @@ -561,6 +564,16 @@ public abstract class AbstractMappingStrategy extends Lifecycle implements IMapp } } + private void initSystemPackageMappingInfo() + { + if (systemPackageMappingInfo == null) + { + systemPackageMappingInfo = new SystemPackageMappingInfo(); + systemPackageMappingInfo.ecoreMapped = hasTableFor(EcorePackage.eINSTANCE.getEPackage()); + systemPackageMappingInfo.etypesMapped = hasTableFor(EtypesPackage.eINSTANCE.getAnnotation()); + } + } + public void removeMapping(Connection connection, InternalCDOPackageUnit[] packageUnits) { IDBSchemaTransaction schemaTransaction = store.getDatabase().openSchemaTransaction(); -- cgit v1.2.3