Rename into CMS Context
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 7 Jan 2022 09:57:17 +0000 (10:57 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 7 Jan 2022 09:57:17 +0000 (10:57 +0100)
org.argeo.api/src/org/argeo/api/cms/CmsContext.java [new file with mode: 0644]
org.argeo.api/src/org/argeo/api/cms/CmsData.java [deleted file]
org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java
org.argeo.cms.e4/src/org/argeo/cms/e4/users/providers/RoleIconLP.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsContextImpl.java [new file with mode: 0644]
org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDataImpl.java [deleted file]

diff --git a/org.argeo.api/src/org/argeo/api/cms/CmsContext.java b/org.argeo.api/src/org/argeo/api/cms/CmsContext.java
new file mode 100644 (file)
index 0000000..a9616c8
--- /dev/null
@@ -0,0 +1,16 @@
+package org.argeo.api.cms;
+
+/**
+ * A logical view on this CMS instance, independently of a particular launch or
+ * deployment.
+ */
+public interface CmsContext {
+       /**
+        * To be used as an identifier of a workgroup, typically as a value for the
+        * 'businessCategory' attribute in LDAP.
+        */
+       public final static String WORKGROUP = "workgroup";
+
+       /** Mark this group as a workgroup */
+       void createWorkgroup(String groupDn);
+}
diff --git a/org.argeo.api/src/org/argeo/api/cms/CmsData.java b/org.argeo.api/src/org/argeo/api/cms/CmsData.java
deleted file mode 100644 (file)
index a12a3ce..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.argeo.api.cms;
-
-import javax.naming.ldap.LdapName;
-
-/** The structured data */
-public interface CmsData {
-       /**
-        * To be used as an identifier of a workgroup, typically as a value for the
-        * 'businessCategory' attribute in LDAP.
-        */
-       public final static String WORKGROUP = "workgroup";
-
-       /** Mark this group as a workgroup */
-       void createWorkgroup(LdapName groupDn);
-}
index 239bb3156e9b537e52cd1b058454598a40c99ac6..a011c5f62c19c45fcdeca8ce4644ed732fe539f6 100644 (file)
@@ -1,6 +1,6 @@
 package org.argeo.cms.e4.users;
 
-import static org.argeo.api.cms.CmsData.WORKGROUP;
+import static org.argeo.api.cms.CmsContext.WORKGROUP;
 import static org.argeo.cms.auth.UserAdminUtils.setProperty;
 import static org.argeo.util.naming.LdapAttrs.businessCategory;
 import static org.argeo.util.naming.LdapAttrs.description;
@@ -15,12 +15,9 @@ import javax.jcr.Node;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
-import javax.naming.InvalidNameException;
-import javax.naming.ldap.LdapName;
 
-import org.argeo.api.cms.CmsData;
 import org.argeo.api.cms.CmsConstants;
-import org.argeo.cms.CmsException;
+import org.argeo.api.cms.CmsContext;
 import org.argeo.cms.auth.UserAdminUtils;
 import org.argeo.cms.e4.users.providers.CommonNameLP;
 import org.argeo.cms.e4.users.providers.MailLP;
@@ -33,6 +30,7 @@ import org.argeo.cms.ui.eclipse.forms.IManagedForm;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
+import org.argeo.jcr.JcrException;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.osgi.transaction.WorkTransaction;
 import org.argeo.util.naming.LdapAttrs;
@@ -87,7 +85,7 @@ public class GroupEditor extends AbstractRoleEditor {
        @Inject
        private Repository repository;
        @Inject
-       private CmsData nodeInstance;
+       private CmsContext nodeInstance;
        // private final UserAdminWrapper userAdminWrapper;
        private Session groupsSession;
 
@@ -121,7 +119,7 @@ public class GroupEditor extends AbstractRoleEditor {
                try {
                        groupsSession = repository.login(CmsConstants.SRV_WORKSPACE);
                } catch (RepositoryException e) {
-                       throw new CmsException("Cannot retrieve session", e);
+                       throw new JcrException("Cannot retrieve session", e);
                }
                // ScrolledForm form = mf.getForm();
                // Composite body = form.getBody();
@@ -219,20 +217,15 @@ public class GroupEditor extends AbstractRoleEditor {
                                        Node workgroupHome = CmsJcrUtils.getGroupHome(groupsSession, cn);
                                        if (workgroupHome != null)
                                                return; // already marked as workgroup, do nothing
-                                       else
-                                               try {
-                                                       // improve transaction management
-                                                       userAdminWrapper.beginTransactionIfNeeded();
-                                                       nodeInstance.createWorkgroup(new LdapName(group.getName()));
-                                                       setProperty(group, businessCategory, WORKGROUP);
-                                                       userAdminWrapper.commitOrNotifyTransactionStateChange();
-                                                       userAdminWrapper
-                                                                       .notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, group));
-                                                       part.refresh();
-                                               } catch (InvalidNameException e1) {
-                                                       throw new CmsException("Cannot create Workgroup for " + group.toString(), e1);
-                                               }
-
+                                       else {
+                                               // improve transaction management
+                                               userAdminWrapper.beginTransactionIfNeeded();
+                                               nodeInstance.createWorkgroup(group.getName());
+                                               setProperty(group, businessCategory, WORKGROUP);
+                                               userAdminWrapper.commitOrNotifyTransactionStateChange();
+                                               userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, group));
+                                               part.refresh();
+                                       }
                                }
                        }
                });
@@ -521,7 +514,8 @@ public class GroupEditor extends AbstractRoleEditor {
                                        try {
                                                transaction.commit();
                                        } catch (Exception e) {
-                                               throw new CmsException("Cannot commit transaction " + "after user group membership update", e);
+                                               throw new IllegalStateException(
+                                                               "Cannot commit transaction " + "after user group membership update", e);
                                        }
                                userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, myGroup));
                        }
index 49a2026c974b9fe4086a40e481e9c9cdd5475dd0..8c94093e406e02fe1a1825e30620a03a5fe2b548 100644 (file)
@@ -1,6 +1,6 @@
 package org.argeo.cms.e4.users.providers;
 
-import org.argeo.api.cms.CmsData;
+import org.argeo.api.cms.CmsContext;
 import org.argeo.api.cms.CmsConstants;
 import org.argeo.cms.auth.UserAdminUtils;
 import org.argeo.cms.e4.users.SecurityAdminImages;
@@ -26,7 +26,7 @@ public class RoleIconLP extends UserAdminAbstractLP {
                        return SecurityAdminImages.ICON_ROLE;
                else if (user.getType() == Role.GROUP) {
                        String businessCategory = UserAdminUtils.getProperty(user, LdapAttrs.businessCategory);
-                       if (businessCategory != null && businessCategory.equals(CmsData.WORKGROUP))
+                       if (businessCategory != null && businessCategory.equals(CmsContext.WORKGROUP))
                                return SecurityAdminImages.ICON_WORKGROUP;
                        return SecurityAdminImages.ICON_GROUP;
                } else
index 535c328534c9a8a17f4c1e8f74c6ea1d60c59a47..f50594210bf37521151b52f1ead3b1f6ca65c6a0 100644 (file)
@@ -14,7 +14,7 @@ import javax.security.auth.login.Configuration;
 import org.argeo.api.cms.CmsState;
 import org.argeo.api.cms.CmsLog;
 import org.argeo.api.cms.CmsConstants;
-import org.argeo.api.cms.CmsData;
+import org.argeo.api.cms.CmsContext;
 import org.argeo.api.cms.CmsDeployment;
 import org.argeo.cms.ArgeoLogger;
 import org.argeo.cms.auth.ident.IdentClient;
@@ -53,7 +53,7 @@ public class Activator implements BundleActivator {
        private NodeLogger logger;
        private CmsStateImpl nodeState;
        private CmsDeploymentImpl nodeDeployment;
-       private CmsDataImpl nodeInstance;
+       private CmsContextImpl nodeInstance;
 
        private ServiceTracker<UserAdmin, NodeUserAdmin> userAdminSt;
        private ExecutorService internalExecutorService;
@@ -169,8 +169,8 @@ public class Activator implements BundleActivator {
 //             registerService(NodeDeployment.class, nodeDeployment, null);
 
                // Node instance
-               nodeInstance = new CmsDataImpl();
-               registerService(CmsData.class, nodeInstance, null);
+               nodeInstance = new CmsContextImpl();
+               registerService(CmsContext.class, nodeInstance, null);
        }
 
        public static <T> void registerService(Class<T> clss, T service, Dictionary<String, ?> properties) {
diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsContextImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsContextImpl.java
new file mode 100644 (file)
index 0000000..822959b
--- /dev/null
@@ -0,0 +1,54 @@
+package org.argeo.cms.internal.kernel;
+
+import org.argeo.api.cms.CmsContext;
+import org.argeo.api.cms.CmsLog;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+
+public class CmsContextImpl implements CmsContext {
+       private final CmsLog log = CmsLog.getLog(getClass());
+       private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
+
+//     private EgoRepository egoRepository;
+
+       public CmsContextImpl() {
+               initTrackers();
+       }
+
+       private void initTrackers() {
+               // node repository
+//             new ServiceTracker<Repository, Repository>(bc, Repository.class, null) {
+//                     @Override
+//                     public Repository addingService(ServiceReference<Repository> reference) {
+//                             Object cn = reference.getProperty(NodeConstants.CN);
+//                             if (cn != null && cn.equals(NodeConstants.EGO_REPOSITORY)) {
+////                                   egoRepository = (EgoRepository) bc.getService(reference);
+//                                     if (log.isTraceEnabled())
+//                                             log.trace("Home repository is available");
+//                             }
+//                             return super.addingService(reference);
+//                     }
+//
+//                     @Override
+//                     public void removedService(ServiceReference<Repository> reference, Repository service) {
+//                             super.removedService(reference, service);
+////                           egoRepository = null;
+//                     }
+//
+//             }.open();
+       }
+
+       public void shutdown() {
+
+       }
+
+       @Override
+       public void createWorkgroup(String dn) {
+//             if (egoRepository == null)
+//                     throw new CmsException("Ego repository is not available");
+//             // TODO add check that the group exists
+//             egoRepository.createWorkgroup(dn);
+               throw new UnsupportedOperationException();
+       }
+
+}
diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDataImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDataImpl.java
deleted file mode 100644 (file)
index 3b197e2..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.argeo.cms.internal.kernel;
-
-import javax.naming.ldap.LdapName;
-
-import org.argeo.api.cms.CmsData;
-import org.argeo.api.cms.CmsLog;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-
-public class CmsDataImpl implements CmsData {
-       private final CmsLog log = CmsLog.getLog(getClass());
-       private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
-
-//     private EgoRepository egoRepository;
-
-       public CmsDataImpl() {
-               initTrackers();
-       }
-
-       private void initTrackers() {
-               // node repository
-//             new ServiceTracker<Repository, Repository>(bc, Repository.class, null) {
-//                     @Override
-//                     public Repository addingService(ServiceReference<Repository> reference) {
-//                             Object cn = reference.getProperty(NodeConstants.CN);
-//                             if (cn != null && cn.equals(NodeConstants.EGO_REPOSITORY)) {
-////                                   egoRepository = (EgoRepository) bc.getService(reference);
-//                                     if (log.isTraceEnabled())
-//                                             log.trace("Home repository is available");
-//                             }
-//                             return super.addingService(reference);
-//                     }
-//
-//                     @Override
-//                     public void removedService(ServiceReference<Repository> reference, Repository service) {
-//                             super.removedService(reference, service);
-////                           egoRepository = null;
-//                     }
-//
-//             }.open();
-       }
-
-       public void shutdown() {
-
-       }
-
-       @Override
-       public void createWorkgroup(LdapName dn) {
-//             if (egoRepository == null)
-//                     throw new CmsException("Ego repository is not available");
-//             // TODO add check that the group exists
-//             egoRepository.createWorkgroup(dn);
-               throw new UnsupportedOperationException();
-       }
-
-}