[579051] Tidy up post-reversion
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/Orphanage.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/Orphanage.java
index f5f6a04..75e38d6 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/Orphanage.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/Orphanage.java
@@ -37,7 +37,6 @@
import org.eclipse.ocl.pivot.internal.resource.ASResourceImpl;
import org.eclipse.ocl.pivot.internal.resource.OCLASResourceFactory;
import org.eclipse.ocl.pivot.internal.utilities.PivotConstantsInternal;
-import org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal;
import org.eclipse.ocl.pivot.utilities.ClassUtil;
import org.eclipse.ocl.pivot.utilities.PivotConstants;
@@ -45,28 +44,31 @@
* An Orphanage provides a Package that weakly contains elements such as type specializations that
* should require a container for the purposes of validation, but which should be eligible for
* garbage collection whenever no longer in use.
+ * <br>
+ * There is no global orphanage. Any reference to one is stale.
+ * <br>
+ * Each OCL CompleteModel has a shared orphanage that contains the referenced unique synthesized elements.
+ * The shared orphanage is never saved.
+ * <br>
+ * Each saved ASResource has a local orphanage that contains a selective copy of the shared orphanage so that
+ * all references are terminated locally. ASSaver creates this copy via PivotSaveImpl.init().
*/
public class Orphanage extends PackageImpl
{
/**
- * The OrphanResource tailors the inherited ASREsorce functionality to support the single Resource shared by all
- * OCL consumers, but not included in any REsourceSEt. It is nt saved and hso has no xmi:ids but it does have LUSSIDs
+ * The OrphanResource tailors the inherited ASResource functionality to support the single Resource shared by all
+ * same-OCL consumers. It is not saved and so has no xmi:ids but it does have LUSSIDs
* in order to contribute to the signatures of operations.
*/
protected static class OrphanResource extends ASResourceImpl
{
protected OrphanResource(@NonNull URI uri) {
super(uri, OCLASResourceFactory.getInstance());
- setUpdating(true); // XXX
+ setUpdating(true);
setSaveable(false);
}
@Override
- public NotificationChain basicSetResourceSet(ResourceSet resourceSet, NotificationChain notifications) {
- return notifications; // The OrphanResource is in no, rather than latest, ResourceSt
- }
-
- @Override
protected void doUnload() {
if (contents != null) {
for (EObject aContent : contents) {
@@ -86,12 +88,6 @@
}
@Override
- public ResourceSet getResourceSet() {
- // OrphanResource can be shared across many ResourceSets - use the current one
- return PivotUtilInternal.getEnvironmentFactory(null).getMetamodelManager().getASResourceSet();
- }
-
- @Override
public boolean isOrphanage() {
return true;
}
@@ -217,7 +213,6 @@
@Override
public void addUnique(T object) {
- // throw new UnsupportedOperationException();
basicAdd(object, null);
}
@@ -391,14 +386,40 @@
}
public static final @NonNull URI ORPHANAGE_URI = ClassUtil.nonNullEMF(URI.createURI(PivotConstants.ORPHANAGE_URI + PivotConstants.DOT_OCL_AS_FILE_EXTENSION));
+ @Deprecated /* @deprecated The global Orphanage is never used */
private static Orphanage ORPHAN_PACKAGE = null;
- private static OrphanResource ORPHAN_RESOURCE = null;
+ /**
+ * @since 1.18
+ */
+ public static org.eclipse.ocl.pivot.@NonNull Package createLocalOrphanage() {
+ org.eclipse.ocl.pivot.Package orphanage = PivotFactory.eINSTANCE.createPackage();
+ orphanage.setName(PivotConstants.ORPHANAGE_NAME);
+ orphanage.setNsPrefix(PivotConstants.ORPHANAGE_PREFIX);
+ orphanage.setURI(PivotConstants.ORPHANAGE_URI);
+ return orphanage;
+ }
+
+ /**
+ * @since 1.18
+ */
+ public static @NonNull Orphanage createSharedOrphanage(@NonNull ResourceSet resourceSet) {
+ Orphanage orphanage = new Orphanage(PivotConstants.ORPHANAGE_NAME, PivotConstants.ORPHANAGE_URI);
+ Model orphanModel = PivotFactory.eINSTANCE.createModel();
+ orphanModel.setName(PivotConstants.ORPHANAGE_NAME);;
+ orphanModel.setExternalURI(PivotConstants.ORPHANAGE_URI);
+ orphanModel.getOwnedPackages().add(orphanage);
+ Resource orphanageResource = new OrphanResource(ORPHANAGE_URI);
+ orphanageResource.getContents().add(orphanModel);
+ resourceSet.getResources().add(orphanageResource);
+ return orphanage;
+ }
+
+ @Deprecated /* @deprecated Never used */
public static void disposeInstance() {
if (ORPHAN_PACKAGE != null) {
ORPHAN_PACKAGE.dispose();
ORPHAN_PACKAGE = null;
- ORPHAN_RESOURCE = null;
}
}
@@ -406,6 +427,7 @@
* Return the Orphanage for an eObject, which is the Orphanage resource in the same ResourceSet as
* the eObject, else the global Orphanage.
*/
+ @Deprecated /* @deprecated - not used */
public static @Nullable Orphanage getOrphanage(@NonNull EObject eObject) {
// if (eObject == null) {
// return null;
@@ -419,56 +441,11 @@
}
/**
- * Return the global Orphanage.
- *
- * @since 1.18
- *
- public static @NonNull Orphanage getOrphanage() {
- OrphanResource orphanResource = ORPHAN_RESOURCE;
- Orphanage orphanPackage = ORPHAN_PACKAGE;
- if (orphanPackage == null) {
- orphanPackage = ORPHAN_PACKAGE = new Orphanage(PivotConstants.ORPHANAGE_NAME, PivotConstants.ORPHANAGE_URI);
- Model orphanModel = PivotFactory.eINSTANCE.createModel();
- orphanModel.setName(PivotConstants.ORPHANAGE_NAME);;
- orphanModel.setExternalURI(PivotConstants.ORPHANAGE_URI);
- orphanModel.getOwnedPackages().add(orphanPackage);
- orphanResource = ORPHAN_RESOURCE = new OrphanResource(ORPHANAGE_URI);
- orphanResource.getContents().add(orphanModel);
- orphanResource.setSaveable(false);
- }
- return orphanPackage;
- } */
-
- /**
- * Return the Orphanage for resourceSet.
- * The global orphanage contains the globally unique shared orphan,
- * A local orphanage holds the subset of the overall orphans necessary to support serialization.
- *
- @Deprecated /* @deprecated - not used - use the shared global Prphange * /
- public static @NonNull Orphanage getOrphanage(@NonNull ResourceSet resourceSet) {
- if (ORPHAN_PACKAGE == null) {
- return getOrphanage();
- }
- Orphanage orphanPackage = ORPHAN_PACKAGE;
- OrphanResource orphanResource = ORPHAN_RESOURCE;
- assert orphanPackage != null;
- assert orphanResource != null;
- EList<@NonNull Resource> resources = resourceSet.getResources();
- for (Resource aResource : resources) {
- if (aResource == orphanResource) {
- return orphanPackage;
- }
- }
- resources.add(orphanResource);
- return orphanPackage;
- } */
-
- /**
- * Return the Orphanage for a resourceSet if non-null, else the global Orphanage.
+ * Return the Orphanage for a resourceSet if non-null. Obsolete deprecated functionality returns a global Orphanage if null.
*/
public static @NonNull Orphanage getOrphanage(@Nullable ResourceSet resourceSet) {
- assert resourceSet != null; // XXX
if (resourceSet == null) {
+ assert false : "Use of the global Orphanage is deprecated";
Orphanage instance2 = ORPHAN_PACKAGE;
if (instance2 == null) {
instance2 = ORPHAN_PACKAGE = new Orphanage(PivotConstants.ORPHANAGE_NAME, PivotConstants.ORPHANAGE_URI);
@@ -486,27 +463,29 @@
}
}
}
- Orphanage orphanage = new Orphanage(PivotConstants.ORPHANAGE_NAME, PivotConstants.ORPHANAGE_URI);
- Model orphanModel = PivotFactory.eINSTANCE.createModel();
- orphanModel.setName(PivotConstants.ORPHANAGE_NAME);;
- orphanModel.setExternalURI(PivotConstants.ORPHANAGE_URI);
- orphanModel.getOwnedPackages().add(orphanage);
- Resource orphanageResource = new OrphanResource(ORPHANAGE_URI);
- orphanageResource.getContents().add(orphanModel);
- resourceSet.getResources().add(orphanageResource);
- return orphanage;
+ return createSharedOrphanage(resourceSet);
}
/**
- * Return true if asPackage is an orphanage for synthesized types.
+ * Return true if asPackage is an orphanage for synthesized model elements.
+ *
+ * @since 1.18
*/
+ public static boolean isOrphanage(org.eclipse.ocl.pivot.@NonNull Package asPackage) {
+ String uri = asPackage.getURI();
+ return PivotConstants.ORPHANAGE_URI.equals(uri) || PivotConstantsInternal.OLD_ORPHANAGE_URI.equals(uri);
+ }
+
+ /**
+ * Return true if asPackage is a local or shared orphanage for synthesized model elements.
+ */
+ @Deprecated /* @deprected use isOrphanage() */
public static boolean isTypeOrphanage(org.eclipse.ocl.pivot.@Nullable Package asPackage) {
if (asPackage == null) {
return false;
}
else {
- String uri = asPackage.getURI();
- return PivotConstants.ORPHANAGE_URI.equals(uri) || PivotConstantsInternal.OLD_ORPHANAGE_URI.equals(uri);
+ return isOrphanage(asPackage);
}
}
@@ -521,6 +500,9 @@
if (ownedClasses != null) {
((WeakEList<?>)ownedClasses).dispose();
}
+ if (ownedPackages != null) {
+ ((WeakEList<?>)ownedPackages).dispose();
+ }
}
@Override
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PivotMetamodelManager.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PivotMetamodelManager.java
index 580a894..af43eef 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PivotMetamodelManager.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PivotMetamodelManager.java
@@ -591,8 +591,7 @@
}
}
- @Deprecated /* @deprecated - not used - use the shared global Orphanage */
- public @NonNull Orphanage createOrphanage() { // XXX
+ public @NonNull Orphanage createOrphanage() {
return Orphanage.getOrphanage(asResourceSet);
}
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ASSaver.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ASSaver.java
index ac1f504..d5f6501 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ASSaver.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ASSaver.java
@@ -179,12 +179,9 @@
}
protected org.eclipse.ocl.pivot.@NonNull Package getOrphanPackage(@NonNull Resource resource) {
- Package orphanage2 = orphanage;
+ org.eclipse.ocl.pivot.Package orphanage2 = orphanage;
if (orphanage2 == null) {
- orphanage = orphanage2 = PivotFactory.eINSTANCE.createPackage();
- orphanage2.setName(PivotConstants.ORPHANAGE_NAME);
- orphanage2.setNsPrefix(PivotConstants.ORPHANAGE_PREFIX);
- orphanage2.setURI(PivotConstants.ORPHANAGE_URI);
+ orphanage = orphanage2 = Orphanage.createLocalOrphanage();
EList<EObject> contents = resource.getContents();
if ((contents.size() > 0) && (contents.get(0) instanceof Model)) {
((Model)contents.get(0)).getOwnedPackages().add(orphanage2);
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/LUSSIDs.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/LUSSIDs.java
index 880deb6..ead780e 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/LUSSIDs.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/LUSSIDs.java
@@ -420,7 +420,7 @@
}
protected void assignXMIIDs(@NonNull AS2ID as2id) {
- assert !asResource.isOrphanage();
+ // XXX assert !asResource.isOrphanage();
Map<@NonNull String, @NonNull List<@NonNull Element>> xmiid2collisions2 = xmiid2collisions;
for (@NonNull Element element : identifiedElement2lussid.keySet()) {
Integer lussid = identifiedElement2lussid.get(element);