svn commit: r13233 - trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: tfmorris
Date: 2007-08-03 14:46:25-0700
New Revision: 13233

Modified:
   trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java

Log:
Restore backward compatible behavior.

Modified: trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java?view=diff&rev=13233&p1=trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java&p2=trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java&r1=13232&r2=13233
==============================================================================
--- trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java	(original)
+++ trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java	2007-08-03 14:46:25-0700
@@ -29,6 +29,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.log4j.Logger;
 import org.argouml.model.CoreFactory;
 import org.argouml.model.ModelManagementHelper;
 import org.omg.uml.behavioralelements.commonbehavior.Reception;
@@ -112,6 +113,8 @@
 class CoreFactoryMDRImpl extends AbstractUmlModelFactoryMDR implements
         CoreFactory {
 
+    private static final Logger LOG = Logger.getLogger(CoreFactoryMDRImpl.class);
+    
     /**
      * The model implementation.
      */
@@ -947,7 +950,25 @@
     
     @SuppressWarnings("deprecation")
     public Permission buildPermission(Object client, Object supplier) {
-        return buildPackageImport(client, supplier);
+        if (!(client instanceof ModelElement) 
+                || !(supplier instanceof ModelElement)) {
+            throw new IllegalArgumentException("client is not a Namespace" +
+                        " or supplier is not a Package");
+        }
+        // Warn about historical usage which is not compliant with UML spec.
+        if (!(client instanceof Namespace) 
+                || !(supplier instanceof UmlPackage)) {
+            LOG.warn("buildPermission called with client that is not a Namespace" +
+                        " or supplier that is not a Package");
+        }
+        Permission per = buildPermissionInternal((ModelElement) client, 
+                (ModelElement) supplier);
+
+        // TODO: This should fetch the stereotype from our profile
+        modelImpl.getExtensionMechanismsFactory().buildStereotype(per, 
+                ModelManagementHelper.IMPORT_STEREOTYPE,
+                per.getNamespace());
+        return per;
     }
     
     
@@ -955,7 +976,7 @@
         if (!(client instanceof Namespace) 
                 || !(supplier instanceof UmlPackage)) {
             throw new IllegalArgumentException("client is not a Namespace" +
-            		" or supplier is not a Namespace");
+            		" or supplier is not a Package");
         }
         Permission per = buildPermissionInternal((ModelElement) client, 
                 (UmlPackage) supplier);
@@ -969,7 +990,7 @@
 
     
     private Permission buildPermissionInternal(ModelElement client, 
-            UmlPackage supplier) {
+            ModelElement supplier) {
         Permission permission = (Permission) createPermission();
         permission.getSupplier().add(supplier);
         permission.getClient().add(client);
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.