X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2FSuiteApp.java;h=2298145b220c9cf590f3504e04c1efa5d0e75461;hb=242098dba4f7b96f4b120f8a7aa151b7e4b2ce77;hp=8bbe7d3aceb15e9f51c17d1eff3d93a4c8f4e657;hpb=97286adeb9f00e02c4a245674ff45628f8aaa9de;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java b/org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java index 8bbe7d3..2298145 100644 --- a/org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java +++ b/org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java @@ -1,6 +1,7 @@ package org.argeo.app.ui; import static org.argeo.api.cms.CmsView.CMS_VIEW_UID_PROPERTY; +import static org.argeo.cms.acr.ContentUtils.SLASH; import java.util.Collections; import java.util.HashMap; @@ -18,6 +19,7 @@ import javax.jcr.RepositoryException; import javax.jcr.nodetype.NodeType; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; +import javax.xml.namespace.QName; import org.argeo.api.acr.Content; import org.argeo.api.acr.ContentRepository; @@ -37,6 +39,8 @@ import org.argeo.cms.AbstractCmsApp; import org.argeo.cms.CmsUserManager; import org.argeo.cms.LocaleUtils; import org.argeo.cms.Localized; +import org.argeo.cms.acr.CmsContentRepository; +import org.argeo.cms.acr.ContentUtils; import org.argeo.cms.jcr.CmsJcrUtils; import org.argeo.cms.jcr.acr.JcrContent; import org.argeo.cms.swt.CmsSwtUtils; @@ -45,6 +49,8 @@ import org.argeo.cms.ui.CmsUiProvider; import org.argeo.cms.ux.CmsUxUtils; import org.argeo.eclipse.ui.specific.UiContext; import org.argeo.jcr.JcrException; +import org.argeo.osgi.useradmin.LdapNameUtils; +import org.argeo.osgi.useradmin.UserDirectory; import org.argeo.util.LangUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; @@ -351,7 +357,22 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { } } else { - throw new UnsupportedOperationException("Content " + content.getClass().getName() + " is not supported."); + + List objectClasses = content.getTypes(); + Set types = new TreeSet<>(); + for (QName cc : objectClasses) { + String type = cc.getPrefix() + ":" + cc.getLocalPart(); + if (byType.containsKey(type)) + types.add(type); + } + if (types.size() == 0) + throw new IllegalArgumentException("No type found for " + content + " (" + objectClasses + ")"); + String type = types.iterator().next(); + if (!byType.containsKey(type)) + throw new IllegalArgumentException("No component found for " + content + " with type " + type); + return byType.get(type).get(); + // throw new UnsupportedOperationException("Content " + + // content.getClass().getName() + " is not supported."); } } @@ -558,15 +579,19 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { User user = cmsUserManager.getUser(username); if (user == null) return null; - LdapName userDn; - try { - userDn = new LdapName(user.getName()); - } catch (InvalidNameException e) { - throw new IllegalArgumentException("Badly formatted username", e); - } - String userNodePath = SuiteUtils.getUserNodePath(userDn); + UserDirectory userDirectory = cmsUserManager.getUserDirectory(user); + path = CmsContentRepository.DIRECTORY_BASE + SLASH + userDirectory.getBasePath() + SLASH + + LdapNameUtils.toRevertPath(username, userDirectory.getBasePath()); + node = contentSession.get(path); +// LdapName userDn; +// try { +// userDn = new LdapName(user.getName()); +// } catch (InvalidNameException e) { +// throw new IllegalArgumentException("Badly formatted username", e); +// } +// String userNodePath = SuiteUtils.getUserNodePath(userDn); // FIXME deal with home path - return null; +// return null; // if (Jcr.itemExists(session, userNodePath)) // node = Jcr.getNode(session, userNodePath); // else {