X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FKernelUtils.java;h=1d81409115b9bcba31ae862117c18c2a728df571;hb=d9ff37f84e799028a1a0300850eccae77ced2024;hp=5d49797911125d0c755655f4bb4919a49745ed04;hpb=9b91329a1c5d7e6b5fc4fae3c21d6019318acc8e;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 5d4979791..1d8140911 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 @@ -5,9 +5,11 @@ import java.io.IOException; import java.io.PrintStream; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; import java.security.PrivilegedAction; +import java.security.URIParameter; import java.util.Dictionary; import java.util.Hashtable; import java.util.Properties; @@ -23,16 +25,29 @@ 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 { final static String OSGI_INSTANCE_AREA = "osgi.instance.area"; final static String OSGI_CONFIGURATION_AREA = "osgi.configuration.area"; + static void setJaasConfiguration(URL jaasConfigurationUrl) { + try { + URIParameter uriParameter = new URIParameter(jaasConfigurationUrl.toURI()); + javax.security.auth.login.Configuration jaasConfiguration = javax.security.auth.login.Configuration + .getInstance("JavaLoginConfig", uriParameter); + javax.security.auth.login.Configuration.setConfiguration(jaasConfiguration); + } catch (Exception e) { + throw new CmsException("Cannot set configuration " + jaasConfigurationUrl, e); + } + } + static Dictionary asDictionary(Properties props) { Hashtable hashtable = new Hashtable(); for (Object key : props.keySet()) { @@ -109,17 +124,17 @@ class KernelUtils implements KernelConstants { } // Security -// static Subject anonymousLogin() { -// Subject subject = new Subject(); -// LoginContext lc; -// try { -// lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, subject); -// lc.login(); -// return subject; -// } catch (LoginException e) { -// throw new CmsException("Cannot login as anonymous", e); -// } -// } + // static Subject anonymousLogin() { + // Subject subject = new Subject(); + // LoginContext lc; + // try { + // lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, subject); + // lc.login(); + // return subject; + // } catch (LoginException e) { + // throw new CmsException("Cannot login as anonymous", e); + // } + // } static void logFrameworkProperties(Log log) { BundleContext bc = getBundleContext(); @@ -175,13 +190,24 @@ class KernelUtils implements KernelConstants { }); } + static void asyncOpen(ServiceTracker st) { + Runnable run = new Runnable() { + + @Override + public void run() { + st.open(); + } + }; + new Thread(run, "Open service tracker " + st).start(); + } + /** - * @return the {@link BundleContext} of the {@link Bundle} which provided - * this class, never null. + * @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) @@ -189,10 +215,24 @@ 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");