X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FKernelUtils.java;h=86289f0ff648544fffebe643241b123153237db2;hb=b6cad136dfd4589bc2a8f48ec9168732517f451b;hp=b3fb33ac3169911e02eaafe4b6df4fbd1197dfb5;hpb=8a582781fa376ebcf66096dd6fb90232648b4682;p=lgpl%2Fargeo-commons.git 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 b3fb33ac3..86289f0ff 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 @@ -25,10 +25,12 @@ import javax.security.auth.login.LoginException; import org.apache.commons.logging.Log; import org.argeo.cms.CmsException; +import org.argeo.node.DataModelNamespace; import org.argeo.node.NodeConstants; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; +import org.osgi.util.tracker.ServiceTracker; /** Package utilities */ class KernelUtils implements KernelConstants { @@ -89,18 +91,6 @@ class KernelUtils implements KernelConstants { return safeUri(osgiInstanceBaseUri + (relativePath != null ? relativePath : "")); } - // static String getOsgiInstancePath(String relativePath) { - // try { - // if (relativePath == null) - // return getOsgiInstanceDir().getCanonicalPath(); - // else - // return new File(getOsgiInstanceDir(), relativePath).getCanonicalPath(); - // } catch (IOException e) { - // throw new CmsException("Cannot get instance path for " + relativePath, - // e); - // } - // } - static File getOsgiConfigurationFile(String relativePath) { try { return new File(new URI(getBundleContext().getProperty(OSGI_CONFIGURATION_AREA) + relativePath)) @@ -188,13 +178,24 @@ class KernelUtils implements KernelConstants { }); } + static void asyncOpen(ServiceTracker st) { + Runnable run = new Runnable() { + + @Override + public void run() { + st.open(); + } + }; + Activator.getInternalExecutorService().execute(run); +// new Thread(run, "Open service tracker " + st).start(); + } + /** - * @return the {@link BundleContext} of the {@link Bundle} which provided - * this class, never null. - * @throws CmsException - * if the related bundle is not active + * @return the {@link BundleContext} of the {@link Bundle} which provided this + * class, never null. + * @throws CmsException if the related bundle is not active */ - public static BundleContext getBundleContext(Class clzz) { + static BundleContext getBundleContext(Class clzz) { Bundle bundle = FrameworkUtil.getBundle(clzz); BundleContext bc = bundle.getBundleContext(); if (bc == null) @@ -202,10 +203,23 @@ class KernelUtils implements KernelConstants { return bc; } - private static BundleContext getBundleContext() { + static BundleContext getBundleContext() { return getBundleContext(KernelUtils.class); } + static boolean asBoolean(String value) { + if (value == null) + return false; + switch (value) { + case "true": + return true; + case "false": + return false; + default: + throw new CmsException("Unsupported value for attribute " + DataModelNamespace.ABSTRACT + ": " + value); + } + } + private static URI safeUri(String uri) { if (uri == null) throw new CmsException("URI cannot be null");