Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / commands / NewGroup.java
index 37bae611ffa7c11cb753bd77e65b4df85bf28046..75b9b0b33e4e52e06d675014c644d096a42c0d2e 100644 (file)
@@ -18,7 +18,7 @@ package org.argeo.security.ui.admin.internal.commands;
 import java.util.Dictionary;
 import java.util.Map;
 
-import org.argeo.ArgeoException;
+import org.argeo.cms.CmsException;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
 import org.argeo.jcr.ArgeoNames;
@@ -64,10 +64,10 @@ public class NewGroup extends AbstractHandler {
 
        private class NewGroupWizard extends Wizard {
 
-               // pages
+               // Pages
                private MainGroupInfoWizardPage mainGroupInfo;
 
-               // End user fields
+               // UI fields
                private Text dNameTxt, commonNameTxt, descriptionTxt;
                private Combo baseDnCmb;
 
@@ -88,12 +88,14 @@ public class NewGroup extends AbstractHandler {
                        String commonName = commonNameTxt.getText();
                        try {
                                userAdminWrapper.beginTransactionIfNeeded();
+                               String dn = getDn(commonName);
                                Group group = (Group) userAdminWrapper.getUserAdmin()
-                                               .createRole(getDn(commonName), Role.GROUP);
+                                               .createRole(dn, Role.GROUP);
                                Dictionary props = group.getProperties();
                                String descStr = descriptionTxt.getText();
                                if (EclipseUiUtils.notEmpty(descStr))
                                        props.put(LdifName.description.name(), descStr);
+                               userAdminWrapper.commitOrNotifyTransactionStateChange();
                                userAdminWrapper.notifyListeners(new UserAdminEvent(null,
                                                UserAdminEvent.ROLE_CREATED, group));
                                return true;
@@ -133,7 +135,6 @@ public class NewGroup extends AbstractHandler {
                                                "Common name");
                                commonNameTxt.addFocusListener(this);
 
-                               
                                Label descLbl = new Label(bodyCmp, SWT.LEAD);
                                descLbl.setText("Description");
                                descLbl.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false,
@@ -171,7 +172,7 @@ public class NewGroup extends AbstractHandler {
                        public void focusGained(FocusEvent event) {
                        }
 
-                       /** @return error message or null if complete */
+                       /** @return the error message or null if complete */
                        protected String checkComplete() {
                                String name = commonNameTxt.getText();
 
@@ -215,7 +216,7 @@ public class NewGroup extends AbstractHandler {
                private void initialiseDnCmb(Combo combo) {
                        Map<String, String> dns = userAdminWrapper.getKnownBaseDns(true);
                        if (dns.isEmpty())
-                               throw new ArgeoException(
+                               throw new CmsException(
                                                "No writable base dn found. Cannot create group");
                        combo.setItems(dns.keySet().toArray(new String[0]));
                        if (dns.size() == 1)