From 00569ee1e7b8b6ab493c48c7eeee3fc6d66227e5 Mon Sep 17 00:00:00 2001 From: Roberto E. Escobar Date: Mon, 29 Oct 2012 17:16:12 -0700 Subject: refinement: Make access control cache loading lazy --- .../framework/access/internal/cm/CmAccessProviderProxy.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'plugins/org.eclipse.osee.framework.access') diff --git a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/cm/CmAccessProviderProxy.java b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/cm/CmAccessProviderProxy.java index 2fadcd22714..242d859160c 100644 --- a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/cm/CmAccessProviderProxy.java +++ b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/cm/CmAccessProviderProxy.java @@ -45,6 +45,8 @@ public final class CmAccessProviderProxy implements IAccessProvider { private BundleContext bundleContext; private Thread thread; + private volatile boolean requiresReload = true; + public void addCmAccessControl(ServiceReference reference) { if (isReady()) { register(bundleContext, reference); @@ -72,7 +74,7 @@ public final class CmAccessProviderProxy implements IAccessProvider { } else { cmServices.add(cmAccessControl); } - reloadCache(); + requiresReload = true; } private void unregister(BundleContext bundleContext, ServiceReference reference) { @@ -82,7 +84,7 @@ public final class CmAccessProviderProxy implements IAccessProvider { } else { cmServices.remove(cmAccessControl); } - reloadCache(); + requiresReload = true; } private boolean isDefault(ServiceReference reference) { @@ -96,6 +98,7 @@ public final class CmAccessProviderProxy implements IAccessProvider { public void start(BundleContext context) { this.bundleContext = context; + requiresReload = true; cmProvider = new CmAccessControlProviderImpl(cmServices); accessProvider = new CmAccessProvider(cmProvider); @@ -144,6 +147,10 @@ public final class CmAccessProviderProxy implements IAccessProvider { private void checkInitialized() throws OseeCoreException { Conditions.checkNotNull(getAccessProvider(), "object access provider", "Object Access Provider not properly initialized"); + if (requiresReload) { + requiresReload = false; + reloadCache(); + } } @Override -- cgit v1.2.3