Author: linus
Date: 2011-12-08 13:38:55-0800
New Revision: 19797

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

Log:
Attempt at solving issue 6389.

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&pathrev=19797&r1=19796&r2=19797
==============================================================================
--- 
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   
    2011-12-08 13:38:55-0800
@@ -395,6 +395,13 @@
      */
     public Map<String, Object> getXMIUUIDToObjectMap() {
         if (resolver != null) {
+            // Give the resolver.getIdToObjectMap() entries 
+            // priority over entries with the same UUID from 
+            // resolver.getIdToObjectMaps() because entries
+            // in resolver.getIdToObjectMaps() are historic.
+            HashMap<String, Object> globalXmiIdToObjectMap = 
+                new HashMap<String, Object>(resolver.getIdToObjectMap());
+
             Map<String, Map<String, Object>> idToObjectMaps = 
                 resolver.getIdToObjectMaps();
             Set<Entry<String,Map<String,Object>>> entrySet = null;
@@ -411,17 +418,19 @@
                     entry.setValue(new 
HashMap<String,Object>(entry.getValue()));
                 }
             }
-            HashMap<String, Object> globalXmiIdToObjectMap = 
-                new HashMap<String, Object>();
             for (Entry<String, Map<String, Object>> entry : entrySet) {
                 String xmiIdPrefix =
                     entry.getKey().startsWith(getTempXMIFileURIPrefix()) ? "" 
: 
                         entry.getKey() + "#";
                 for (Entry<String, Object> innerMapEntry : 
                         entry.getValue().entrySet()) {
-                    globalXmiIdToObjectMap.put(
-                        xmiIdPrefix + innerMapEntry.getKey(),
-                        innerMapEntry.getValue());
+                    
+                    String id = xmiIdPrefix + innerMapEntry.getKey();
+                    if (!globalXmiIdToObjectMap.containsKey(id)) {
+                        globalXmiIdToObjectMap.put(
+                                id,
+                                innerMapEntry.getValue());
+                    }
                 }
             }
             return globalXmiIdToObjectMap;

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2891687

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to