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]].
