--- /dev/null
+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);
+}
+++ /dev/null
-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);
-}
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;
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;
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;
@Inject
private Repository repository;
@Inject
- private CmsData nodeInstance;
+ private CmsContext nodeInstance;
// private final UserAdminWrapper userAdminWrapper;
private Session groupsSession;
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();
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();
+ }
}
}
});
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));
}
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;
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
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;
private NodeLogger logger;
private CmsStateImpl nodeState;
private CmsDeploymentImpl nodeDeployment;
- private CmsDataImpl nodeInstance;
+ private CmsContextImpl nodeInstance;
private ServiceTracker<UserAdmin, NodeUserAdmin> userAdminSt;
private ExecutorService internalExecutorService;
// 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) {
--- /dev/null
+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();
+ }
+
+}
+++ /dev/null
-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();
- }
-
-}