X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FCmsDeployment.java;h=30d283c580583ed090df96b2694ad093bd414b89;hb=8adb5a5d78531081ae721008b673ad61d93ac913;hp=3d8a389efd13bbe1b3c56765bc3e0aa192bc0db2;hpb=e3912140cfce70b1275f435a7be22ef0fef3c165;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java index 3d8a389ef..30d283c58 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java @@ -197,7 +197,13 @@ public class CmsDeployment implements NodeDeployment { } } - private void checkReadiness() { + /** + * Checks whether the deployment is available according to expectations, and + * mark it as available. + */ + private synchronized void checkReadiness() { + if (isAvailable()) + return; if (nodeAvailable && userAdminAvailable && (httpExpected ? httpAvailable : true)) { String data = KernelUtils.getFrameworkProp(KernelUtils.OSGI_INSTANCE_AREA); String state = KernelUtils.getFrameworkProp(KernelUtils.OSGI_CONFIGURATION_AREA); @@ -364,15 +370,19 @@ public class CmsDeployment implements NodeDeployment { properties.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE); LocalRepository localRepository = new LocalRepository(repository, dataModelName); bc.registerService(Repository.class, localRepository, properties); - if (log.isDebugEnabled()) - log.debug("Published data model " + dataModelName); + if (log.isTraceEnabled()) + log.trace("Published data model " + dataModelName); } @Override - public Long getAvailableSince() { + public synchronized Long getAvailableSince() { return availableSince; } + public synchronized boolean isAvailable() { + return availableSince != null; + } + private class RepositoryContextStc extends ServiceTracker { public RepositoryContextStc() {