X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FKernelUtils.java;h=909b1faff1722dc284e7a34d682ef2e4e6834f86;hb=0243aa5633af84d8608ba912483dbaaaefac42f1;hp=9c480647dd76830f0764941525bac68de3df7fad;hpb=77a5498dd5d10d2442127022efd6501a7dbddbae;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 9c480647d..909b1faff 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 @@ -26,7 +26,6 @@ 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; @@ -117,7 +116,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_ANONYMOUS, subject); lc.login(); return subject; } catch (LoginException e) { @@ -162,7 +161,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); @@ -241,14 +240,22 @@ class KernelUtils implements KernelConstants { // if (log.isTraceEnabled()) // log.trace(userId + " : " + node.getPath()); StringBuilder buf = new StringBuilder(); - boolean isAnonymous = userId.equalsIgnoreCase(AuthConstants.ROLE_ANONYMOUS); + boolean isAnonymous = userId.equalsIgnoreCase(NodeConstants.ROLE_ANONYMOUS); if (isAnonymous) buf.append(WEBDAV_PUBLIC); else buf.append(WEBDAV_PRIVATE); - // TODO convey repo alias vie repository properties - return buf.append('/').append(NodeConstants.ALIAS_NODE).append('/').append(node.getSession().getWorkspace().getName()) - .append(node.getPath()).toString(); + Session session = node.getSession(); + Repository repository = session.getRepository(); + String cn; + if (repository.isSingleValueDescriptor(NodeConstants.CN)) { + cn = repository.getDescriptor(NodeConstants.CN); + } else { +// log.warn("No cn defined in repository, using " + NodeConstants.NODE); + cn = NodeConstants.NODE; + } + return buf.append('/').append(cn).append('/').append(session.getWorkspace().getName()).append(node.getPath()) + .toString(); } public static String getCanonicalUrl(Node node, HttpServletRequest request) throws RepositoryException {