Author: tfmorris
Date: 2008-07-29 10:32:58-0700
New Revision: 15402
Modified:
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementFactoryMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/XmiReaderImpl.java
Log:
Issue 5255: Introduce deleteExtent method and use it when removing projects and profiles
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java?view=diff&rev=15402&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java&r1=15401&r2=15402
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java 2008-07-29 10:32:58-0700
@@ -2174,10 +2174,12 @@
public Collection getRootElements() {
Collection elements = new ArrayList();
org.omg.uml.UmlPackage pkg = modelImpl.getUmlPackage();
- for (RefObject obj : (Collection<RefObject>) pkg.getCore().getElement()
- .refAllOfType()) {
- if (obj.refImmediateComposite() == null) {
- elements.add(obj);
+ if (pkg != null) {
+ for (RefObject obj : (Collection<RefObject>) pkg.getCore()
+ .getElement().refAllOfType()) {
+ if (obj.refImmediateComposite() == null) {
+ elements.add(obj);
+ }
}
}
return elements;
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java?view=diff&rev=15402&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java&r1=15401&r2=15402
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java 2008-07-29 10:32:58-0700
@@ -40,6 +40,7 @@
import javax.jmi.model.ModelPackage;
import javax.jmi.model.MofPackage;
import javax.jmi.reflect.RefObject;
+import javax.jmi.reflect.RefPackage;
import javax.jmi.xmi.MalformedXMIException;
import org.apache.log4j.Logger;
@@ -220,8 +221,10 @@
// the last minute.
// Delete the old extent first
- extents.remove(umlPackage);
- umlPackage.refDelete();
+ if (umlPackage != null) {
+ extents.remove(umlPackage);
+ umlPackage.refDelete();
+ }
umlPackage = uPackage;
extents.put(umlPackage, Boolean.FALSE);
@@ -238,6 +241,26 @@
}
}
+ RefPackage createExtent(String name) {
+ try {
+ return getRepository().createExtent(name, getMofPackage());
+ } catch (CreationFailedException e) {
+ LOG.error("Extent creation failed for " + name);
+ return null;
+ }
+ }
+
+ void removeExtent(UmlPackage extent) {
+ if (umlPackage.equals(extent)) {
+ umlPackage = null;
+ }
+ extents.remove(extent);
+ }
+
+ Collection<UmlPackage> getExtents() {
+ return extents.keySet();
+ }
+
boolean isReadOnly(Object extent) {
Boolean result = extents.get(extent);
if (result == null) {
@@ -407,7 +430,7 @@
}
- private void createDefaultExtent() throws UmlException {
+ void createDefaultExtent() {
// Create a default extent for the user UML model. This will get
// replaced if a new model is read in from an XMI file.
umlPackage = (UmlPackage) repository.getExtent(MODEL_EXTENT_NAME);
@@ -420,13 +443,7 @@
LOG.debug("MDR Init - UML extent existed - "
+ "deleted it and all UML data");
}
- try {
- umlPackage =
- (UmlPackage) repository.createExtent(
- MODEL_EXTENT_NAME, mofPackage);
- } catch (CreationFailedException e) {
- throw new UmlException(e);
- }
+ umlPackage = (UmlPackage) createExtent(MODEL_EXTENT_NAME);
}
/**
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementFactoryMDRImpl.java?view=diff&rev=15402&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementFactoryMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementFactoryMDRImpl.java&r1=15401&r2=15402
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementFactoryMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementFactoryMDRImpl.java 2008-07-29 10:32:58-0700
@@ -1,5 +1,5 @@
// $Id$
-// Copyright (c) 2005-2007 The Regents of the University of California. All
+// Copyright (c) 2005-2008 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
@@ -25,7 +25,6 @@
package org.argouml.model.mdr;
import org.apache.log4j.Logger;
-import org.argouml.model.ModelImplementation;
import org.argouml.model.ModelManagementFactory;
import org.omg.uml.foundation.core.ModelElement;
import org.omg.uml.foundation.core.Namespace;
@@ -75,13 +74,24 @@
public Model createModel() {
+ ModelManagementPackage mmp = getModelManagementPackage();
+ if (mmp == null) {
+ // Normally the extent should exist already, but in the case of
+ // making an empty project, we may not have an extent yet, so
+ // create a default extent
+ modelImpl.createDefaultExtent();
+ }
Model myModel = getModelManagementPackage().getModel().createModel();
super.initialize(myModel);
return myModel;
}
private ModelManagementPackage getModelManagementPackage() {
- return modelImpl.getUmlPackage().getModelManagement();
+ org.omg.uml.UmlPackage umlPackage = modelImpl.getUmlPackage();
+ if (umlPackage == null) {
+ return null;
+ }
+ return umlPackage.getModelManagement();
}
public void setRootModel(Object rootModel) {
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java?view=diff&rev=15402&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java&r1=15401&r2=15402
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java 2008-07-29 10:32:58-0700
@@ -33,6 +33,7 @@
import javax.jmi.reflect.InvalidObjectException;
import javax.jmi.reflect.RefObject;
+import javax.jmi.reflect.RefPackage;
import org.apache.log4j.Logger;
import org.argouml.model.DummyModelCommand;
@@ -1251,4 +1252,10 @@
}
}
+ public void deleteExtent(Object element) {
+ RefPackage extent = ((RefObject) element).refOutermostPackage();
+ modelImpl.removeExtent((org.omg.uml.UmlPackage) extent);
+ extent.refDelete();
+ }
+
}
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/XmiReaderImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/XmiReaderImpl.java?view=diff&rev=15402&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/XmiReaderImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/XmiReaderImpl.java&r1=15401&r2=15402
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/XmiReaderImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/XmiReaderImpl.java 2008-07-29 10:32:58-0700
@@ -57,7 +57,6 @@
import org.argouml.model.UmlException;
import org.argouml.model.XmiException;
import org.argouml.model.XmiReader;
-import org.netbeans.api.mdr.CreationFailedException;
import org.netbeans.api.xmi.XMIReader;
import org.netbeans.api.xmi.XMIReaderFactory;
import org.netbeans.lib.jmi.xmi.InputConfig;
@@ -163,14 +162,7 @@
LOG.warn("Using existing extent " + extentName);
// extent.refDelete();
} else {
-
- try {
- extent = modelImpl.getRepository().createExtent(
- inputSource.getSystemId(), modelImpl.getMofPackage());
- } catch (CreationFailedException e1) {
- throw new UmlException("Extent creation failed", e1);
- }
-
+ extent = modelImpl.createExtent(inputSource.getSystemId());
modelImpl.addExtent((UmlPackage) extent, readOnly);
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.