Author: tfmorris
Date: 2010-04-22 13:34:14-0700
New Revision: 18327

Modified:
   trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java

Log:
Protect profile loading with mutex so it's thread safe

Modified: trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java?view=diff&pathrev=18327&r1=18326&r2=18327
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java       
(original)
+++ trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java       
2010-04-22 13:34:14-0700
@@ -87,6 +87,7 @@
     private File modelFile;
 
     private Collection profilePackages = null;
+    private Object packageLock = new Object();
 
     private UserDefinedFigNodeStrategy figNodeStrategy 
         = new UserDefinedFigNodeStrategy();
@@ -310,17 +311,22 @@
      *        dependencies
      */
     private void loadModel() {
-        if (profilePackages == null) {
-            try {
-                if (modelFile != null) {
-                    profilePackages = new 
FileModelLoader().loadModel(reference);
-                } else {
-                    profilePackages = new 
URLModelLoader().loadModel(reference);                    
+        synchronized (packageLock) {
+            if (profilePackages == null) {
+                try {
+                    if (modelFile != null) {
+                        profilePackages = new FileModelLoader()
+                                .loadModel(reference);
+                    } else {
+                        profilePackages = new URLModelLoader()
+                                .loadModel(reference);
+                    }
+                } catch (ProfileException e1) {
+                    LOG.error("Exception loading profile "
+                            + reference.getPath(), e1);
+                    profilePackages = Collections.emptySet();
+                    return;
                 }
-            } catch (ProfileException e1) {
-                LOG.error("Exception loading profile " + reference.getPath(), 
-                        e1);
-                return;
             }
 
             Collection packagesInProfile = filterPackages(profilePackages);

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

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

Reply via email to