[514353] Propagate load errors
diff --git a/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2AS.java b/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2AS.java
index afaf35d..517f1af 100644
--- a/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2AS.java
+++ b/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2AS.java
@@ -32,6 +32,7 @@
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.impl.DynamicEObjectImpl;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.Resource.Diagnostic;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.URIConverter;
import org.eclipse.emf.ecore.util.EcoreUtil;
@@ -410,12 +411,12 @@
/**
* Set of all UML objects requiring further work during the reference pass.
*/
- private @NonNull Set<EObject> referencers = new HashSet<>();
+ private @NonNull Set<@NonNull EObject> referencers = new HashSet<>();
/**
* Set of all UML objects requiring further work after the reference pass.
*/
- private @NonNull Set<EObject> users = new HashSet<>();
+ private @NonNull Set<@NonNull EObject> users = new HashSet<>();
/**
* Set of all converters used during session.
@@ -429,10 +430,10 @@
protected final @NonNull UML2ASDeclarationSwitch declarationPass = new UML2ASDeclarationSwitch(this);
protected final @NonNull UML2ASReferenceSwitch referencePass = new UML2ASReferenceSwitch(this);
protected final @NonNull UML2ASUseSwitch usePass = new UML2ASUseSwitch(this);
- private @Nullable List<Resource> importedResources = null;
+ private @Nullable List<@NonNull Resource> importedResources = null;
// private @NonNull Set<org.eclipse.uml2.uml.Property> umlProperties = new HashSet<>();
- private @NonNull Map<org.eclipse.ocl.pivot.Class, List<Property>> type2properties = new HashMap<>();
+ private @NonNull Map<org.eclipse.ocl.pivot.@NonNull Class, @NonNull List<@NonNull Property>> type2properties = new HashMap<>();
// private @NonNull Map<Type, List<Property>> stereotypeProperties = new HashMap<Type, List<>>();
private final @NonNull Map<org.eclipse.uml2.uml.NamedElement, Boolean> namedElement2isNullFree = new HashMap<>();
@@ -469,7 +470,7 @@
@Override
public void addImportedResource(@NonNull Resource importedResource) {
if (importedResource != umlResource) {
- List<Resource> importedResources2 = importedResources;
+ List<@NonNull Resource> importedResources2 = importedResources;
if (importedResources2 == null) {
importedResources = importedResources2 = new ArrayList<>();
}
@@ -522,7 +523,7 @@
@Override
public void addProperty(org.eclipse.ocl.pivot.@NonNull Class asType, @NonNull Property asProperty) {
- List<Property> asProperties = type2properties.get(asType);
+ List<@NonNull Property> asProperties = type2properties.get(asType);
if (asProperties == null) {
asProperties = new ArrayList<>();
type2properties.put(asType, asProperties);
@@ -578,6 +579,7 @@
if (pivotModel2 == null) {
URI pivotURI = createPivotURI();
ASResource asResource = metamodelManager.getResource(pivotURI, ASResource.UML_CONTENT_TYPE);
+ List<@NonNull Diagnostic> errors2 = errors;
try {
pivotModel2 = installDeclarations(asResource);
// Map<String, Type> resolvedSpecializations = new HashMap<>();
@@ -590,6 +592,14 @@
// metamodelManager.addOrphanType((Type)pivotElement);
// }
// }
+ if (errors2 != null) {
+ if ((errors2.size() == 1) && (errors2.get(0) instanceof Exception)) {
+ throw (Exception)errors2.get(0);
+ }
+ else {
+ throw new XMIException(PivotUtil.formatResourceDiagnostics(errors2, "", "\n"));
+ }
+ }
installImports();
installReferencers();
modelAnalysis.installStereotypes();
@@ -688,7 +698,7 @@
return declarationPass;
}
- public @Nullable List<Resource> getImportedResources() {
+ public @Nullable List<@NonNull Resource> getImportedResources() {
return importedResources;
}
@@ -843,10 +853,13 @@
}
Set<Type> allPropertiedTypes = new HashSet<>(typeProperties.keySet()); */
// allPropertiedTypes.addAll(stereotypeProperties.keySet());
- for (org.eclipse.ocl.pivot.Class pivotType : type2properties.keySet()) {
- List<Property> asProperties = type2properties.get(pivotType);
+ for (org.eclipse.ocl.pivot.@NonNull Class pivotType : type2properties.keySet()) {
+ if ("Class1".equals(pivotType.getName())) {
+ toString();
+ }
+ List<@NonNull Property> asProperties = type2properties.get(pivotType);
Collections.sort(asProperties, NameUtil.NAMEABLE_COMPARATOR);
- refreshList(ClassUtil.nonNullEMF(pivotType.getOwnedProperties()), asProperties);
+ refreshList(PivotUtilInternal.getOwnedPropertiesList(pivotType), asProperties);
}
}
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/utilities/PivotUtilInternal.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/utilities/PivotUtilInternal.java
index 8780c1f..1bb441e 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/utilities/PivotUtilInternal.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/utilities/PivotUtilInternal.java
@@ -507,6 +507,13 @@
return ClassUtil.nullFree(shadowExp.getOwnedParts());
}
+ /**
+ * @since 1.3
+ */
+ public static @Nullable List<@NonNull Property> getOwnedPropertiesList(org.eclipse.ocl.pivot.@NonNull Class asClass) {
+ return ClassUtil.nullFree(asClass.getOwnedProperties());
+ }
+
public static String getSpecificationRole(@NonNull LanguageExpression specification) {
EReference eContainmentFeature = specification.eContainmentFeature();
if (eContainmentFeature == PivotPackage.Literals.NAMESPACE__OWNED_CONSTRAINTS) {