Author: dimuthul
Date: Thu Dec  6 21:30:16 2007
New Revision: 10673

Log:

Adding validations and required stars.
Fixing a whole lot of other problems.



Modified:
   
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/ShowUserStoreAction.java
   
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/ShowUserStoreEditAction.java
   
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/UpdateGlobalUserManagementPropertiesAction.java
   
trunk/solutions/identity/modules/admin-ui/src/main/resources/org/wso2/solutions/identity/package.properties
   trunk/solutions/identity/modules/admin-ui/src/main/resources/struts.xml
   
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/usermanagement.jsp
   trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/userstore.jsp
   
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/userstoreedit.jsp
   
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/Initializer.java
   
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/UserStore.java
   
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/UserRegistrationFormSubmitAction.java

Modified: 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/ShowUserStoreAction.java
==============================================================================
--- 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/ShowUserStoreAction.java
        (original)
+++ 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/ShowUserStoreAction.java
        Thu Dec  6 21:30:16 2007
@@ -20,6 +20,7 @@
 
 import org.wso2.solutions.identity.persistence.IPPersistenceManager;
 import org.wso2.solutions.identity.persistence.dataobject.RealmConfigurationDO;
+import org.wso2.usermanager.readwrite.DefaultRealm;
 
 public class ShowUserStoreAction extends ManagedAction {
 
@@ -32,6 +33,8 @@
     private String configName;
 
     private boolean showEditStore = false;
+    
+    private boolean showStoreProperties = false;
 
     public String getRealmClassName() {
         return realmClassName;
@@ -49,8 +52,16 @@
         configProperties = config.getConfigProperties();
         if (configProperties.size() == 0) {
             this.addInfoMessage(getText("no_user_store_config"));
-        } else {
+            this.showEditStore = false;
+            this.showStoreProperties = false;
+        } else if(realmClassName.equals(DefaultRealm.class.getName())){
+            String msg = getText("cannot_edit_default_realm");
+            this.addInfoMessage(msg);
+            this.showEditStore = false;
+            this.showStoreProperties = true;
+        }else {
             this.showEditStore = true;
+            this.showStoreProperties = true;
         }
         this.loadMessages();
         return SUCCESS;
@@ -72,4 +83,12 @@
         return showEditStore;
     }
 
+    public boolean isShowStoreProperties() {
+        return showStoreProperties;
+    }
+
+    public void setShowStoreProperties(boolean showStoreProperties) {
+        this.showStoreProperties = showStoreProperties;
+    }
+
 }

Modified: 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/ShowUserStoreEditAction.java
==============================================================================
--- 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/ShowUserStoreEditAction.java
    (original)
+++ 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/ShowUserStoreEditAction.java
    Thu Dec  6 21:30:16 2007
@@ -16,7 +16,11 @@
 
 package org.wso2.solutions.identity.admin.ui.action;
 
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
@@ -27,18 +31,19 @@
 import org.wso2.solutions.identity.admin.RealmConfigAdmin;
 import org.wso2.solutions.identity.persistence.dataobject.RealmConfigurationDO;
 import 
org.wso2.solutions.identity.persistence.dataobject.RealmConfigurationPropertyDO;
+import org.wso2.usermanager.config.RealmConfigParameterInfo;
 
 import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionSupport;
 
-public class ShowUserStoreEditAction extends ActionSupport {
+public class ShowUserStoreEditAction
+        extends ManagedAction {
 
     private static final long serialVersionUID = 8265273506039256750L;
 
     private Set configProperties = null;
 
     private String configName = null;
-    
+
     public String execute() throws Exception {
 
         if (this.configName == null) {
@@ -46,35 +51,51 @@
         }
         RealmConfigAdmin admin = new RealmConfigAdmin();
         RealmConfigurationDO realm = admin.getRealmConfiguration(configName);
-        configProperties = realm.getConfigProperties();
+        Set properties = realm.getConfigProperties();
+        Iterator ite = properties.iterator();
+        List reqNames = 
this.getRequiredList(realm.getRealm().getConfigClassName());
+        configProperties = new HashSet();
+        while (ite.hasNext()) {
+            RealmConfigurationPropertyDO configProp = 
(RealmConfigurationPropertyDO) ite
+                    .next();
+            ConfigProperty prop = new ConfigProperty();
+            if (reqNames.contains(configProp.getName())) {
+                prop.setIsRequired(true);
+            }
+            prop.setName(configProp.getName());
+            prop.setValue(configProp.getValue());
+            configProperties.add(prop);
+        }
         return INPUT;
     }
-    
-    public String doUpdate(){
+
+    public String doUpdate() {
         try {
             HttpServletRequest request = (HttpServletRequest) ActionContext
-            .getContext().get(StrutsStatics.HTTP_REQUEST);
+                    .getContext().get(StrutsStatics.HTTP_REQUEST);
             HttpSession session = request.getSession();
             String[] values = request.getParameterValues("configName");
             configName = values[0];
             RealmConfigAdmin admin = new RealmConfigAdmin();
-            RealmConfigurationDO realm = 
admin.getRealmConfiguration(configName);
+            RealmConfigurationDO realm = admin
+                    .getRealmConfiguration(configName);
             configProperties = realm.getConfigProperties();
-            
+
             Iterator ite = configProperties.iterator();
-            while(ite.hasNext()){
-                RealmConfigurationPropertyDO rdo = 
(RealmConfigurationPropertyDO)ite.next();
+            while (ite.hasNext()) {
+                RealmConfigurationPropertyDO rdo = 
(RealmConfigurationPropertyDO) ite
+                        .next();
                 String name = rdo.getName();
                 values = request.getParameterValues(name);
                 rdo.setValue(values[0]);
-             }
+            }
             admin.updateRealmConfigurationProperties(configProperties);
         } catch (IdentityProviderException e) {
             return ERROR;
         }
-        return SUCCESS;        
+        return SUCCESS;
     }
-    
+
     public String getConfigName() {
         return configName;
     }
@@ -91,4 +112,56 @@
         this.configProperties = configProperties;
     }
 
+    private List getRequiredList(String configClassName) throws Exception {
+        List requiredProps = new ArrayList();
+        Class configClass = Class.forName(configClassName);
+        Method[] methods = configClass.getDeclaredMethods();
+        for (int i = 0; i < methods.length; i++) {
+            final String name = methods[i].getName();
+            if (name.startsWith("set")) {
+
+                RealmConfigParameterInfo info = (RealmConfigParameterInfo) 
methods[i]
+                        .getAnnotation(RealmConfigParameterInfo.class);
+                if (info != null) {
+                    if (info.isRequired()) {
+                        requiredProps.add(name.substring(3));
+                    }
+                }
+            }
+        }
+        return requiredProps;
+    }
+
+    public class ConfigProperty {
+
+        private String name;
+        private boolean isRequired;
+        private String value;
+
+        public boolean getIsRequired() {
+            return isRequired;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        public void setIsRequired(boolean isRequired) {
+            this.isRequired = isRequired;
+        }
+
+    }
+
 }

Modified: 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/UpdateGlobalUserManagementPropertiesAction.java
==============================================================================
--- 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/UpdateGlobalUserManagementPropertiesAction.java
 (original)
+++ 
trunk/solutions/identity/modules/admin-ui/src/main/java/org/wso2/solutions/identity/admin/ui/action/UpdateGlobalUserManagementPropertiesAction.java
 Thu Dec  6 21:30:16 2007
@@ -18,9 +18,11 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.wso2.solutions.identity.IdentityConstants;
 import org.wso2.solutions.identity.IdentityProviderConstants;
 import org.wso2.solutions.identity.IdentityProviderException;
 import org.wso2.solutions.identity.admin.ParameterAdmin;
+import org.wso2.utils.ServerConfiguration;
 
 public class UpdateGlobalUserManagementPropertiesAction extends ManagedAction {
 
@@ -30,7 +32,7 @@
     
     private boolean enableEmailVerification;
     
-    private int port = 0;
+    private String port = null;
 
     private String host = null;
 
@@ -48,7 +50,7 @@
         try {
             ParameterAdmin admin = new ParameterAdmin();
             if (enableEmailVerification) {
-                if (port == 0 || host == null || fromAddress == null) {
+                if (port.length() == 0 || host.length() == 0 || 
fromAddress.length() == 0) {
                     this.addErrorMessage(getText("required_feild_missing"));
                     loadMessages();
                     return ERROR;
@@ -58,10 +60,17 @@
                 this.fromAddress = fromAddress.trim();
                 this.username = username.trim();
                 this.password = password.trim();
-
+                this.port = port.trim();
+                
+                try {
+                    Integer.parseInt(port);
+                } catch (NumberFormatException e) {
+                    this.addErrorMessage(getText("invalid_data_for", new 
String[]{"port"}));
+                    loadMessages();
+                    return ERROR;
+                }
                 admin.createOrUpdatearameter(
-                        IdentityProviderConstants.PARAM_NAME_EMAIL_PORT,
-                        Integer.toString(port));
+                        IdentityProviderConstants.PARAM_NAME_EMAIL_PORT,port);
                 admin.createOrUpdatearameter(
                         IdentityProviderConstants.PARAM_NAME_EMAIL_HOST, host);
                 admin
@@ -69,6 +78,21 @@
                                 
IdentityProviderConstants.PARAM_NAME_EMAIL_FROM_ADDRESS,
                                 fromAddress);
 
+                ServerConfiguration serverConfig = ServerConfiguration
+                .getInstance();
+
+                String hostName = serverConfig.getFirstProperty("HostName");
+                String hostPort = serverConfig.getFirstProperty("Ports.HTTPS");
+                
+                String verificationAddress = "https://"; + hostName + ":"
+                + hostPort
+                + IdentityConstants.USER_VERIFICATION_PAGE;
+                
+                admin
+                .createOrUpdatearameter(
+                        
IdentityProviderConstants.PARAM_NAME_EMAIL_VERIFICATION_EPR,
+                        verificationAddress);
+                
                 if (username.length() != 0) {
                     admin
                             .createOrUpdatearameter(
@@ -121,17 +145,10 @@
         this.enableEmailVerification = enableEmailVerification;
     }
 
-
-    public int getPort() {
+    public String getPort() {
         return port;
     }
 
-
-    public void setPort(int port) {
-        this.port = port;
-    }
-
-
     public String getHost() {
         return host;
     }
@@ -180,6 +197,11 @@
     public boolean isEnableEmailVerification() {
         return enableEmailVerification;
     }
+
+
+    public void setPort(String port) {
+        this.port = port;
+    }
     
     
 

Modified: 
trunk/solutions/identity/modules/admin-ui/src/main/resources/org/wso2/solutions/identity/package.properties
==============================================================================
--- 
trunk/solutions/identity/modules/admin-ui/src/main/resources/org/wso2/solutions/identity/package.properties
 (original)
+++ 
trunk/solutions/identity/modules/admin-ui/src/main/resources/org/wso2/solutions/identity/package.properties
 Thu Dec  6 21:30:16 2007
@@ -1,3 +1,4 @@
+error_unexpected = Error : {0} !
 username=User name is required.
 password=User password is required.
 invalid_user_password=Invalid username or password.
@@ -33,12 +34,13 @@
 add_realm_config_required_prop_missing = Required property "{0}" missing!
 
 remove_rp_hostname_null = Hostname missing
+invalid_data_for = Invalid Data for {0}
 
 required_feild_missing = Required field missing
-error_unexpected = Error : {0} !
 error_saving_card_issuer_info = Error updating Card Issuer Config {0}
 select_one_token_type = Please select at least one token type
 error_removing_existing_image = Error removing existing image
 successful_for = Successful for {0}
 email_verification = Email verification sent for {0}
-invalid_data_for = Invalid Data for {0}
+
+cannot_edit_default_realm = Cannot edit DefaultRealm!

Modified: 
trunk/solutions/identity/modules/admin-ui/src/main/resources/struts.xml
==============================================================================
--- trunk/solutions/identity/modules/admin-ui/src/main/resources/struts.xml     
(original)
+++ trunk/solutions/identity/modules/admin-ui/src/main/resources/struts.xml     
Thu Dec  6 21:30:16 2007
@@ -191,6 +191,7 @@
         </action>
         <action name="UpdateGlobalUserManagementProperties"  
class="org.wso2.solutions.identity.admin.ui.action.UpdateGlobalUserManagementPropertiesAction">
             <result name="success">jsp/usermanagement.jsp</result>
+            <result name="input">jsp/usermanagement.jsp</result>
             <result name="error">jsp/usermanagement.jsp</result>
         </action>
                <!-- User management : END -->

Modified: 
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/usermanagement.jsp
==============================================================================
--- 
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/usermanagement.jsp
    (original)
+++ 
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/usermanagement.jsp
    Thu Dec  6 21:30:16 2007
@@ -33,13 +33,13 @@
                                <div class="breadcrumb"><a 
class="breadcrumb-link" href="ShowMain.action">Home</a> | User Management</div>
                                <h1 class="headding-userstores">User 
Management</h1>
                                
-                               <s:iterator value="errorMessages">
-                               <div class="info-message"><s:property /></div>
-                               </s:iterator>
-                       
-                       <s:iterator value="infoMessages">
-                        <div class="info-message"><s:property /></div>
-               </s:iterator>
+                                <s:iterator value="errorMessages">
+                     <p><font color="#FF0000"><s:property /></font></p>
+                </s:iterator>
+                
+                <s:iterator value="infoMessages">
+                     <p><font color="#00FF00"><s:property /></font></p>
+                </s:iterator>
                 
                                
                 <s:form action="UpdateGlobalUserManagementProperties" 
method="post" theme="simple">

Modified: 
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/userstore.jsp
==============================================================================
--- trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/userstore.jsp 
(original)
+++ trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/userstore.jsp 
Thu Dec  6 21:30:16 2007
@@ -41,7 +41,7 @@
                      <p><font color="#00FF00"><s:property /></font></p>
                 </s:iterator>
                                
-                               <s:if test="showEditStore">
+                               <s:if test="showStoreProperties">
                                        <table cellpadding="0" cellspacing="0" 
border="0" class="data-table">
                                                <tr>
                                                        <th>Name</th>
@@ -56,9 +56,13 @@
                            <s:url id="showRealmConfigUrl" namespace="/" 
action="ShowUserStoreEdit">
                                        <s:param name="configName" 
value="configName" />
                                        </s:url>
-                               
-                                   <s:a href="%{showRealmConfigUrl}">Edit</s:a>
+                                       
+                                       <s:if test="showEditStore">
+                                               <s:a 
href="%{showRealmConfigUrl}">Edit</s:a>
+                                       </s:if>
+                                  
                                </s:if>
+                               
                        </td>
                </tr>
        </table>

Modified: 
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/userstoreedit.jsp
==============================================================================
--- 
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/userstoreedit.jsp 
    (original)
+++ 
trunk/solutions/identity/modules/admin-ui/src/main/webapp/jsp/userstoreedit.jsp 
    Thu Dec  6 21:30:16 2007
@@ -40,8 +40,14 @@
                                        </tr>
                                        <s:form action="ShowUserStoreEdit" 
method="post" theme="simple">
                                        <s:hidden name="configName" 
value="%{configName}"/>
-                                       <s:iterator value="configProperties" 
status="status">
-                                               <tr><td><s:property 
value="name"/></td>
+                                       <s:iterator value="configProperties" 
status="status" id="entry">
+                                               <tr>
+                                               <td valign="top" 
style="width:150px;">
+                                                               <s:property 
value="name"/>
+                                                               <s:if 
test="#entry.isRequired==true" >
+                                           <span style="color:red">*</span>
+                                       </s:if>
+                                               </td>
                                                <td><s:textfield name="%{name}" 
value="%{value}"/></td></tr>
                                        </s:iterator>
                                        <tr><td></td><td>

Modified: 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/Initializer.java
==============================================================================
--- 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/Initializer.java
       (original)
+++ 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/Initializer.java
       Thu Dec  6 21:30:16 2007
@@ -115,9 +115,9 @@
                 db.create(idp);
 
             }
-            
+
             initializeEmailVerifier();
-            
+
         } catch (Exception e) {
             throw new AxisFault(e.getMessage(), e);
         }
@@ -250,12 +250,6 @@
 
         prop = new RealmConfigurationPropertyDO();
         prop.setConfig(realmConfig);
-        prop.setName("UserNameColumn");
-        prop.setValue(IdentityProviderConstants.Sample.USER_NAME_COLUMN);
-        db.create(prop);
-
-        prop = new RealmConfigurationPropertyDO();
-        prop.setConfig(realmConfig);
         prop.setName("UserCredentialColumn");
         prop.setValue(IdentityProviderConstants.Sample.PASSWORD_COLUMN);
         db.create(prop);
@@ -347,22 +341,22 @@
 
     }
 
-    private void initializeEmailVerifier() throws Exception{
+    private void initializeEmailVerifier() throws Exception {
         ParameterAdmin admin = new ParameterAdmin();
         boolean enableEmailVerification = admin
                 
.getParameter(IdentityProviderConstants.PARAM_NAME_ENABLE_EMAIL_VERIFICATION) 
!= null;
 
-        if(!enableEmailVerification){
+        if (!enableEmailVerification) {
             return;
         }
         String value = admin
                 
.getParameterValue(IdentityProviderConstants.PARAM_NAME_EMAIL_PORT);
         int port = 0;
-        
+
         if (value != null) {
             port = Integer.parseInt(value);
         }
-        
+
         String host = admin
                 
.getParameterValue(IdentityProviderConstants.PARAM_NAME_EMAIL_HOST);
         String fromAddress = admin
@@ -371,10 +365,10 @@
                 
.getParameterValue(IdentityProviderConstants.PARAM_NAME_EMAIL_USERNAME);
         String password = admin
                 
.getParameterValue(IdentityProviderConstants.PARAM_NAME_EMAIL_PASSWORD);
-        
+
         UserStore store = UserStore.getInstance();
         Realm realm = store.getRealm();
-        
+
         EmailVerifierConfig config = new EmailVerifierConfig();
         config.setFromAddress(fromAddress);
         config.setHost(host);
@@ -382,20 +376,13 @@
             config.setPassword(password);
             config.setUsername(username);
         }
-        ServerConfiguration serverConfig = ServerConfiguration
-        .getInstance();
 
-        String hostName = serverConfig.getFirstProperty("HostName");
-        String hostPort = serverConfig.getFirstProperty("Ports.HTTPS");
-        
-        String verificationAddress = "https://"; + hostName + ":"
-        + hostPort
-        + IdentityConstants.USER_VERIFICATION_PAGE;
-        
+        String verificationAddress = admin
+                
.getParameterValue(IdentityProviderConstants.PARAM_NAME_EMAIL_VERIFICATION_EPR);
+
         config.setRegistrationServiceEPR(verificationAddress);
         config.setPort(port);
-        if (realm.getClass().getName().equals(
-                DefaultRealm.class.getName())) {
+        if (realm.getClass().getName().equals(DefaultRealm.class.getName())) {
             EmailVerifier.init(realm, config);
         } else {
             throw new IdentityProviderException("emailNotActivated");

Modified: 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/UserStore.java
==============================================================================
--- 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/UserStore.java
 (original)
+++ 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/UserStore.java
 Thu Dec  6 21:30:16 2007
@@ -154,6 +154,7 @@
                         .next();
                 // Get the property name
                 String propName = prop.getName();
+                
                 // Get the setter
                 Method setter = (Method) settersList.get(propName);
                 if (setter != null) {

Modified: 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/UserRegistrationFormSubmitAction.java
==============================================================================
--- 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/UserRegistrationFormSubmitAction.java
     (original)
+++ 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/UserRegistrationFormSubmitAction.java
     Thu Dec  6 21:30:16 2007
@@ -16,6 +16,8 @@
 
 package org.wso2.solutions.identity.user.ui.action;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.struts2.StrutsStatics;
 import org.wso2.solutions.identity.IdentityConstants;
 import org.wso2.solutions.identity.IdentityProviderConstants;
@@ -26,6 +28,7 @@
 import org.wso2.solutions.identity.persistence.dataobject.ActionDO;
 import org.wso2.solutions.identity.persistence.dataobject.ClaimDO;
 import org.wso2.usermanager.UserManagerException;
+import org.wso2.usermanager.UserStoreAdmin;
 import org.wso2.usermanager.verification.email.EmailVerifier;
 
 import javax.servlet.http.HttpServletRequest;
@@ -45,6 +48,8 @@
     private String username;
     private String password;
 
+    private static Log log = 
LogFactory.getLog(UserRegistrationFormSubmitAction.class);
+    
     public String execute() throws Exception {
         UserStore store = UserStore.getInstance();
 
@@ -70,23 +75,37 @@
         boolean emailVerification = paramAdmin
                 
.getParameter(IdentityProviderConstants.PARAM_NAME_ENABLE_EMAIL_VERIFICATION) 
!= null;
         if (emailVerification && emailAddress != null) {
-            EmailVerifier verifier = new EmailVerifier();
-            verifier.requestUserVerification(username, emailAddress, password, 
props);
-            String msg = getText("email_verification", new String[] 
{username});
-            ReportAdmin.record(username, ActionDO.ACTION_USER_REGISTER, msg);
-            this.addInfoMessage(getText("please_check_mail",
-                    new String[] { emailAddress }));
+            try {
+                EmailVerifier verifier = new EmailVerifier();
+                verifier.requestUserVerification(username, emailAddress, 
password, props);
+                String msg = getText("email_verification", new String[] 
{username});
+                ReportAdmin.record(username, ActionDO.ACTION_USER_REGISTER, 
msg);
+                this.addInfoMessage(getText("please_check_mail",
+                        new String[] { emailAddress }));
+            } catch (UserManagerException e) {
+                String msg = getText("error_unexpected",
+                        new String[] { e.getMessage() });
+                this.addErrorMessage(msg);
+                log.error(msg, e);
+                return ERROR;
+            }
         } else {
             try {
-                store.getRealm().getUserStoreAdmin().addUser(this.username,
-                        this.password);
+                UserStoreAdmin umAdmin = store.getRealm().getUserStoreAdmin();
+                if(umAdmin.isExistingUser(username)){
+                   this.addErrorMessage(getText("sign_in_user_exist", 
+                           new String[]{username}));
+                   loadMessages();
+                   return ERROR;
+                }else{
+                    umAdmin.addUser(this.username, this.password);
+                }
                 
             } catch (UserManagerException e) {
-                // Right now we cannot check whether a given user exists
-                // therefore at this point we have to set the error msg
-                // based on the exception
-                this.addErrorMessage(getText("sign_in_user_exist",
-                        new String[] { this.username }));
+                String msg = getText("error_unexpected",
+                        new String[] { e.getMessage() });
+                this.addErrorMessage(msg);
+                log.error(msg, e);
                 return ERROR;
             }
             store.getRealm().getUserStoreAdmin().setUserProperties(

_______________________________________________
Identity-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/identity-dev

Reply via email to