From: Mathieu Baudier Date: Fri, 7 Jan 2022 09:57:17 +0000 (+0100) Subject: Rename into CMS Context X-Git-Tag: argeo-commons-2.3.5~94 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=35dded721530f8bbc368380a7bcce9dec37f56bb Rename into CMS Context --- 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 index 000000000..a9616c8ae --- /dev/null +++ b/org.argeo.api/src/org/argeo/api/cms/CmsContext.java @@ -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 index a12a3ce7f..000000000 --- a/org.argeo.api/src/org/argeo/api/cms/CmsData.java +++ /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); -} diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java index 239bb3156..a011c5f62 100644 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java @@ -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)); } diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/providers/RoleIconLP.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/providers/RoleIconLP.java index 49a2026c9..8c94093e4 100644 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/providers/RoleIconLP.java +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/providers/RoleIconLP.java @@ -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 diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java index 535c32853..f50594210 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java @@ -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 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 void registerService(Class clss, T service, Dictionary 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 index 000000000..822959b63 --- /dev/null +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsContextImpl.java @@ -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(bc, Repository.class, null) { +// @Override +// public Repository addingService(ServiceReference 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 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 index 3b197e24c..000000000 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDataImpl.java +++ /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(bc, Repository.class, null) { -// @Override -// public Repository addingService(ServiceReference 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 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(); - } - -}