]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java
Improve IPA integration
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / KernelUtils.java
index 9b220f20af418355142fd8284fd1cc73fb904b11..e3bbdb79629d1cd8ed8a9d7837dce0b859a6fc3c 100644 (file)
@@ -2,13 +2,17 @@ package org.argeo.cms.internal.kernel;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.PrintStream;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.security.PrivilegedAction;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Properties;
+import java.util.TreeMap;
 import java.util.TreeSet;
 
 import javax.jcr.Repository;
@@ -21,15 +25,15 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.logging.Log;
 import org.argeo.cms.CmsException;
-import org.argeo.cms.auth.AuthConstants;
+import org.argeo.node.NodeConstants;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 
 /** Package utilities */
 class KernelUtils implements KernelConstants {
-       private final static String OSGI_INSTANCE_AREA = "osgi.instance.area";
-       private final static String OSGI_CONFIGURATION_AREA = "osgi.configuration.area";
+       final static String OSGI_INSTANCE_AREA = "osgi.instance.area";
+       final static String OSGI_CONFIGURATION_AREA = "osgi.configuration.area";
 
        static Dictionary<String, ?> asDictionary(Properties props) {
                Hashtable<String, Object> hashtable = new Hashtable<String, Object>();
@@ -65,25 +69,26 @@ class KernelUtils implements KernelConstants {
                                .getAbsoluteFile();
        }
 
+       static Path getOsgiInstancePath(String relativePath) {
+               return Paths.get(getOsgiInstanceUri(relativePath));
+       }
+
        static URI getOsgiInstanceUri(String relativePath) {
                String osgiInstanceBaseUri = getFrameworkProp(OSGI_INSTANCE_AREA);
-               try {
-                       return new URI(osgiInstanceBaseUri + (relativePath != null ? relativePath : ""));
-               } catch (URISyntaxException e) {
-                       throw new CmsException("Cannot get OSGi instance URI for " + relativePath, e);
-               }
+               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 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 {
@@ -110,7 +115,7 @@ class KernelUtils implements KernelConstants {
                Subject subject = new Subject();
                LoginContext lc;
                try {
-                       lc = new LoginContext(AuthConstants.LOGIN_CONTEXT_ANONYMOUS, subject);
+                       lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, subject);
                        lc.login();
                        return subject;
                } catch (LoginException e) {
@@ -118,26 +123,6 @@ class KernelUtils implements KernelConstants {
                }
        }
 
-       // @Deprecated
-       // static void anonymousLogin(AuthenticationManager authenticationManager) {
-       // try {
-       // List<GrantedAuthorityPrincipal> anonAuthorities = Collections
-       // .singletonList(new GrantedAuthorityPrincipal(
-       // KernelHeader.ROLE_ANONYMOUS));
-       // UserDetails anonUser = new User(KernelHeader.USERNAME_ANONYMOUS,
-       // "", true, true, true, true, anonAuthorities);
-       // AnonymousAuthenticationToken anonToken = new
-       // AnonymousAuthenticationToken(
-       // DEFAULT_SECURITY_KEY, anonUser, anonAuthorities);
-       // Authentication authentication = authenticationManager
-       // .authenticate(anonToken);
-       // SecurityContextHolder.getContext()
-       // .setAuthentication(authentication);
-       // } catch (Exception e) {
-       // throw new CmsException("Cannot authenticate", e);
-       // }
-       // }
-
        // HTTP
        static void logRequestHeaders(Log log, HttpServletRequest request) {
                if (!log.isDebugEnabled())
@@ -165,6 +150,14 @@ class KernelUtils implements KernelConstants {
                // for (String key : keys)
                // log.debug(key + "=" + bc.getProperty(key));
        }
+       
+       static void printSystemProperties(PrintStream out){
+               TreeMap<String, String> display = new TreeMap<>();
+               for (Object key : System.getProperties().keySet())
+                       display.put(key.toString(), System.getProperty(key.toString()));
+               for (String key : display.keySet())
+                       out.println(key + "=" + display.get(key));
+       }
 
        static Session openAdminSession(Repository repository) {
                return openAdminSession(repository, null);
@@ -175,7 +168,7 @@ class KernelUtils implements KernelConstants {
                Thread.currentThread().setContextClassLoader(KernelUtils.class.getClassLoader());
                LoginContext loginContext;
                try {
-                       loginContext = new LoginContext(AuthConstants.LOGIN_CONTEXT_DATA_ADMIN);
+                       loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_DATA_ADMIN);
                        loginContext.login();
                } catch (LoginException e1) {
                        throw new CmsException("Could not login as data admin", e1);
@@ -214,6 +207,17 @@ class KernelUtils implements KernelConstants {
                return getBundleContext(KernelUtils.class);
        }
 
+       private static URI safeUri(String uri) {
+               if (uri == null)
+                       throw new CmsException("URI cannot be null");
+               try {
+                       return new URI(uri);
+               } catch (URISyntaxException e) {
+                       throw new CmsException("Dadly formatted URI " + uri, e);
+               }
+       }
+
+
        private KernelUtils() {
 
        }