X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FCmsDeployment.java;h=7dedfe811db420e682a09730db55407870b5b880;hb=35507e18257f2e9f59842ba5120fcd3f19c4cf4d;hp=10ebb603a10ea4c57a42c92418546940f4cdfe94;hpb=3152a0fe54d407b812cab4c141936227539a33b2;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 10ebb603a..7dedfe811 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 @@ -151,9 +151,17 @@ public class CmsDeployment implements NodeDeployment { private void checkReadiness() { if (nodeAvailable && userAdminAvailable && (httpExpected ? httpAvailable : true)) { + String data = KernelUtils.getFrameworkProp(KernelUtils.OSGI_INSTANCE_AREA); + String state = KernelUtils.getFrameworkProp(KernelUtils.OSGI_CONFIGURATION_AREA); availableSince = System.currentTimeMillis(); long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime(); - log.info("## ARGEO CMS AVAILABLE in " + (jvmUptime / 1000) + "." + (jvmUptime % 1000) + "s ##"); + String jvmUptimeStr = " in " + (jvmUptime / 1000) + "." + (jvmUptime % 1000) + "s"; + log.info("## ARGEO NODE AVAILABLE" + (log.isDebugEnabled() ? jvmUptimeStr : "") + " ##"); + if (log.isDebugEnabled()) { + log.debug("## state: " + state); + if (data != null) + log.debug("## data: " + data); + } long begin = bc.getService(bc.getServiceReference(NodeState.class)).getAvailableSince(); long initDuration = System.currentTimeMillis() - begin; if (log.isTraceEnabled()) @@ -235,11 +243,11 @@ public class CmsDeployment implements NodeDeployment { } List capabilities = wiring.getCapabilities(CMS_DATA_MODEL_NAMESPACE); for (BundleCapability capability : capabilities) { - registerCnd(adminSession, capability, processed); + registerDataModelCapability(adminSession, capability, processed); } } - private void registerCnd(Session adminSession, BundleCapability capability, Set processed) { + private void registerDataModelCapability(Session adminSession, BundleCapability capability, Set processed) { Map attrs = capability.getAttributes(); String name = (String) attrs.get(DataModelNamespace.CAPABILITY_NAME_ATTRIBUTE); if (processed.contains(name)) { @@ -247,15 +255,21 @@ public class CmsDeployment implements NodeDeployment { log.trace("Data model " + name + " has already been processed"); return; } + + // CND String path = (String) attrs.get(DataModelNamespace.CAPABILITY_CND_ATTRIBUTE); - URL url = capability.getRevision().getBundle().getResource(path); - try (Reader reader = new InputStreamReader(url.openStream())) { - CndImporter.registerNodeTypes(reader, adminSession, true); - processed.add(name); - if (log.isDebugEnabled()) - log.debug("Registered CND " + url); - } catch (Exception e) { - throw new CmsException("Cannot import CND " + url, e); + if (path != null) { + URL url = capability.getRevision().getBundle().getResource(path); + if (url == null) + throw new CmsException("No data model '" + name + "' found under path " + path); + try (Reader reader = new InputStreamReader(url.openStream())) { + CndImporter.registerNodeTypes(reader, adminSession, true); + processed.add(name); + if (log.isDebugEnabled()) + log.debug("Registered CND " + url); + } catch (Exception e) { + throw new CmsException("Cannot import CND " + url, e); + } } if (!asBoolean((String) attrs.get(DataModelNamespace.CAPABILITY_ABSTRACT_ATTRIBUTE))) {