From: Mathieu Baudier Date: Thu, 15 Oct 2015 13:42:31 +0000 (+0000) Subject: Node init can manage relative directories (relative to execution directory) X-Git-Tag: argeo-commons-2.1.30~87 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=ff5b1923caaa5882690e842d6ce96a27ea0f30e8;p=lgpl%2Fargeo-commons.git Node init can manage relative directories (relative to execution directory) git-svn-id: https://svn.argeo.org/commons/trunk@8490 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java index 871163fc0..100230400 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java @@ -173,8 +173,14 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener { private void firstInit() { log.info("## FIRST INIT ##"); - File initDir = new File(getFrameworkProp(NODE_INIT, - KernelUtils.getOsgiInstancePath("../../../init"))); + String nodeInit = getFrameworkProp(NODE_INIT); + if (nodeInit == null) + nodeInit = "../../init"; + File initDir; + if (nodeInit.startsWith(".")) + initDir = KernelUtils.getExecutionDir(nodeInit); + else + initDir = new File(nodeInit); // TODO also uncompress archives if (initDir.exists()) try { diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java index 28eb52695..1d15e2a3a 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java @@ -43,6 +43,17 @@ class KernelUtils implements KernelConstants { return asDictionary(props); } + static File getExecutionDir(String relativePath) { + File executionDir = new File(getFrameworkProp("user.dir")); + if (relativePath == null) + return executionDir; + try { + return new File(executionDir, relativePath).getCanonicalFile(); + } catch (IOException e) { + throw new CmsException("Cannot get canonical file", e); + } + } + static File getOsgiInstanceDir() { return new File(Activator.getBundleContext() .getProperty(OSGI_INSTANCE_AREA).substring("file:".length()))