diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/factory/OrganizationToPublicationsForSubOrganizationsFactory.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/factory/OrganizationToPublicationsForSubOrganizationsFactory.java index 586ce4e0..3220e87c 100755 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/factory/OrganizationToPublicationsForSubOrganizationsFactory.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/factory/OrganizationToPublicationsForSubOrganizationsFactory.java @@ -32,10 +32,11 @@ public class OrganizationToPublicationsForSubOrganizationsFactory implements return candidateModel; } else { - Lock customLock = CustomLock.getInstance().getLock(); + Lock customLock = CustomLock.getLock(); if (customLock.tryLock()) //Acquiring lock if available to construct the model { - customLock.lock(); + try + { ModelConstructor model = new OrganizationToPublicationsForSubOrganizationsModelConstructor(uri, dataset); Model constructedModel = model.getConstructedModel(); @@ -45,8 +46,10 @@ public class OrganizationToPublicationsForSubOrganizationsFactory implements uri, OrganizationToPublicationsForSubOrganizationsModelConstructor.MODEL_TYPE), constructedModel); - customLock.unlock(); return constructedModel; + } finally { + customLock.unlock(); + } } else { diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/CustomLock.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/CustomLock.java index 63439867..8a9c4c98 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/CustomLock.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/CustomLock.java @@ -1,3 +1,4 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ package edu.cornell.mannlib.vitro.webapp.visualization.visutils; import java.util.concurrent.locks.ReentrantLock; @@ -8,19 +9,8 @@ import java.util.concurrent.locks.Lock; construction of the models to resolve concurrency issue*/ public final class CustomLock{ - private static final CustomLock instance = new CustomLock(); - private static Lock lock; - private CustomLock() - { - this.lock = new ReentrantLock(); - - } - - public static CustomLock getInstance() - { - return instance; - } - + private static final Lock lock = new ReentrantLock(); + public static Lock getLock() { return lock;