You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:48:07 UTC

[sling-org-apache-sling-jcr-jackrabbit-usermanager] 07/28: Formatting ...

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.jcr.jackrabbit.usermanager-2.0.4
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-jackrabbit-usermanager.git

commit a034d92f8b4fed4d4acdd969846cc50fa1fda6bb
Author: Felix Meschberger <fm...@apache.org>
AuthorDate: Tue Jun 9 10:16:54 2009 +0000

    Formatting ...
    
    git-svn-id: https://svn.apache.org/repos/asf/incubator/sling/trunk/bundles/jcr/jackrabbit-usermanager@782945 13f79535-47bb-0310-9956-ffa450edef68
---
 .../post/AbstractAuthorizablePostServlet.java      | 352 +++++++++++----------
 .../usermanager/post/AbstractGroupPostServlet.java | 108 ++++---
 .../usermanager/post/AbstractUserPostServlet.java  |  25 +-
 .../post/ChangeUserPasswordServlet.java            | 132 ++++----
 .../usermanager/post/CreateGroupServlet.java       | 110 ++++---
 .../usermanager/post/CreateUserServlet.java        | 169 +++++-----
 .../post/DeleteAuthorizableServlet.java            |  55 ++--
 .../usermanager/post/UpdateGroupServlet.java       |  90 +++---
 .../usermanager/post/UpdateUserServlet.java        |  80 ++---
 .../usermanager/post/impl/DateParser.java          |  31 +-
 .../usermanager/post/impl/RequestProperty.java     |  35 +-
 .../usermanager/resource/AuthorizableResource.java | 144 +++++----
 .../resource/AuthorizableResourceProvider.java     | 343 +++++++++++---------
 .../usermanager/resource/AuthorizableValueMap.java | 168 +++++-----
 14 files changed, 984 insertions(+), 858 deletions(-)

diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractAuthorizablePostServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractAuthorizablePostServlet.java
index ab1d5cf..412d0f2 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractAuthorizablePostServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractAuthorizablePostServlet.java
@@ -54,12 +54,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Base class for all the POST servlets for the UserManager operations 
+ * Base class for all the POST servlets for the UserManager operations
  */
-public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsServlet {
-	private static final long serialVersionUID = -5918670409789895333L;
+public abstract class AbstractAuthorizablePostServlet extends
+        SlingAllMethodsServlet {
+    private static final long serialVersionUID = -5918670409789895333L;
 
-	/**
+    /**
      * default log
      */
     private final Logger log = LoggerFactory.getLogger(getClass());
@@ -71,9 +72,9 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
      *               values.4="dd.MM.yyyy HH:mm:ss" values.5="dd.MM.yyyy"
      */
     private static final String PROP_DATE_FORMAT = "servlet.post.dateFormats";
-	
-	private DateParser dateParser;
-	
+
+    private DateParser dateParser;
+
     // ---------- SCR Integration ----------------------------------------------
 
     protected void activate(ComponentContext context) {
@@ -89,15 +90,18 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
     protected void deactivate(ComponentContext context) {
         dateParser = null;
     }
-	
-    
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.servlets.SlingAllMethodsServlet#doPost(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.SlingHttpServletResponse)
-	 */
-	@Override
-	protected void doPost(SlingHttpServletRequest request,
-			SlingHttpServletResponse httpResponse) throws ServletException,
-			IOException {
+
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.api.servlets.SlingAllMethodsServlet#doPost(org.apache
+     * .sling.api.SlingHttpServletRequest,
+     * org.apache.sling.api.SlingHttpServletResponse)
+     */
+    @Override
+    protected void doPost(SlingHttpServletRequest request,
+            SlingHttpServletResponse httpResponse) throws ServletException,
+            IOException {
         // prepare the response
         HtmlResponse htmlResponse = new HtmlResponse();
         htmlResponse.setReferer(request.getHeader("referer"));
@@ -112,30 +116,45 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
         // parent location
         path = ResourceUtil.getParent(path);
         if (path != null) {
-        	htmlResponse.setParentLocation(externalizePath(request, path));
+            htmlResponse.setParentLocation(externalizePath(request, path));
         }
 
         Session session = request.getResourceResolver().adaptTo(Session.class);
 
         final List<Modification> changes = new ArrayList<Modification>();
-        
+
         try {
             handleOperation(request, htmlResponse, changes);
-            
-            //TODO: maybe handle SlingAuthorizablePostProcessor handlers here
-            
+
+            // TODO: maybe handle SlingAuthorizablePostProcessor handlers here
+
             // set changes on html response
-            for(Modification change : changes) {
-                switch ( change.getType() ) {
-                    case MODIFY : htmlResponse.onModified(change.getSource()); break;
-                    case DELETE : htmlResponse.onDeleted(change.getSource()); break;
-                    case MOVE :   htmlResponse.onMoved(change.getSource(), change.getDestination()); break;
-                    case COPY :   htmlResponse.onCopied(change.getSource(), change.getDestination()); break;
-                    case CREATE : htmlResponse.onCreated(change.getSource()); break;
-                    case ORDER : htmlResponse.onChange("ordered", change.getSource(), change.getDestination()); break;
+            for (Modification change : changes) {
+                switch (change.getType()) {
+                    case MODIFY:
+                        htmlResponse.onModified(change.getSource());
+                        break;
+                    case DELETE:
+                        htmlResponse.onDeleted(change.getSource());
+                        break;
+                    case MOVE:
+                        htmlResponse.onMoved(change.getSource(),
+                            change.getDestination());
+                        break;
+                    case COPY:
+                        htmlResponse.onCopied(change.getSource(),
+                            change.getDestination());
+                        break;
+                    case CREATE:
+                        htmlResponse.onCreated(change.getSource());
+                        break;
+                    case ORDER:
+                        htmlResponse.onChange("ordered", change.getSource(),
+                            change.getDestination());
+                        break;
                 }
             }
-            
+
             if (session.hasPendingChanges()) {
                 session.save();
             }
@@ -157,7 +176,7 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
                     e.getMessage(), e);
             }
         }
-        
+
         // check for redirect URL if processing succeeded
         if (htmlResponse.isSuccessful()) {
             String redirect = getRedirectUrl(request, htmlResponse);
@@ -169,22 +188,22 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
 
         // create a html response and send if unsuccessful or no redirect
         htmlResponse.send(httpResponse, isSetStatus(request));
-	}
-
-	/**
-	 * Extending Servlet should implement this operation to do the work
-	 * 
-	 * @param request the sling http request to process
-	 * @param htmlResponse the response 
-	 * @param changes 
-	 */
-	abstract protected void handleOperation(SlingHttpServletRequest request,
-			HtmlResponse htmlResponse, List<Modification> changes) throws RepositoryException;
-	
-	
+    }
+
+    /**
+     * Extending Servlet should implement this operation to do the work
+     * 
+     * @param request the sling http request to process
+     * @param htmlResponse the response
+     * @param changes
+     */
+    abstract protected void handleOperation(SlingHttpServletRequest request,
+            HtmlResponse htmlResponse, List<Modification> changes)
+            throws RepositoryException;
+
     /**
      * compute redirect URL (SLING-126)
-     *
+     * 
      * @param ctx the post processor
      * @return the redirect location or <code>null</code>
      */
@@ -255,17 +274,15 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
             SlingPostConstants.RP_STATUS);
         return true;
     }
-	
-    
-    
-    // ------ The methods below are based on the private methods from the ModifyOperation class -----
-    
+
+    // ------ The methods below are based on the private methods from the
+    // ModifyOperation class -----
+
     /**
      * Collects the properties that form the content to be written back to the
-     * repository. 
+     * repository. NOTE: In the returned map, the key is the property name not a
+     * path.
      * 
-     * NOTE: In the returned map, the key is the property name not a path.
-     *
      * @throws RepositoryException if a repository error occurs
      * @throws ServletException if an internal error occurs
      */
@@ -295,13 +312,14 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
             // ensure the paramName is an absolute property name
             String propPath;
             if (paramName.startsWith("./")) {
-            	propPath = paramName.substring(2);
+                propPath = paramName.substring(2);
             } else {
-            	propPath = paramName;
+                propPath = paramName;
             }
             if (propPath.indexOf('/') != -1) {
-            	//only one path segment is valid here, so this paramter can't be used.
-            	continue; //skip it.
+                // only one path segment is valid here, so this paramter can't
+                // be used.
+                continue; // skip it.
             }
 
             // @TypeHint example
@@ -374,7 +392,7 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
             // causes the JCR Text property to be set by moving the /tmp/path
             // property to Text.
             if (propPath.endsWith(SlingPostConstants.SUFFIX_MOVE_FROM)) {
-            	//don't support @MoveFrom here
+                // don't support @MoveFrom here
                 continue;
             }
 
@@ -384,7 +402,7 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
             // causes the JCR Text property to be set by copying the /tmp/path
             // property to Text.
             if (propPath.endsWith(SlingPostConstants.SUFFIX_COPY_FROM)) {
-            	//don't support @CopyFrom here
+                // don't support @CopyFrom here
                 continue;
             }
 
@@ -396,13 +414,12 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
 
         return reqProperties;
     }
-	
-	
+
     /**
      * Returns the request property for the given property path. If such a
      * request property does not exist yet it is created and stored in the
      * <code>props</code>.
-     *
+     * 
      * @param props The map of already seen request properties.
      * @param paramName The absolute path of the property including the
      *            <code>suffix</code> to be looked up.
@@ -425,14 +442,14 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
 
         return prop;
     }
-    
-    
+
     /**
      * Removes all properties listed as {@link RequestProperty#isDelete()} from
      * the authorizable.
-     *
-     * @param authorizable The <code>org.apache.jackrabbit.api.security.user.Authorizable</code> 
-     * 				that should have properties deleted.
+     * 
+     * @param authorizable The
+     *            <code>org.apache.jackrabbit.api.security.user.Authorizable</code>
+     *            that should have properties deleted.
      * @param reqProperties The map of request properties to check for
      *            properties to be removed.
      * @param response The <code>HtmlResponse</code> to be updated with
@@ -440,30 +457,29 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
      * @throws RepositoryException Is thrown if an error occurrs checking or
      *             removing properties.
      */
-    protected void processDeletes(Authorizable resource, 
+    protected void processDeletes(Authorizable resource,
             Map<String, RequestProperty> reqProperties,
             List<Modification> changes) throws RepositoryException {
 
         for (RequestProperty property : reqProperties.values()) {
             if (property.isDelete()) {
-            	if (resource.hasProperty(property.getName())) {
-            		resource.removeProperty(property.getName());
+                if (resource.hasProperty(property.getName())) {
+                    resource.removeProperty(property.getName());
                     changes.add(Modification.onDeleted(property.getPath()));
-            	}
+                }
             }
         }
     }
 
-    
     /**
      * Writes back the content
-     *
+     * 
      * @throws RepositoryException if a repository error occurs
      * @throws ServletException if an internal error occurs
      */
     protected void writeContent(Session session, Authorizable authorizable,
-            Map<String, RequestProperty> reqProperties, List<Modification> changes)
-            throws RepositoryException {
+            Map<String, RequestProperty> reqProperties,
+            List<Modification> changes) throws RepositoryException {
 
         for (RequestProperty prop : reqProperties.values()) {
             if (prop.hasValues()) {
@@ -474,45 +490,47 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
                 }
                 if (authorizable.isGroup()) {
                     if (prop.getName().equals("groupId")) {
-                    	//skip these
-                    	continue;
-                	}                	
+                        // skip these
+                        continue;
+                    }
                 } else {
-                    if (prop.getName().equals("userId") ||
-                    		prop.getName().equals("pwd") ||
-                    		prop.getName().equals("pwdConfirm")) {
-                    	//skip these
-                    	continue;
+                    if (prop.getName().equals("userId")
+                        || prop.getName().equals("pwd")
+                        || prop.getName().equals("pwdConfirm")) {
+                        // skip these
+                        continue;
                     }
                 }
                 if (prop.isFileUpload()) {
-                	//don't handle files for user properties for now.
-                	continue;
-                    //uploadHandler.setFile(parent, prop, changes);
+                    // don't handle files for user properties for now.
+                    continue;
+                    // uploadHandler.setFile(parent, prop, changes);
                 } else {
-                	setPropertyAsIs(session, authorizable, prop, changes);
+                    setPropertyAsIs(session, authorizable, prop, changes);
                 }
             }
         }
     }
-    
+
     /**
      * set property without processing, except for type hints
-     *
+     * 
      * @param parent the parent node
      * @param prop the request property
      * @throws RepositoryException if a repository error occurs.
      */
-    private void setPropertyAsIs(Session session, Authorizable parent, RequestProperty prop, List<Modification> changes)
+    private void setPropertyAsIs(Session session, Authorizable parent,
+            RequestProperty prop, List<Modification> changes)
             throws RepositoryException {
 
-    	String parentPath;
-    	if (parent.isGroup()) {
-    		parentPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PREFIX + parent.getID();
-    	} else {
-    		parentPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_USER_PREFIX + parent.getID();
-    	}
-
+        String parentPath;
+        if (parent.isGroup()) {
+            parentPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PREFIX
+                + parent.getID();
+        } else {
+            parentPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_USER_PREFIX
+                + parent.getID();
+        }
 
         // no explicit typehint
         int type = PropertyType.UNDEFINED;
@@ -525,29 +543,29 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
         }
 
         String[] values = prop.getStringValues();
-		if (values == null) {
+        if (values == null) {
             // remove property
-	        boolean removedProp = removePropertyIfExists(parent, prop.getName());
-	        if (removedProp) {
-	            changes.add(Modification.onDeleted(
-	            		parentPath + "/" + prop.getName()
-	            ));
-	        }
+            boolean removedProp = removePropertyIfExists(parent, prop.getName());
+            if (removedProp) {
+                changes.add(Modification.onDeleted(parentPath + "/"
+                    + prop.getName()));
+            }
         } else if (values.length == 0) {
             // do not create new prop here, but clear existing
             if (parent.hasProperty(prop.getName())) {
-            	Value val = session.getValueFactory().createValue("");
-            	parent.setProperty(prop.getName(), val);
-                changes.add(Modification.onModified(
-                	parentPath + "/" + prop.getName()
-                ));
+                Value val = session.getValueFactory().createValue("");
+                parent.setProperty(prop.getName(), val);
+                changes.add(Modification.onModified(parentPath + "/"
+                    + prop.getName()));
             }
         } else if (values.length == 1) {
             boolean removedProp = removePropertyIfExists(parent, prop.getName());
-            // if the provided value is the empty string, we don't have to do anything.
-            if ( values[0].length() == 0 ) {
-                if ( removedProp ) {
-                    changes.add(Modification.onDeleted(parentPath + "/" + prop.getName()));
+            // if the provided value is the empty string, we don't have to do
+            // anything.
+            if (values[0].length() == 0) {
+                if (removedProp) {
+                    changes.add(Modification.onDeleted(parentPath + "/"
+                        + prop.getName()));
                 }
             } else {
                 // modify property
@@ -555,38 +573,41 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
                     // try conversion
                     Calendar c = dateParser.parse(values[0]);
                     if (c != null) {
-                        if ( prop.hasMultiValueTypeHint() ) {
+                        if (prop.hasMultiValueTypeHint()) {
                             final Value[] array = new Value[1];
                             array[0] = session.getValueFactory().createValue(c);
                             parent.setProperty(prop.getName(), array);
-                            changes.add(Modification.onModified(
-                                parentPath + "/" + prop.getName()
-                            ));
+                            changes.add(Modification.onModified(parentPath
+                                + "/" + prop.getName()));
                         } else {
-                        	Value cVal = session.getValueFactory().createValue(c);
-                        	parent.setProperty(prop.getName(), cVal);
-                            changes.add(Modification.onModified(
-                                    parentPath + "/" + prop.getName()
-                                ));
+                            Value cVal = session.getValueFactory().createValue(
+                                c);
+                            parent.setProperty(prop.getName(), cVal);
+                            changes.add(Modification.onModified(parentPath
+                                + "/" + prop.getName()));
                         }
                         return;
                     }
                     // fall back to default behaviour
                 }
-                if ( type == PropertyType.UNDEFINED ) {
-                	Value val = session.getValueFactory().createValue(values[0], PropertyType.STRING);
-                	parent.setProperty(prop.getName(), val);
+                if (type == PropertyType.UNDEFINED) {
+                    Value val = session.getValueFactory().createValue(
+                        values[0], PropertyType.STRING);
+                    parent.setProperty(prop.getName(), val);
                 } else {
-                    if ( prop.hasMultiValueTypeHint() ) {
+                    if (prop.hasMultiValueTypeHint()) {
                         final Value[] array = new Value[1];
-                        array[0] = session.getValueFactory().createValue(values[0], type);
+                        array[0] = session.getValueFactory().createValue(
+                            values[0], type);
                         parent.setProperty(prop.getName(), array);
                     } else {
-                    	Value val = session.getValueFactory().createValue(values[0], type);
+                        Value val = session.getValueFactory().createValue(
+                            values[0], type);
                         parent.setProperty(prop.getName(), val);
                     }
                 }
-                changes.add(Modification.onModified(parentPath + "/" + prop.getName()));
+                changes.add(Modification.onModified(parentPath + "/"
+                    + prop.getName()));
             }
         } else {
             removePropertyIfExists(parent, prop.getName());
@@ -595,51 +616,52 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
                 ValueFactory valFac = session.getValueFactory();
                 Value[] c = dateParser.parse(values, valFac);
                 if (c != null) {
-                	parent.setProperty(prop.getName(), c);
-                    changes.add(Modification.onModified(
-                    		parentPath + "/" + prop.getName()
-                    ));
+                    parent.setProperty(prop.getName(), c);
+                    changes.add(Modification.onModified(parentPath + "/"
+                        + prop.getName()));
                     return;
                 }
                 // fall back to default behaviour
             }
 
-            Value [] vals = new Value[values.length];
-            if ( type == PropertyType.UNDEFINED ) {
-            	for(int i=0; i < values.length; i++) {
-            		vals[i] = session.getValueFactory().createValue(values[i]);
-            	}
+            Value[] vals = new Value[values.length];
+            if (type == PropertyType.UNDEFINED) {
+                for (int i = 0; i < values.length; i++) {
+                    vals[i] = session.getValueFactory().createValue(values[i]);
+                }
             } else {
-            	for(int i=0; i < values.length; i++) {
-            		vals[i] = session.getValueFactory().createValue(values[i], type);
-            	}
+                for (int i = 0; i < values.length; i++) {
+                    vals[i] = session.getValueFactory().createValue(values[i],
+                        type);
+                }
             }
-        	parent.setProperty(prop.getName(), vals);
-            changes.add(Modification.onModified(parentPath + "/" + prop.getName()));
+            parent.setProperty(prop.getName(), vals);
+            changes.add(Modification.onModified(parentPath + "/"
+                + prop.getName()));
         }
-    
+
     }
 
     /**
      * Removes the property with the given name from the parent resource if it
      * exists.
-     *
+     * 
      * @param parent the parent resource
      * @param name the name of the property to remove
-     * @return path of the property that was removed or <code>null</code> if
-     *         it was not removed
+     * @return path of the property that was removed or <code>null</code> if it
+     *         was not removed
      * @throws RepositoryException if a repository error occurs.
      */
-	private boolean removePropertyIfExists(Authorizable resource, String name) throws RepositoryException {
-    	if (resource.getProperty(name) != null) {
-    		resource.removeProperty(name);
-    		return true;
-    	}
-    	return false;
-	}
+    private boolean removePropertyIfExists(Authorizable resource, String name)
+            throws RepositoryException {
+        if (resource.getProperty(name) != null) {
+            resource.removeProperty(name);
+            return true;
+        }
+        return false;
+    }
 
-	
-	// ------ These methods were copied from AbstractSlingPostOperation ------
+    // ------ These methods were copied from AbstractSlingPostOperation ------
 
     /**
      * Returns the path of the resource of the request as the item path.
@@ -654,7 +676,7 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
     /**
      * Returns an external form of the given path prepending the context path
      * and appending a display extension.
-     *
+     * 
      * @param path the path to externalize
      * @return the url
      */
@@ -675,20 +697,20 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
 
         return ret.toString();
     }
-	
+
     /**
-     * Returns <code>true</code> if the <code>name</code> starts with either
-     * of the prefixes
-     * {@link SlingPostConstants#ITEM_PREFIX_RELATIVE_CURRENT <code>./</code>},
-     * {@link SlingPostConstants#ITEM_PREFIX_RELATIVE_PARENT <code>../</code>}
-     * and {@link SlingPostConstants#ITEM_PREFIX_ABSOLUTE <code>/</code>}.
+     * Returns <code>true</code> if the <code>name</code> starts with either of
+     * the prefixes {@link SlingPostConstants#ITEM_PREFIX_RELATIVE_CURRENT
+     * <code>./</code>}, {@link SlingPostConstants#ITEM_PREFIX_RELATIVE_PARENT
+     * <code>../</code>} and {@link SlingPostConstants#ITEM_PREFIX_ABSOLUTE
+     * <code>/</code>}.
      */
     protected boolean hasItemPathPrefix(String name) {
         return name.startsWith(SlingPostConstants.ITEM_PREFIX_ABSOLUTE)
             || name.startsWith(SlingPostConstants.ITEM_PREFIX_RELATIVE_CURRENT)
             || name.startsWith(SlingPostConstants.ITEM_PREFIX_RELATIVE_PARENT);
     }
-    
+
     /**
      * Returns true if any of the request parameters starts with
      * {@link SlingPostConstants#ITEM_PREFIX_RELATIVE_CURRENT <code>./</code>}.
@@ -713,5 +735,5 @@ public abstract class AbstractAuthorizablePostServlet extends SlingAllMethodsSer
 
         return requirePrefix;
     }
-    
+
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractGroupPostServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractGroupPostServlet.java
index 675aeb8..1c677d6 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractGroupPostServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractGroupPostServlet.java
@@ -32,64 +32,70 @@ import org.apache.sling.servlets.post.SlingPostConstants;
 /**
  * Base class for servlets manipulating groups
  */
-public abstract class AbstractGroupPostServlet extends AbstractAuthorizablePostServlet {
-	private static final long serialVersionUID = 1159063041816944076L;
+public abstract class AbstractGroupPostServlet extends
+        AbstractAuthorizablePostServlet {
+    private static final long serialVersionUID = 1159063041816944076L;
 
-	/**
-     * Update the group membership based on the ":member" request
-     * parameters.  If the ":member" value ends with @Delete it is removed
-     * from the group membership, otherwise it is added to the group membership.
+    /**
+     * Update the group membership based on the ":member" request parameters. If
+     * the ":member" value ends with @Delete it is removed from the group
+     * membership, otherwise it is added to the group membership.
      * 
      * @param request
      * @param authorizable
      * @throws RepositoryException
      */
-	protected void updateGroupMembership(SlingHttpServletRequest request,
-			Authorizable authorizable, List<Modification> changes) throws RepositoryException {
-		if (authorizable.isGroup()) {
-			Group group = ((Group)authorizable);
-    		String groupPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PREFIX + group.getID(); 
+    protected void updateGroupMembership(SlingHttpServletRequest request,
+            Authorizable authorizable, List<Modification> changes)
+            throws RepositoryException {
+        if (authorizable.isGroup()) {
+            Group group = ((Group) authorizable);
+            String groupPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PREFIX
+                + group.getID();
 
-	    	ResourceResolver resolver = request.getResourceResolver();
-	    	Resource baseResource = request.getResource();
-	    	boolean changed = false;
+            ResourceResolver resolver = request.getResourceResolver();
+            Resource baseResource = request.getResource();
+            boolean changed = false;
 
-	    	//first remove any members posted as ":member@Delete"
-	    	String[] membersToDelete = request.getParameterValues(SlingPostConstants.RP_PREFIX + "member" + SlingPostConstants.SUFFIX_DELETE);
-	    	if (membersToDelete != null) {
-				for (String member : membersToDelete) {
-	                Resource res = resolver.getResource(baseResource, member);
-	                if (res != null) {
-	                	Authorizable memberAuthorizable = res.adaptTo(Authorizable.class);
-	                	if (memberAuthorizable != null) {
-	                		group.removeMember(memberAuthorizable);
-	                		changed = true;
-	                	}
-	                }
-					
-				}
-	    	}
-	    	
-	    	//second add any members posted as ":member"
-	    	String[] membersToAdd = request.getParameterValues(SlingPostConstants.RP_PREFIX + "member");
-	    	if (membersToAdd != null) {
-				for (String member : membersToAdd) {
-	                Resource res = resolver.getResource(baseResource, member);
-	                if (res != null) {
-	                	Authorizable memberAuthorizable = res.adaptTo(Authorizable.class);
-	                	if (memberAuthorizable != null) {
-	                		group.addMember(memberAuthorizable);
-	                		changed = true;
-	                	}
-	                }
-				}
-	    	}
+            // first remove any members posted as ":member@Delete"
+            String[] membersToDelete = request.getParameterValues(SlingPostConstants.RP_PREFIX
+                + "member" + SlingPostConstants.SUFFIX_DELETE);
+            if (membersToDelete != null) {
+                for (String member : membersToDelete) {
+                    Resource res = resolver.getResource(baseResource, member);
+                    if (res != null) {
+                        Authorizable memberAuthorizable = res.adaptTo(Authorizable.class);
+                        if (memberAuthorizable != null) {
+                            group.removeMember(memberAuthorizable);
+                            changed = true;
+                        }
+                    }
+
+                }
+            }
+
+            // second add any members posted as ":member"
+            String[] membersToAdd = request.getParameterValues(SlingPostConstants.RP_PREFIX
+                + "member");
+            if (membersToAdd != null) {
+                for (String member : membersToAdd) {
+                    Resource res = resolver.getResource(baseResource, member);
+                    if (res != null) {
+                        Authorizable memberAuthorizable = res.adaptTo(Authorizable.class);
+                        if (memberAuthorizable != null) {
+                            group.addMember(memberAuthorizable);
+                            changed = true;
+                        }
+                    }
+                }
+            }
+
+            if (changed) {
+                // add an entry to the changes list to record the membership
+                // change
+                changes.add(Modification.onModified(groupPath + "/members"));
+            }
+        }
+    }
 
-	    	if (changed) {
-        		//add an entry to the changes list to record the membership change
-        		changes.add(Modification.onModified(groupPath + "/members"));
-	    	}
-		}
-	}
-	
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractUserPostServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractUserPostServlet.java
index 8e32ae9..87cf907 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractUserPostServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/AbstractUserPostServlet.java
@@ -26,30 +26,34 @@ import org.osgi.service.component.ComponentContext;
 /**
  * Base class for servlets manipulating users
  */
-public abstract class AbstractUserPostServlet extends AbstractAuthorizablePostServlet {
-	private static final long serialVersionUID = -8401210711297654453L;
+public abstract class AbstractUserPostServlet extends
+        AbstractAuthorizablePostServlet {
+    private static final long serialVersionUID = -8401210711297654453L;
 
-	/**
+    /**
      * To be used for the encryption. E.g. for passwords in
-     * {@link javax.jcr.SimpleCredentials#getPassword()}  SimpleCredentials} 
+     * {@link javax.jcr.SimpleCredentials#getPassword()} SimpleCredentials}
+     * 
      * @scr.property valueRef="DEFAULT_PASSWORD_DIGEST_ALGORITHM"
      */
     private static final String PROP_PASSWORD_DIGEST_ALGORITHM = "password.digest.algorithm";
+
     private static final String DEFAULT_PASSWORD_DIGEST_ALGORITHM = "sha1";
+
     private String passwordDigestAlgoritm = null;
 
     // ---------- SCR Integration ----------------------------------------------
 
     protected void activate(ComponentContext context) {
         super.activate(context);
-        
+
         Dictionary<?, ?> props = context.getProperties();
 
         Object propValue = props.get(PROP_PASSWORD_DIGEST_ALGORITHM);
         if (propValue instanceof String) {
-        	passwordDigestAlgoritm = (String)propValue;
+            passwordDigestAlgoritm = (String) propValue;
         } else {
-        	passwordDigestAlgoritm = DEFAULT_PASSWORD_DIGEST_ALGORITHM;
+            passwordDigestAlgoritm = DEFAULT_PASSWORD_DIGEST_ALGORITHM;
         }
     }
 
@@ -57,7 +61,7 @@ public abstract class AbstractUserPostServlet extends AbstractAuthorizablePostSe
         super.deactivate(context);
         passwordDigestAlgoritm = null;
     }
-    
+
     /**
      * Digest the given password using the configured digest algorithm
      * 
@@ -69,7 +73,8 @@ public abstract class AbstractUserPostServlet extends AbstractAuthorizablePostSe
         try {
             StringBuffer password = new StringBuffer();
             password.append("{").append(passwordDigestAlgoritm).append("}");
-            password.append(Text.digest(passwordDigestAlgoritm, pwd.getBytes("UTF-8")));
+            password.append(Text.digest(passwordDigestAlgoritm,
+                pwd.getBytes("UTF-8")));
             return password.toString();
         } catch (NoSuchAlgorithmException e) {
             throw new IllegalArgumentException(e.toString());
@@ -77,5 +82,5 @@ public abstract class AbstractUserPostServlet extends AbstractAuthorizablePostSe
             throw new IllegalArgumentException(e.toString());
         }
     }
-    
+
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/ChangeUserPasswordServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/ChangeUserPasswordServlet.java
index 9feddec..118f6aa 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/ChangeUserPasswordServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/ChangeUserPasswordServlet.java
@@ -31,77 +31,83 @@ import org.apache.sling.api.servlets.HtmlResponse;
 import org.apache.sling.servlets.post.Modification;
 
 /**
- * Sling Post Operation implementation for updating the password of a user in the 
- * jackrabbit UserManager.
+ * Sling Post Operation implementation for updating the password of a user in
+ * the jackrabbit UserManager.
  * 
  * @scr.component metatype="no" immediate="true"
  * @scr.service interface="javax.servlet.Servlet"
  * @scr.property name="sling.servlet.resourceTypes" value="sling/user"
- * @scr.property name="sling.servlet.methods" value="POST" 
- * @scr.property name="sling.servlet.selectors" value="changePassword" 
+ * @scr.property name="sling.servlet.methods" value="POST"
+ * @scr.property name="sling.servlet.selectors" value="changePassword"
  */
 public class ChangeUserPasswordServlet extends AbstractUserPostServlet {
-	private static final long serialVersionUID = 1923614318474654502L;
+    private static final long serialVersionUID = 1923614318474654502L;
 
-	/* (non-Javadoc)
-	 * @see org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet#handleOperation(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.servlets.HtmlResponse, java.util.List)
-	 */
-	@Override
-	protected void handleOperation(SlingHttpServletRequest request,
-			HtmlResponse htmlResponse, List<Modification> changes)
-			throws RepositoryException {
-		Authorizable authorizable = null;
-		Resource resource = request.getResource();
-		if (resource != null) {
-			authorizable = resource.adaptTo(Authorizable.class);
-		}
-		
-		//check that the user was located.
-		if (authorizable == null || authorizable.isGroup()) {
-			throw new ResourceNotFoundException("User to update could not be determined.");
-		}
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet
+     * #handleOperation(org.apache.sling.api.SlingHttpServletRequest,
+     * org.apache.sling.api.servlets.HtmlResponse, java.util.List)
+     */
+    @Override
+    protected void handleOperation(SlingHttpServletRequest request,
+            HtmlResponse htmlResponse, List<Modification> changes)
+            throws RepositoryException {
+        Authorizable authorizable = null;
+        Resource resource = request.getResource();
+        if (resource != null) {
+            authorizable = resource.adaptTo(Authorizable.class);
+        }
 
-		if ("anonymous".equals(authorizable.getID())) {
-			throw new RepositoryException("Can not change the password of the anonymous user.");
-		}
+        // check that the user was located.
+        if (authorizable == null || authorizable.isGroup()) {
+            throw new ResourceNotFoundException(
+                "User to update could not be determined.");
+        }
 
-		Session session = request.getResourceResolver().adaptTo(Session.class);
-		if (session == null) {
-			throw new RepositoryException("JCR Session not found");
-		}
+        if ("anonymous".equals(authorizable.getID())) {
+            throw new RepositoryException(
+                "Can not change the password of the anonymous user.");
+        }
 
-		//check that the submitted parameter values have valid values.
-		String oldPwd = request.getParameter("oldPwd");
-		if (oldPwd == null || oldPwd.length() == 0) {
-			throw new RepositoryException("Old Password was not submitted");
-		}
-		String newPwd = request.getParameter("newPwd");
-		if (newPwd == null || newPwd.length() == 0) {
-			throw new RepositoryException("New Password was not submitted");
-		}
-		String newPwdConfirm = request.getParameter("newPwdConfirm");
-		if (!newPwd.equals(newPwdConfirm)) {
-			throw new RepositoryException("New Password does not match the confirmation password");
-		}
-		
-		try {
-			String digestedOldPwd = digestPassword(oldPwd);
-			Value[] pwdProperty = ((User)authorizable).getProperty("rep:password");
-			if (pwdProperty != null && pwdProperty.length > 0) {
-				String repPasswordValue = pwdProperty[0].getString();
-				if (!digestedOldPwd.equals(repPasswordValue)) {
-					//submitted oldPwd value is not correct.
-					throw new RepositoryException("Old Password does not match");
-				}
-			}
-				
-			((User)authorizable).changePassword(digestPassword(newPwd));
-			
-            changes.add(Modification.onModified(
-                	resource.getPath() + "/rep:password"
-                ));
-		} catch (RepositoryException re) {
-			throw new RepositoryException("Failed to change user password.", re);
-		}
-	}
+        Session session = request.getResourceResolver().adaptTo(Session.class);
+        if (session == null) {
+            throw new RepositoryException("JCR Session not found");
+        }
+
+        // check that the submitted parameter values have valid values.
+        String oldPwd = request.getParameter("oldPwd");
+        if (oldPwd == null || oldPwd.length() == 0) {
+            throw new RepositoryException("Old Password was not submitted");
+        }
+        String newPwd = request.getParameter("newPwd");
+        if (newPwd == null || newPwd.length() == 0) {
+            throw new RepositoryException("New Password was not submitted");
+        }
+        String newPwdConfirm = request.getParameter("newPwdConfirm");
+        if (!newPwd.equals(newPwdConfirm)) {
+            throw new RepositoryException(
+                "New Password does not match the confirmation password");
+        }
+
+        try {
+            String digestedOldPwd = digestPassword(oldPwd);
+            Value[] pwdProperty = ((User) authorizable).getProperty("rep:password");
+            if (pwdProperty != null && pwdProperty.length > 0) {
+                String repPasswordValue = pwdProperty[0].getString();
+                if (!digestedOldPwd.equals(repPasswordValue)) {
+                    // submitted oldPwd value is not correct.
+                    throw new RepositoryException("Old Password does not match");
+                }
+            }
+
+            ((User) authorizable).changePassword(digestPassword(newPwd));
+
+            changes.add(Modification.onModified(resource.getPath()
+                + "/rep:password"));
+        } catch (RepositoryException re) {
+            throw new RepositoryException("Failed to change user password.", re);
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/CreateGroupServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/CreateGroupServlet.java
index a7e162b..67814ba 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/CreateGroupServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/CreateGroupServlet.java
@@ -38,63 +38,73 @@ import org.apache.sling.servlets.post.SlingPostConstants;
  * Sling Post Servlet implementation for creating a group in the jackrabbit
  * UserManager.
  * 
- * @scr.component immediate="true" 
+ * @scr.component immediate="true"
  * @scr.service interface="javax.servlet.Servlet"
  * @scr.property name="sling.servlet.resourceTypes" value="sling/groups"
- * @scr.property name="sling.servlet.methods" value="POST" 
- * @scr.property name="sling.servlet.selectors" value="create" 
+ * @scr.property name="sling.servlet.methods" value="POST"
+ * @scr.property name="sling.servlet.selectors" value="create"
  */
 public class CreateGroupServlet extends AbstractGroupPostServlet {
-	private static final long serialVersionUID = -1084915263933901466L;
+    private static final long serialVersionUID = -1084915263933901466L;
 
-	/* (non-Javadoc)
-	 * @see org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet#handleOperation(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.servlets.HtmlResponse, java.util.List)
-	 */
-	@Override
-	protected void handleOperation(SlingHttpServletRequest request,
-			HtmlResponse response, List<Modification> changes) throws RepositoryException {
-		
-		//check that the submitted parameter values have valid values.
-		final String principalName = request.getParameter(SlingPostConstants.RP_NODE_NAME);
-		if (principalName == null) {
-			throw new RepositoryException("Group name was not submitted");
-		}
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet
+     * #handleOperation(org.apache.sling.api.SlingHttpServletRequest,
+     * org.apache.sling.api.servlets.HtmlResponse, java.util.List)
+     */
+    @Override
+    protected void handleOperation(SlingHttpServletRequest request,
+            HtmlResponse response, List<Modification> changes)
+            throws RepositoryException {
 
-		Session session = request.getResourceResolver().adaptTo(Session.class);
-		if (session == null) {
-			throw new RepositoryException("JCR Session not found");
-		}
+        // check that the submitted parameter values have valid values.
+        final String principalName = request.getParameter(SlingPostConstants.RP_NODE_NAME);
+        if (principalName == null) {
+            throw new RepositoryException("Group name was not submitted");
+        }
 
-		try {
-			UserManager userManager = AccessControlUtil.getUserManager(session);
-			Authorizable authorizable = userManager.getAuthorizable(principalName);
-			
-			if (authorizable != null) {
-				//principal already exists!
-				throw new RepositoryException("A principal already exists with the requested name: " + principalName);
-			} else {
-				Map<String, RequestProperty> reqProperties = collectContent(request, response);
+        Session session = request.getResourceResolver().adaptTo(Session.class);
+        if (session == null) {
+            throw new RepositoryException("JCR Session not found");
+        }
 
-				Group group = userManager.createGroup(new Principal() {
-					public String getName() {
-						return principalName;
-					}
-				});
+        try {
+            UserManager userManager = AccessControlUtil.getUserManager(session);
+            Authorizable authorizable = userManager.getAuthorizable(principalName);
 
-				String groupPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PREFIX + group.getID();
-				response.setPath(groupPath);
-				response.setLocation(externalizePath(request, groupPath));
-				response.setParentLocation(externalizePath(request, AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PATH));
-				changes.add(Modification.onCreated(groupPath));
-				
-		        // write content from form
-		        writeContent(session, group, reqProperties, changes);
-		        
-		        //update the group memberships
-		        updateGroupMembership(request, group, changes);
-			}
-		} catch (RepositoryException re) {
-			throw new RepositoryException("Failed to create new group.", re);
-		}
-	}
+            if (authorizable != null) {
+                // principal already exists!
+                throw new RepositoryException(
+                    "A principal already exists with the requested name: "
+                        + principalName);
+            } else {
+                Map<String, RequestProperty> reqProperties = collectContent(
+                    request, response);
+
+                Group group = userManager.createGroup(new Principal() {
+                    public String getName() {
+                        return principalName;
+                    }
+                });
+
+                String groupPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PREFIX
+                    + group.getID();
+                response.setPath(groupPath);
+                response.setLocation(externalizePath(request, groupPath));
+                response.setParentLocation(externalizePath(request,
+                    AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PATH));
+                changes.add(Modification.onCreated(groupPath));
+
+                // write content from form
+                writeContent(session, group, reqProperties, changes);
+
+                // update the group memberships
+                updateGroupMembership(request, group, changes);
+            }
+        } catch (RepositoryException re) {
+            throw new RepositoryException("Failed to create new group.", re);
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/CreateUserServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/CreateUserServlet.java
index c8259dc..7d0c9af 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/CreateUserServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/CreateUserServlet.java
@@ -46,29 +46,31 @@ import org.slf4j.LoggerFactory;
  *                description="%createUser.post.operation.description"
  * @scr.service interface="javax.servlet.Servlet"
  * @scr.property name="sling.servlet.resourceTypes" value="sling/users"
- * @scr.property name="sling.servlet.methods" value="POST" 
- * @scr.property name="sling.servlet.selectors" value="create" 
+ * @scr.property name="sling.servlet.methods" value="POST"
+ * @scr.property name="sling.servlet.selectors" value="create"
  */
 public class CreateUserServlet extends AbstractUserPostServlet {
-	private static final long serialVersionUID = 6871481922737658675L;
+    private static final long serialVersionUID = 6871481922737658675L;
 
-	/**
+    /**
      * default log
      */
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    /** @scr.property label="%self.registration.enabled.name" 
-     * 					description="%self.registration.enabled.description" 
-     * 					valueRef="DEFAULT_SELF_REGISTRATION_ENABLED" 
+    /**
+     * @scr.property label="%self.registration.enabled.name"
+     *               description="%self.registration.enabled.description"
+     *               valueRef="DEFAULT_SELF_REGISTRATION_ENABLED"
      */
     private static final String PROP_SELF_REGISTRATION_ENABLED = "self.registration.enabled";
+
     private static final Boolean DEFAULT_SELF_REGISTRATION_ENABLED = Boolean.TRUE;
 
     private Boolean selfRegistrationEnabled = DEFAULT_SELF_REGISTRATION_ENABLED;
 
     /**
      * The JCR Repository we access to resolve resources
-     *
+     * 
      * @scr.reference
      */
     private SlingRepository repository;
@@ -89,7 +91,7 @@ public class CreateUserServlet extends AbstractUserPostServlet {
      * Return the administrative session and close it.
      */
     private void ungetSession(final Session session) {
-        if ( session != null ) {
+        if (session != null) {
             try {
                 session.logout();
             } catch (Throwable t) {
@@ -102,83 +104,94 @@ public class CreateUserServlet extends AbstractUserPostServlet {
 
     /**
      * Activates this component.
-     *
+     * 
      * @param componentContext The OSGi <code>ComponentContext</code> of this
-     *      component.
+     *            component.
      */
     protected void activate(ComponentContext componentContext) {
-    	super.activate(componentContext);
+        super.activate(componentContext);
         Dictionary<?, ?> props = componentContext.getProperties();
         Object propValue = props.get(PROP_SELF_REGISTRATION_ENABLED);
         if (propValue instanceof String) {
-        	selfRegistrationEnabled = Boolean.parseBoolean((String)propValue);
+            selfRegistrationEnabled = Boolean.parseBoolean((String) propValue);
         } else {
-        	selfRegistrationEnabled = DEFAULT_SELF_REGISTRATION_ENABLED;
+            selfRegistrationEnabled = DEFAULT_SELF_REGISTRATION_ENABLED;
         }
     }
 
-    
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet#handleOperation(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.servlets.HtmlResponse, java.util.List)
-	 */
-	@Override
-	protected void handleOperation(SlingHttpServletRequest request,
-			HtmlResponse response, List<Modification> changes) throws RepositoryException {
-		//make sure user self-registration is enabled
-		if (!selfRegistrationEnabled) {
-			throw new RepositoryException("Sorry, registration of new users is not currently enabled.  Please try again later.");
-		}
-
-		Session session = request.getResourceResolver().adaptTo(Session.class);
-		if (session == null) {
-			throw new RepositoryException("JCR Session not found");
-		}
-		
-		//check that the submitted parameter values have valid values.
-		String principalName = request.getParameter(SlingPostConstants.RP_NODE_NAME);
-		if (principalName == null) {
-			throw new RepositoryException("User name was not submitted");
-		}
-		String pwd = request.getParameter("pwd");
-		if (pwd == null) {
-			throw new RepositoryException("Password was not submitted");
-		}
-		String pwdConfirm = request.getParameter("pwdConfirm");
-		if (!pwd.equals(pwdConfirm)) {
-			throw new RepositoryException("Password value does not match the confirmation password");
-		}
-		
-		Session selfRegSession = null;
-		try {
-			selfRegSession = getSession();
-
-			UserManager userManager = AccessControlUtil.getUserManager(selfRegSession);
-			Authorizable authorizable = userManager.getAuthorizable(principalName);
-			
-			if (authorizable != null) {
-				//user already exists!
-				throw new RepositoryException("A principal already exists with the requested name: " + principalName);
-			} else {
-				Map<String, RequestProperty> reqProperties = collectContent(request, response);
-
-				User user = userManager.createUser(principalName, digestPassword(pwd));
-				String userPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_USER_PREFIX + user.getID();
-				
-				response.setPath(userPath);
-				response.setLocation(externalizePath(request, userPath));
-				response.setParentLocation(externalizePath(request, AuthorizableResourceProvider.SYSTEM_USER_MANAGER_USER_PATH));
-				changes.add(Modification.onCreated(userPath));
-				
-		        // write content from form
-		        writeContent(selfRegSession, user, reqProperties, changes);
-				
-				if (selfRegSession.hasPendingChanges()) {
-					selfRegSession.save();
-				}
-			}
-		} finally {
-			ungetSession(selfRegSession);
-		}
-	}
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet
+     * #handleOperation(org.apache.sling.api.SlingHttpServletRequest,
+     * org.apache.sling.api.servlets.HtmlResponse, java.util.List)
+     */
+    @Override
+    protected void handleOperation(SlingHttpServletRequest request,
+            HtmlResponse response, List<Modification> changes)
+            throws RepositoryException {
+        // make sure user self-registration is enabled
+        if (!selfRegistrationEnabled) {
+            throw new RepositoryException(
+                "Sorry, registration of new users is not currently enabled.  Please try again later.");
+        }
+
+        Session session = request.getResourceResolver().adaptTo(Session.class);
+        if (session == null) {
+            throw new RepositoryException("JCR Session not found");
+        }
+
+        // check that the submitted parameter values have valid values.
+        String principalName = request.getParameter(SlingPostConstants.RP_NODE_NAME);
+        if (principalName == null) {
+            throw new RepositoryException("User name was not submitted");
+        }
+        String pwd = request.getParameter("pwd");
+        if (pwd == null) {
+            throw new RepositoryException("Password was not submitted");
+        }
+        String pwdConfirm = request.getParameter("pwdConfirm");
+        if (!pwd.equals(pwdConfirm)) {
+            throw new RepositoryException(
+                "Password value does not match the confirmation password");
+        }
+
+        Session selfRegSession = null;
+        try {
+            selfRegSession = getSession();
+
+            UserManager userManager = AccessControlUtil.getUserManager(selfRegSession);
+            Authorizable authorizable = userManager.getAuthorizable(principalName);
+
+            if (authorizable != null) {
+                // user already exists!
+                throw new RepositoryException(
+                    "A principal already exists with the requested name: "
+                        + principalName);
+            } else {
+                Map<String, RequestProperty> reqProperties = collectContent(
+                    request, response);
+
+                User user = userManager.createUser(principalName,
+                    digestPassword(pwd));
+                String userPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_USER_PREFIX
+                    + user.getID();
+
+                response.setPath(userPath);
+                response.setLocation(externalizePath(request, userPath));
+                response.setParentLocation(externalizePath(request,
+                    AuthorizableResourceProvider.SYSTEM_USER_MANAGER_USER_PATH));
+                changes.add(Modification.onCreated(userPath));
+
+                // write content from form
+                writeContent(selfRegSession, user, reqProperties, changes);
+
+                if (selfRegSession.hasPendingChanges()) {
+                    selfRegSession.save();
+                }
+            }
+        } finally {
+            ungetSession(selfRegSession);
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/DeleteAuthorizableServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/DeleteAuthorizableServlet.java
index 39ac672..44d6a7b 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/DeleteAuthorizableServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/DeleteAuthorizableServlet.java
@@ -33,34 +33,40 @@ import org.apache.sling.servlets.post.Modification;
 import org.apache.sling.servlets.post.SlingPostConstants;
 
 /**
- * Sling Post Operation implementation for deleting one or more users and/or groups from the 
- * jackrabbit UserManager.
+ * Sling Post Operation implementation for deleting one or more users and/or
+ * groups from the jackrabbit UserManager.
  * 
  * @scr.component metatype="no" immediate="true"
  * @scr.service interface="javax.servlet.Servlet"
- * @scr.property name="sling.servlet.resourceTypes" values.0="sling/user" values.1="sling/group" values.2="sling/userManager"
- * @scr.property name="sling.servlet.methods" value="POST" 
- * @scr.property name="sling.servlet.selectors" value="delete" 
+ * @scr.property name="sling.servlet.resourceTypes" values.0="sling/user"
+ *               values.1="sling/group" values.2="sling/userManager"
+ * @scr.property name="sling.servlet.methods" value="POST"
+ * @scr.property name="sling.servlet.selectors" value="delete"
  */
 public class DeleteAuthorizableServlet extends AbstractAuthorizablePostServlet {
-	private static final long serialVersionUID = 5874621724096106496L;
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet#handleOperation(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.servlets.HtmlResponse, java.util.List)
-	 */
-	@Override
-	protected void handleOperation(SlingHttpServletRequest request,
-			HtmlResponse htmlResponse, List<Modification> changes)
-			throws RepositoryException {
+    private static final long serialVersionUID = 5874621724096106496L;
+
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet
+     * #handleOperation(org.apache.sling.api.SlingHttpServletRequest,
+     * org.apache.sling.api.servlets.HtmlResponse, java.util.List)
+     */
+    @Override
+    protected void handleOperation(SlingHttpServletRequest request,
+            HtmlResponse htmlResponse, List<Modification> changes)
+            throws RepositoryException {
 
         Iterator<Resource> res = getApplyToResources(request);
         if (res == null) {
             Resource resource = request.getResource();
             Authorizable item = resource.adaptTo(Authorizable.class);
             if (item == null) {
-  	            String msg = "Missing source " + resource.getPath() + " for delete";
-  	            htmlResponse.setStatus(HttpServletResponse.SC_NOT_FOUND, msg);
-               	throw new ResourceNotFoundException(msg);
+                String msg = "Missing source " + resource.getPath()
+                    + " for delete";
+                htmlResponse.setStatus(HttpServletResponse.SC_NOT_FOUND, msg);
+                throw new ResourceNotFoundException(msg);
             }
 
             item.remove();
@@ -75,17 +81,16 @@ public class DeleteAuthorizableServlet extends AbstractAuthorizablePostServlet {
                 }
             }
         }
-	}
-	
-	
+    }
+
     /**
      * Returns an iterator on <code>Resource</code> instances addressed in the
      * {@link SlingPostConstants#RP_APPLY_TO} request parameter. If the request
-     * parameter is not set, <code>null</code> is returned. If the parameter
-     * is set with valid resources an empty iterator is returned. Any resources
+     * parameter is not set, <code>null</code> is returned. If the parameter is
+     * set with valid resources an empty iterator is returned. Any resources
      * addressed in the {@link SlingPostConstants#RP_APPLY_TO} parameter is
      * ignored.
-     *
+     * 
      * @param request The <code>SlingHttpServletRequest</code> object used to
      *            get the {@link SlingPostConstants#RP_APPLY_TO} parameter.
      * @return The iterator of resources listed in the parameter or
@@ -105,7 +110,9 @@ public class DeleteAuthorizableServlet extends AbstractAuthorizablePostServlet {
     private static class ApplyToIterator implements Iterator<Resource> {
 
         private final ResourceResolver resolver;
+
         private final Resource baseResource;
+
         private final String[] paths;
 
         private int pathIndex;
@@ -155,5 +162,5 @@ public class DeleteAuthorizableServlet extends AbstractAuthorizablePostServlet {
             return null;
         }
     }
-	
+
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/UpdateGroupServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/UpdateGroupServlet.java
index 4e433a8..5c06cf1 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/UpdateGroupServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/UpdateGroupServlet.java
@@ -31,55 +31,61 @@ import org.apache.sling.jackrabbit.usermanager.post.impl.RequestProperty;
 import org.apache.sling.servlets.post.Modification;
 
 /**
- * Sling Post Operation implementation for updating a group in the 
- * jackrabbit UserManager.
+ * Sling Post Operation implementation for updating a group in the jackrabbit
+ * UserManager.
  * 
  * @scr.component metatype="no" immediate="true"
  * @scr.service interface="javax.servlet.Servlet"
  * @scr.property name="sling.servlet.resourceTypes" values="sling/group"
- * @scr.property name="sling.servlet.methods" value="POST" 
- * @scr.property name="sling.servlet.selectors" value="update" 
+ * @scr.property name="sling.servlet.methods" value="POST"
+ * @scr.property name="sling.servlet.selectors" value="update"
  */
 public class UpdateGroupServlet extends AbstractGroupPostServlet {
-	private static final long serialVersionUID = -8292054361992488797L;
+    private static final long serialVersionUID = -8292054361992488797L;
 
-	/* (non-Javadoc)
-	 * @see org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet#handleOperation(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.servlets.HtmlResponse, java.util.List)
-	 */
-	@Override
-	protected void handleOperation(SlingHttpServletRequest request,
-			HtmlResponse htmlResponse, List<Modification> changes)
-			throws RepositoryException {
-		Authorizable authorizable = null;
-		Resource resource = request.getResource();
-		if (resource != null) {
-			authorizable = resource.adaptTo(Authorizable.class);
-		}
-		
-		//check that the group was located.
-		if (authorizable == null) {
-			throw new ResourceNotFoundException("Group to update could not be determined");
-		}
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet
+     * #handleOperation(org.apache.sling.api.SlingHttpServletRequest,
+     * org.apache.sling.api.servlets.HtmlResponse, java.util.List)
+     */
+    @Override
+    protected void handleOperation(SlingHttpServletRequest request,
+            HtmlResponse htmlResponse, List<Modification> changes)
+            throws RepositoryException {
+        Authorizable authorizable = null;
+        Resource resource = request.getResource();
+        if (resource != null) {
+            authorizable = resource.adaptTo(Authorizable.class);
+        }
 
-		Session session = request.getResourceResolver().adaptTo(Session.class);
-		if (session == null) {
-			throw new RepositoryException("JCR Session not found");
-		}
+        // check that the group was located.
+        if (authorizable == null) {
+            throw new ResourceNotFoundException(
+                "Group to update could not be determined");
+        }
 
-		Map<String, RequestProperty> reqProperties = collectContent(request, htmlResponse);
-		try {
-	        // cleanup any old content (@Delete parameters)
-	        processDeletes(authorizable, reqProperties, changes);
-				
-	        // write content from form
-	        writeContent(session, authorizable, reqProperties, changes);
-	        
-	        //update the group memberships
-			if (authorizable.isGroup()) {
-		        updateGroupMembership(request, authorizable, changes);
-			}
-		} catch (RepositoryException re) {
-			throw new RepositoryException("Failed to update group.", re);
-		}
-	}
+        Session session = request.getResourceResolver().adaptTo(Session.class);
+        if (session == null) {
+            throw new RepositoryException("JCR Session not found");
+        }
+
+        Map<String, RequestProperty> reqProperties = collectContent(request,
+            htmlResponse);
+        try {
+            // cleanup any old content (@Delete parameters)
+            processDeletes(authorizable, reqProperties, changes);
+
+            // write content from form
+            writeContent(session, authorizable, reqProperties, changes);
+
+            // update the group memberships
+            if (authorizable.isGroup()) {
+                updateGroupMembership(request, authorizable, changes);
+            }
+        } catch (RepositoryException re) {
+            throw new RepositoryException("Failed to update group.", re);
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/UpdateUserServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/UpdateUserServlet.java
index d0245c6..70d0501 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/UpdateUserServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/UpdateUserServlet.java
@@ -31,51 +31,57 @@ import org.apache.sling.jackrabbit.usermanager.post.impl.RequestProperty;
 import org.apache.sling.servlets.post.Modification;
 
 /**
- * Sling Post Operation implementation for updating a user in the 
- * jackrabbit UserManager.
+ * Sling Post Operation implementation for updating a user in the jackrabbit
+ * UserManager.
  * 
  * @scr.component metatype="no" immediate="true"
  * @scr.service interface="javax.servlet.Servlet"
  * @scr.property name="sling.servlet.resourceTypes" value="sling/user"
- * @scr.property name="sling.servlet.methods" value="POST" 
- * @scr.property name="sling.servlet.selectors" value="update" 
+ * @scr.property name="sling.servlet.methods" value="POST"
+ * @scr.property name="sling.servlet.selectors" value="update"
  */
 public class UpdateUserServlet extends AbstractUserPostServlet {
-	private static final long serialVersionUID = 5874621724096106496L;
+    private static final long serialVersionUID = 5874621724096106496L;
 
-	/* (non-Javadoc)
-	 * @see org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet#handleOperation(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.servlets.HtmlResponse, java.util.List)
-	 */
-	@Override
-	protected void handleOperation(SlingHttpServletRequest request,
-			HtmlResponse htmlResponse, List<Modification> changes)
-			throws RepositoryException {
-		Authorizable authorizable = null;
-		Resource resource = request.getResource();
-		if (resource != null) {
-			authorizable = resource.adaptTo(Authorizable.class);
-		}
-		
-		//check that the group was located.
-		if (authorizable == null) {
-			throw new ResourceNotFoundException("User to update could not be determined");
-		}
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.jackrabbit.usermanager.post.AbstractAuthorizablePostServlet
+     * #handleOperation(org.apache.sling.api.SlingHttpServletRequest,
+     * org.apache.sling.api.servlets.HtmlResponse, java.util.List)
+     */
+    @Override
+    protected void handleOperation(SlingHttpServletRequest request,
+            HtmlResponse htmlResponse, List<Modification> changes)
+            throws RepositoryException {
+        Authorizable authorizable = null;
+        Resource resource = request.getResource();
+        if (resource != null) {
+            authorizable = resource.adaptTo(Authorizable.class);
+        }
 
-		Session session = request.getResourceResolver().adaptTo(Session.class);
-		if (session == null) {
-			throw new RepositoryException("JCR Session not found");
-		}
+        // check that the group was located.
+        if (authorizable == null) {
+            throw new ResourceNotFoundException(
+                "User to update could not be determined");
+        }
 
-		Map<String, RequestProperty> reqProperties = collectContent(request, htmlResponse);
-		try {
-	        // cleanup any old content (@Delete parameters)
-	        processDeletes(authorizable, reqProperties, changes);
-				
-	        // write content from form
-	        writeContent(session, authorizable, reqProperties, changes);
+        Session session = request.getResourceResolver().adaptTo(Session.class);
+        if (session == null) {
+            throw new RepositoryException("JCR Session not found");
+        }
 
-		} catch (RepositoryException re) {
-			throw new RepositoryException("Failed to update user.", re);
-		}
-	}
+        Map<String, RequestProperty> reqProperties = collectContent(request,
+            htmlResponse);
+        try {
+            // cleanup any old content (@Delete parameters)
+            processDeletes(authorizable, reqProperties, changes);
+
+            // write content from form
+            writeContent(session, authorizable, reqProperties, changes);
+
+        } catch (RepositoryException re) {
+            throw new RepositoryException("Failed to update user.", re);
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/impl/DateParser.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/impl/DateParser.java
index 227ea4c..c2f4769 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/impl/DateParser.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/impl/DateParser.java
@@ -48,8 +48,9 @@ public class DateParser {
     private final List<DateFormat> formats = new LinkedList<DateFormat>();
 
     /**
-     * Registers a format string to the list of internally checked ones.
-     * Uses the {@link SimpleDateFormat}.
+     * Registers a format string to the list of internally checked ones. Uses
+     * the {@link SimpleDateFormat}.
+     * 
      * @param format format as in {@link SimpleDateFormat}
      * @throws IllegalArgumentException if the format is not valid.
      */
@@ -59,6 +60,7 @@ public class DateParser {
 
     /**
      * Registers a date format to the list of internally checked ones.
+     * 
      * @param format date format
      */
     public void register(DateFormat format) {
@@ -70,16 +72,17 @@ public class DateParser {
      * instance. If no format matches returns <code>null</code>.
      * <p/>
      * Note: method is synchronized because SimpleDateFormat is not.
-     *
+     * 
      * @param source date time source string
      * @return calendar representation of the source or <code>null</code>
      */
     public synchronized Calendar parse(String source) {
-        for (DateFormat fmt: formats) {
+        for (DateFormat fmt : formats) {
             try {
                 Date d = fmt.parse(source);
                 if (log.isDebugEnabled()) {
-                    log.debug("Parsed " + source + " using " + fmt + " into " + d);
+                    log.debug("Parsed " + source + " using " + fmt + " into "
+                        + d);
                 }
                 Calendar c = Calendar.getInstance();
                 c.setTime(d);
@@ -95,38 +98,38 @@ public class DateParser {
 
     /**
      * Parses the given source strings and returns the respective calendar
-     * instances. If no format matches for any of the sources
-     * returns <code>null</code>.
+     * instances. If no format matches for any of the sources returns
+     * <code>null</code>.
      * <p/>
      * Note: method is synchronized because SimpleDateFormat is not.
-     *
+     * 
      * @param sources date time source strings
      * @return calendar representations of the source or <code>null</code>
      */
     public synchronized Calendar[] parse(String sources[]) {
         Calendar ret[] = new Calendar[sources.length];
-        for (int i=0; i< sources.length; i++) {
+        for (int i = 0; i < sources.length; i++) {
             if ((ret[i] = parse(sources[i])) == null) {
                 return null;
             }
         }
         return ret;
     }
-    
+
     /**
      * Parses the given source strings and returns the respective jcr date value
-     * instances. If no format matches for any of the sources
-     * returns <code>null</code>.
+     * instances. If no format matches for any of the sources returns
+     * <code>null</code>.
      * <p/>
      * Note: method is synchronized because SimpleDateFormat is not.
-     *
+     * 
      * @param sources date time source strings
      * @param factory the value factory
      * @return jcr date value representations of the source or <code>null</code>
      */
     public synchronized Value[] parse(String sources[], ValueFactory factory) {
         Value ret[] = new Value[sources.length];
-        for (int i=0; i< sources.length; i++) {
+        for (int i = 0; i < sources.length; i++) {
             Calendar c = parse(sources[i]);
             if (c == null) {
                 return null;
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/impl/RequestProperty.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/impl/RequestProperty.java
index cca1323..481ab41 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/post/impl/RequestProperty.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/post/impl/RequestProperty.java
@@ -21,10 +21,9 @@ import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.servlets.post.SlingPostConstants;
 
 /**
- * This is a copy of the class from 'org.apache.sling.servlets.post.impl.helper' which is not exported.
- * 
- * Encapsulates all infos from the respective request parameters that are needed
- * to create the repository property
+ * This is a copy of the class from 'org.apache.sling.servlets.post.impl.helper'
+ * which is not exported. Encapsulates all infos from the respective request
+ * parameters that are needed to create the repository property
  */
 public class RequestProperty {
 
@@ -74,7 +73,7 @@ public class RequestProperty {
     }
 
     public void setTypeHintValue(String typeHint) {
-        if ( typeHint != null && typeHint.endsWith("[]") ) {
+        if (typeHint != null && typeHint.endsWith("[]")) {
             this.typeHint = typeHint.substring(0, typeHint.length() - 2);
             this.hasMultiValueTypeHint = true;
         } else {
@@ -126,7 +125,7 @@ public class RequestProperty {
     /**
      * Checks if this property provides any values. this is the case if one of
      * the values is not empty or if the default handling is not 'ignore'
-     *
+     * 
      * @return <code>true</code> if this property provides values
      */
     public boolean providesValue() {
@@ -148,7 +147,7 @@ public class RequestProperty {
     /**
      * Returns the assembled string array out of the provided request values and
      * default values.
-     *
+     * 
      * @return a String array or <code>null</code> if the property needs to be
      *         removed.
      */
@@ -185,7 +184,7 @@ public class RequestProperty {
     /**
      * Specifies whether this property should be deleted before any new content
      * is to be set according to the values stored.
-     *
+     * 
      * @param isDelete <code>true</code> if the repository item described by
      *            this is to be deleted before any other operation.
      */
@@ -194,8 +193,8 @@ public class RequestProperty {
     }
 
     /**
-     * Returns <code>true</code> if the repository item described by this is
-     * to be deleted before setting new content to it.
+     * Returns <code>true</code> if the repository item described by this is to
+     * be deleted before setting new content to it.
      */
     public boolean isDelete() {
         return isDelete;
@@ -205,7 +204,7 @@ public class RequestProperty {
      * Sets the path of the repository item from which the content for this
      * property is to be copied or moved. The path may be relative in which case
      * it will be resolved relative to the absolute path of this property.
-     *
+     * 
      * @param sourcePath The path of the repository item to get the content from
      * @param isMove <code>true</code> if the source content is to be moved,
      *            otherwise the source content is copied from the repository
@@ -224,9 +223,9 @@ public class RequestProperty {
     }
 
     /**
-     * Returns <code>true</code> if the content of this property is to be set
-     * by moving content from another repository item.
-     *
+     * Returns <code>true</code> if the content of this property is to be set by
+     * moving content from another repository item.
+     * 
      * @see #getRepositorySource()
      */
     public boolean hasRepositoryMoveSource() {
@@ -234,9 +233,9 @@ public class RequestProperty {
     }
 
     /**
-     * Returns <code>true</code> if the content of this property is to be set
-     * by copying content from another repository item.
-     *
+     * Returns <code>true</code> if the content of this property is to be set by
+     * copying content from another repository item.
+     * 
      * @see #getRepositorySource()
      */
     public boolean hasRepositoryCopySource() {
@@ -246,7 +245,7 @@ public class RequestProperty {
     /**
      * Returns the absolute path of the repository item from which the content
      * for this property is to be copied or moved.
-     *
+     * 
      * @see #hasRepositoryCopySource()
      * @see #hasRepositoryMoveSource()
      * @see #setRepositorySource(String, boolean)
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableResource.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableResource.java
index c158d46..aac15c5 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableResource.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableResource.java
@@ -16,7 +16,6 @@
  */
 package org.apache.sling.jackrabbit.usermanager.resource;
 
-
 import java.util.Map;
 
 import javax.jcr.RepositoryException;
@@ -29,91 +28,102 @@ import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ValueMap;
 
 /**
- * Resource implementation for Authorizable 
+ * Resource implementation for Authorizable
  */
 public class AuthorizableResource extends SlingAdaptable implements Resource {
-	private Authorizable authorizable = null;
-	private ResourceResolver resourceResolver = null;
+    private Authorizable authorizable = null;
+
+    private ResourceResolver resourceResolver = null;
+
     private final String path;
+
     private final String resourceType;
+
     private final ResourceMetadata metadata;
-	
-	public AuthorizableResource(Authorizable authorizable,
-			ResourceResolver resourceResolver, String path) {
-		super();
 
-		this.resourceResolver = resourceResolver;
+    public AuthorizableResource(Authorizable authorizable,
+            ResourceResolver resourceResolver, String path) {
+        super();
+
+        this.resourceResolver = resourceResolver;
         this.authorizable = authorizable;
         this.path = path;
         if (authorizable.isGroup()) {
-        	this.resourceType = "sling:group";
+            this.resourceType = "sling:group";
         } else {
-        	this.resourceType = "sling:user";
+            this.resourceType = "sling:user";
         }
 
         this.metadata = new ResourceMetadata();
         metadata.setResolutionPath(path);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.resource.Resource#getPath()
-	 */
-	public String getPath() {
-		return path;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.resource.Resource#getResourceMetadata()
-	 */
-	public ResourceMetadata getResourceMetadata() {
-		return metadata;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.resource.Resource#getResourceResolver()
-	 */
-	public ResourceResolver getResourceResolver() {
-		return resourceResolver;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.resource.Resource#getResourceSuperType()
-	 */
-	public String getResourceSuperType() {
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.resource.Resource#getResourceType()
-	 */
-	public String getResourceType() {
-		return resourceType;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.adapter.Adaptable#adaptTo(java.lang.Class)
-	 */
-	@SuppressWarnings("unchecked")
-	public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
-		if (type == Map.class || type == ValueMap.class) {
-			return (AdapterType) new AuthorizableValueMap(authorizable); // unchecked cast
-		} else if (type == Authorizable.class) {
-			return (AdapterType)authorizable;
-		}
-		
-		return super.adaptTo(type);
-	}
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.sling.api.resource.Resource#getPath()
+     */
+    public String getPath() {
+        return path;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.sling.api.resource.Resource#getResourceMetadata()
+     */
+    public ResourceMetadata getResourceMetadata() {
+        return metadata;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.sling.api.resource.Resource#getResourceResolver()
+     */
+    public ResourceResolver getResourceResolver() {
+        return resourceResolver;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.sling.api.resource.Resource#getResourceSuperType()
+     */
+    public String getResourceSuperType() {
+        return null;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.sling.api.resource.Resource#getResourceType()
+     */
+    public String getResourceType() {
+        return resourceType;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.sling.api.adapter.Adaptable#adaptTo(java.lang.Class)
+     */
+    @SuppressWarnings("unchecked")
+    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+        if (type == Map.class || type == ValueMap.class) {
+            return (AdapterType) new AuthorizableValueMap(authorizable); // unchecked
+                                                                         // cast
+        } else if (type == Authorizable.class) {
+            return (AdapterType) authorizable;
+        }
+
+        return super.adaptTo(type);
+    }
 
     public String toString() {
         String id = null;
         if (authorizable != null) {
             try {
-				id = authorizable.getID();
-			} catch (RepositoryException e) {
-				//ignore it.
-			}
+                id = authorizable.getID();
+            } catch (RepositoryException e) {
+                // ignore it.
+            }
         }
-        return getClass().getSimpleName() + ", id=" + id
-            + ", path=" + getPath();
+        return getClass().getSimpleName() + ", id=" + id + ", path="
+            + getPath();
     }
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableResourceProvider.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableResourceProvider.java
index af864b6..b1eeb13 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableResourceProvider.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableResourceProvider.java
@@ -44,177 +44,204 @@ import org.slf4j.LoggerFactory;
  * @scr.component immediate="true" label="%authorizable.resourceprovider.name"
  *                description="authorizable.resourceprovider.description"
  * @scr.property name="service.description"
- *                value="Resource provider implementation for UserManager resources"
+ *               value="Resource provider implementation for UserManager resources"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
  * @scr.property name="provider.roots" value="/system/userManager/"
  * @scr.service interface="org.apache.sling.api.resource.ResourceProvider"
  */
 public class AuthorizableResourceProvider implements ResourceProvider {
-	
+
     /**
      * default log
      */
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-	public static final String SYSTEM_USER_MANAGER_PATH = "/system/userManager";
+    public static final String SYSTEM_USER_MANAGER_PATH = "/system/userManager";
+
+    public static final String SYSTEM_USER_MANAGER_USER_PATH = SYSTEM_USER_MANAGER_PATH
+        + "/user";
+
+    public static final String SYSTEM_USER_MANAGER_GROUP_PATH = SYSTEM_USER_MANAGER_PATH
+        + "/group";
 
-	public static final String SYSTEM_USER_MANAGER_USER_PATH = SYSTEM_USER_MANAGER_PATH + "/user";
-	public static final String SYSTEM_USER_MANAGER_GROUP_PATH = SYSTEM_USER_MANAGER_PATH + "/group";
+    public static final String SYSTEM_USER_MANAGER_USER_PREFIX = SYSTEM_USER_MANAGER_USER_PATH
+        + "/";
 
-	public static final String SYSTEM_USER_MANAGER_USER_PREFIX = SYSTEM_USER_MANAGER_USER_PATH + "/";
-	public static final String SYSTEM_USER_MANAGER_GROUP_PREFIX = SYSTEM_USER_MANAGER_GROUP_PATH + "/";
+    public static final String SYSTEM_USER_MANAGER_GROUP_PREFIX = SYSTEM_USER_MANAGER_GROUP_PATH
+        + "/";
 
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.resource.ResourceProvider#getResource(org.apache.sling.api.resource.ResourceResolver, javax.servlet.http.HttpServletRequest, java.lang.String)
-	 */
-	public Resource getResource(ResourceResolver resourceResolver,
-			HttpServletRequest request, String path) {
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.api.resource.ResourceProvider#getResource(org.apache
+     * .sling.api.resource.ResourceResolver,
+     * javax.servlet.http.HttpServletRequest, java.lang.String)
+     */
+    public Resource getResource(ResourceResolver resourceResolver,
+            HttpServletRequest request, String path) {
         return getResource(resourceResolver, path);
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.resource.ResourceProvider#getResource(org.apache.sling.api.resource.ResourceResolver, java.lang.String)
-	 */
-	public Resource getResource(ResourceResolver resourceResolver, String path) {
-		
-		//handle resources for the virtual container resources
-		if (path.equals(SYSTEM_USER_MANAGER_PATH)) {
-			return new SyntheticResource(resourceResolver, path, "sling:userManager");
-		} else if (path.equals(SYSTEM_USER_MANAGER_USER_PATH)) {
-			return new SyntheticResource(resourceResolver, path, "sling:users");
-		} else if (path.equals(SYSTEM_USER_MANAGER_GROUP_PATH)) {
-			return new SyntheticResource(resourceResolver, path, "sling:groups");
-		}
-		
-		// the principalId should be the first segment after the prefix
-		String pid = null;
-		if (path.startsWith(SYSTEM_USER_MANAGER_USER_PREFIX)) {
-			pid = path.substring(SYSTEM_USER_MANAGER_USER_PREFIX.length());
-		} else if (path.startsWith(SYSTEM_USER_MANAGER_GROUP_PREFIX)) {
-			pid = path.substring(SYSTEM_USER_MANAGER_GROUP_PREFIX.length());
-		}
-		
-		if (pid != null) {
-			if (pid.indexOf('/') != -1) {
-				return null; //something bogus on the end of the path so bail out now.
-			}
-			try {
-				Session session = resourceResolver.adaptTo(Session.class);
-				if (session != null) {
-					UserManager userManager = AccessControlUtil.getUserManager(session);
-					if (userManager != null) {
-						Authorizable authorizable = userManager.getAuthorizable(pid);
-						if (authorizable != null) {
-							//found the Authorizable, so return the resource that wraps it.
-							return new AuthorizableResource(authorizable, resourceResolver, path);
-						}
-					}
-				}
-			} catch (RepositoryException re) {
-				throw new SlingException("Error looking up Authorizable for principal: " + pid, re);
-			}
-		}
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.api.resource.ResourceProvider#getResource(org.apache
+     * .sling.api.resource.ResourceResolver, java.lang.String)
+     */
+    public Resource getResource(ResourceResolver resourceResolver, String path) {
+
+        // handle resources for the virtual container resources
+        if (path.equals(SYSTEM_USER_MANAGER_PATH)) {
+            return new SyntheticResource(resourceResolver, path,
+                "sling:userManager");
+        } else if (path.equals(SYSTEM_USER_MANAGER_USER_PATH)) {
+            return new SyntheticResource(resourceResolver, path, "sling:users");
+        } else if (path.equals(SYSTEM_USER_MANAGER_GROUP_PATH)) {
+            return new SyntheticResource(resourceResolver, path, "sling:groups");
+        }
+
+        // the principalId should be the first segment after the prefix
+        String pid = null;
+        if (path.startsWith(SYSTEM_USER_MANAGER_USER_PREFIX)) {
+            pid = path.substring(SYSTEM_USER_MANAGER_USER_PREFIX.length());
+        } else if (path.startsWith(SYSTEM_USER_MANAGER_GROUP_PREFIX)) {
+            pid = path.substring(SYSTEM_USER_MANAGER_GROUP_PREFIX.length());
+        }
+
+        if (pid != null) {
+            if (pid.indexOf('/') != -1) {
+                return null; // something bogus on the end of the path so bail
+                             // out now.
+            }
+            try {
+                Session session = resourceResolver.adaptTo(Session.class);
+                if (session != null) {
+                    UserManager userManager = AccessControlUtil.getUserManager(session);
+                    if (userManager != null) {
+                        Authorizable authorizable = userManager.getAuthorizable(pid);
+                        if (authorizable != null) {
+                            // found the Authorizable, so return the resource
+                            // that wraps it.
+                            return new AuthorizableResource(authorizable,
+                                resourceResolver, path);
+                        }
+                    }
+                }
+            } catch (RepositoryException re) {
+                throw new SlingException(
+                    "Error looking up Authorizable for principal: " + pid, re);
+            }
+        }
         return null;
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.apache.sling.api.resource.ResourceProvider#listChildren(org.apache.sling.api.resource.Resource)
-	 */
-	public Iterator<Resource> listChildren(Resource parent) {
-		if (parent == null) {
-			throw new NullPointerException("parent is null");
-		}
-		try {
-			String path = parent.getPath();
-			ResourceResolver resourceResolver = parent.getResourceResolver();
-
-			//handle children of /system/userManager
-			if (SYSTEM_USER_MANAGER_PATH.equals(path)) {
-				List<Resource> resources = new ArrayList<Resource>();
-				if (resourceResolver != null) {
-					resources.add(getResource(resourceResolver, SYSTEM_USER_MANAGER_USER_PATH));	
-					resources.add(getResource(resourceResolver, SYSTEM_USER_MANAGER_GROUP_PATH));	
-				}
-				return resources.iterator();
-			}
-			
-			int searchType = -1;
-			if (SYSTEM_USER_MANAGER_USER_PATH.equals(path)) {
-				searchType = PrincipalManager.SEARCH_TYPE_NOT_GROUP;
-			} else if (SYSTEM_USER_MANAGER_GROUP_PATH.equals(path)) {
-				searchType = PrincipalManager.SEARCH_TYPE_GROUP;
-			}
-			if (searchType != -1) {
-				PrincipalIterator principals = null;
-
-				//TODO: this actually does not work correctly since the jackrabbit findPrincipals API 
-				// currently does an exact match of the search filter so it won't match a wildcard
-				Session session = resourceResolver.adaptTo(Session.class);
-				if (session != null) {
-					PrincipalManager principalManager = AccessControlUtil.getPrincipalManager(session);
-					principals = principalManager.findPrincipals(".*", PrincipalManager.SEARCH_TYPE_NOT_GROUP);
-				}
-
-				
-				if (principals != null) {
-					return new ChildrenIterator(parent, principals);
-				}
-			}
-		} catch (RepositoryException re) {
-			throw new SlingException("Error listing children of resource: " + parent.getPath(), re);
-		}
-
-		return null;
-	}
-	
-	
-
-	private final class ChildrenIterator implements Iterator<Resource> {
-		private PrincipalIterator principals;
-		private Resource parent;
-
-		public ChildrenIterator(Resource parent, PrincipalIterator principals) {
-			this.parent = parent;
-			this.principals = principals;
-		}
-
-		public boolean hasNext() {
-			return principals.hasNext();
-		}
-
-		public Resource next() {
-			Principal nextPrincipal = principals.nextPrincipal();
-			try {
-				ResourceResolver resourceResolver = parent.getResourceResolver();
-				if (resourceResolver != null) {
-					Session session = resourceResolver.adaptTo(Session.class);
-					if (session != null) {
-						UserManager userManager = AccessControlUtil.getUserManager(session);
-						if (userManager != null) {
-							Authorizable authorizable = userManager.getAuthorizable(nextPrincipal.getName());
-							if (authorizable != null) {
-								String path;
-								if (authorizable.isGroup()) {
-									path = SYSTEM_USER_MANAGER_GROUP_PREFIX + nextPrincipal.getName();
-								} else {
-									path = SYSTEM_USER_MANAGER_USER_PREFIX + nextPrincipal.getName();
-								}
-								return new AuthorizableResource(authorizable, resourceResolver, path);
-							}
-						}
-					}
-				}
-			} catch (RepositoryException re) {
-                log.error("Exception while looking up authorizable resource.", re);
-			}
-			return null;
-		}
-
-		public void remove() {
-			throw new UnsupportedOperationException();
-		}
-	}
-	
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.sling.api.resource.ResourceProvider#listChildren(org.apache
+     * .sling.api.resource.Resource)
+     */
+    public Iterator<Resource> listChildren(Resource parent) {
+        if (parent == null) {
+            throw new NullPointerException("parent is null");
+        }
+        try {
+            String path = parent.getPath();
+            ResourceResolver resourceResolver = parent.getResourceResolver();
+
+            // handle children of /system/userManager
+            if (SYSTEM_USER_MANAGER_PATH.equals(path)) {
+                List<Resource> resources = new ArrayList<Resource>();
+                if (resourceResolver != null) {
+                    resources.add(getResource(resourceResolver,
+                        SYSTEM_USER_MANAGER_USER_PATH));
+                    resources.add(getResource(resourceResolver,
+                        SYSTEM_USER_MANAGER_GROUP_PATH));
+                }
+                return resources.iterator();
+            }
+
+            int searchType = -1;
+            if (SYSTEM_USER_MANAGER_USER_PATH.equals(path)) {
+                searchType = PrincipalManager.SEARCH_TYPE_NOT_GROUP;
+            } else if (SYSTEM_USER_MANAGER_GROUP_PATH.equals(path)) {
+                searchType = PrincipalManager.SEARCH_TYPE_GROUP;
+            }
+            if (searchType != -1) {
+                PrincipalIterator principals = null;
+
+                // TODO: this actually does not work correctly since the
+                // jackrabbit findPrincipals API
+                // currently does an exact match of the search filter so it
+                // won't match a wildcard
+                Session session = resourceResolver.adaptTo(Session.class);
+                if (session != null) {
+                    PrincipalManager principalManager = AccessControlUtil.getPrincipalManager(session);
+                    principals = principalManager.findPrincipals(".*",
+                        PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+                }
+
+                if (principals != null) {
+                    return new ChildrenIterator(parent, principals);
+                }
+            }
+        } catch (RepositoryException re) {
+            throw new SlingException("Error listing children of resource: "
+                + parent.getPath(), re);
+        }
+
+        return null;
+    }
+
+    private final class ChildrenIterator implements Iterator<Resource> {
+        private PrincipalIterator principals;
+
+        private Resource parent;
+
+        public ChildrenIterator(Resource parent, PrincipalIterator principals) {
+            this.parent = parent;
+            this.principals = principals;
+        }
+
+        public boolean hasNext() {
+            return principals.hasNext();
+        }
+
+        public Resource next() {
+            Principal nextPrincipal = principals.nextPrincipal();
+            try {
+                ResourceResolver resourceResolver = parent.getResourceResolver();
+                if (resourceResolver != null) {
+                    Session session = resourceResolver.adaptTo(Session.class);
+                    if (session != null) {
+                        UserManager userManager = AccessControlUtil.getUserManager(session);
+                        if (userManager != null) {
+                            Authorizable authorizable = userManager.getAuthorizable(nextPrincipal.getName());
+                            if (authorizable != null) {
+                                String path;
+                                if (authorizable.isGroup()) {
+                                    path = SYSTEM_USER_MANAGER_GROUP_PREFIX
+                                        + nextPrincipal.getName();
+                                } else {
+                                    path = SYSTEM_USER_MANAGER_USER_PREFIX
+                                        + nextPrincipal.getName();
+                                }
+                                return new AuthorizableResource(authorizable,
+                                    resourceResolver, path);
+                            }
+                        }
+                    }
+                }
+            } catch (RepositoryException re) {
+                log.error("Exception while looking up authorizable resource.",
+                    re);
+            }
+            return null;
+        }
+
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+    }
+
 }
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableValueMap.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableValueMap.java
index 3dafa19..88c7c1c 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableValueMap.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/resource/AuthorizableValueMap.java
@@ -45,10 +45,15 @@ import org.slf4j.LoggerFactory;
  */
 public class AuthorizableValueMap implements ValueMap {
     private Logger logger = LoggerFactory.getLogger(AuthorizableValueMap.class);
-    private Set<String> hiddenProperties = new HashSet<String>(Arrays.asList(new String[]{"rep:password", "jcr:uuid"}));
-	private boolean fullyRead;
+
+    private Set<String> hiddenProperties = new HashSet<String>(
+        Arrays.asList(new String[] { "rep:password", "jcr:uuid" }));
+
+    private boolean fullyRead;
+
     private final Map<String, Object> cache;
-	private Authorizable authorizable;
+
+    private Authorizable authorizable;
 
     public AuthorizableValueMap(Authorizable authorizable) {
         this.authorizable = authorizable;
@@ -56,17 +61,17 @@ public class AuthorizableValueMap implements ValueMap {
         this.fullyRead = false;
     }
 
-	@SuppressWarnings("unchecked")
-	public <T> T get(String name, Class<T> type) {
+    @SuppressWarnings("unchecked")
+    public <T> T get(String name, Class<T> type) {
         if (type == null) {
             return (T) get(name);
         }
 
         return convertToType(name, type);
-	}
+    }
 
-	@SuppressWarnings("unchecked")
-	public <T> T get(String name, T defaultValue) {
+    @SuppressWarnings("unchecked")
+    public <T> T get(String name, T defaultValue) {
         if (defaultValue == null) {
             return (T) get(name);
         }
@@ -81,51 +86,50 @@ public class AuthorizableValueMap implements ValueMap {
         }
 
         return value;
-	}
+    }
 
-	public boolean containsKey(Object key) {
+    public boolean containsKey(Object key) {
         return get(key) != null;
-	}
+    }
 
-	public boolean containsValue(Object value) {
+    public boolean containsValue(Object value) {
         readFully();
         return cache.containsValue(value);
-	}
+    }
 
-	public Set<java.util.Map.Entry<String, Object>> entrySet() {
+    public Set<java.util.Map.Entry<String, Object>> entrySet() {
         readFully();
         return cache.entrySet();
-	}
+    }
 
-	public Object get(Object key) {
+    public Object get(Object key) {
         Object value = cache.get(key);
         if (value == null) {
             value = read((String) key);
         }
 
         return value;
-	}
-
+    }
 
-	public Set<String> keySet() {
+    public Set<String> keySet() {
         readFully();
         return cache.keySet();
-	}
+    }
 
-	public int size() {
+    public int size() {
         readFully();
         return cache.size();
-	}
+    }
 
-	public boolean isEmpty() {
+    public boolean isEmpty() {
         return size() == 0;
-	}
+    }
 
-	public Collection<Object> values() {
+    public Collection<Object> values() {
         readFully();
         return cache.values();
-	}
-	
+    }
+
     protected Object read(String key) {
 
         // if the item has been completely read, we need not check
@@ -135,14 +139,14 @@ public class AuthorizableValueMap implements ValueMap {
         }
 
         if (hiddenProperties.contains(key)) {
-        	return null;
+            return null;
         }
-        
+
         try {
             if (authorizable.hasProperty(key)) {
                 Value[] property = authorizable.getProperty(key);
                 Object value = valuesToJavaObject(property);
-            	cache.put(key, value);
+                cache.put(key, value);
                 return value;
             }
         } catch (RepositoryException re) {
@@ -152,37 +156,38 @@ public class AuthorizableValueMap implements ValueMap {
         // property not found or some error accessing it
         return null;
     }
-    
-    protected Object valuesToJavaObject(Value [] values) throws RepositoryException {
+
+    protected Object valuesToJavaObject(Value[] values)
+            throws RepositoryException {
         if (values == null) {
-        	return null;
+            return null;
         } else if (values.length == 1) {
-        	return JcrResourceUtil.toJavaObject(values[0]);
+            return JcrResourceUtil.toJavaObject(values[0]);
         } else {
-        	Object [] valuesObjs = new Object[values.length];
-        	for (int i=0; i < values.length; i++) {
-        		valuesObjs[i] = JcrResourceUtil.toJavaObject(values[i]);
-        	}
-        	return valuesObjs;
+            Object[] valuesObjs = new Object[values.length];
+            for (int i = 0; i < values.length; i++) {
+                valuesObjs[i] = JcrResourceUtil.toJavaObject(values[i]);
+            }
+            return valuesObjs;
         }
     }
-	
+
     @SuppressWarnings("unchecked")
-	protected void readFully() {
+    protected void readFully() {
         if (!fullyRead) {
             try {
                 Iterator pi = authorizable.getPropertyNames();
                 while (pi.hasNext()) {
-                    String key = (String)pi.next();
+                    String key = (String) pi.next();
 
                     if (hiddenProperties.contains(key)) {
-                    	continue; //skip it.
+                        continue; // skip it.
                     }
 
                     if (!cache.containsKey(key)) {
-	                    Value[] property = authorizable.getProperty(key);
-	                    Object value = valuesToJavaObject(property);
-                    	cache.put(key, value);
+                        Value[] property = authorizable.getProperty(key);
+                        Object value = valuesToJavaObject(property);
+                        cache.put(key, value);
                     }
                 }
                 fullyRead = true;
@@ -191,24 +196,25 @@ public class AuthorizableValueMap implements ValueMap {
             }
         }
     }
-	
+
     // ---------- Unsupported Modification methods
-	
-	public Object remove(Object arg0) {
+
+    public Object remove(Object arg0) {
         throw new UnsupportedOperationException();
-	}
-	public void clear() {
+    }
+
+    public void clear() {
         throw new UnsupportedOperationException();
-	}
-	public Object put(String arg0, Object arg1) {
+    }
+
+    public Object put(String arg0, Object arg1) {
         throw new UnsupportedOperationException();
-	}
+    }
 
-	public void putAll(Map<? extends String, ? extends Object> arg0) {
+    public void putAll(Map<? extends String, ? extends Object> arg0) {
         throw new UnsupportedOperationException();
-	}	
-	
-	
+    }
+
     // ---------- Implementation helper
 
     @SuppressWarnings("unchecked")
@@ -220,9 +226,9 @@ public class AuthorizableValueMap implements ValueMap {
                 Value[] values = authorizable.getProperty(name);
 
                 if (values == null) {
-                	return null;
+                    return null;
                 }
-                
+
                 boolean multiValue = values.length > 1;
                 boolean array = type.isArray();
 
@@ -236,8 +242,8 @@ public class AuthorizableValueMap implements ValueMap {
                 } else {
                     Value value = values[0];
                     if (array) {
-                        result = (T) convertToArray(
-                            new Value[] { value }, type.getComponentType());
+                        result = (T) convertToArray(new Value[] { value },
+                            type.getComponentType());
                     } else {
                         result = convertToType(-1, value, type);
                     }
@@ -254,26 +260,26 @@ public class AuthorizableValueMap implements ValueMap {
         // fall back to nothing
         return result;
     }
-	
+
     private <T> T[] convertToArray(Value[] jcrValues, Class<T> type)
-    	throws ValueFormatException, RepositoryException {
-    	List<T> values = new ArrayList<T>();
-    	for (int i = 0; i < jcrValues.length; i++) {
-    		T value = convertToType(i, jcrValues[i], type);
-    		if (value != null) {
-    			values.add(value);
-    		}
-    	}
-
-    	@SuppressWarnings("unchecked")
-    	T[] result = (T[]) Array.newInstance(type, values.size());
-
-    	return values.toArray(result);
+            throws ValueFormatException, RepositoryException {
+        List<T> values = new ArrayList<T>();
+        for (int i = 0; i < jcrValues.length; i++) {
+            T value = convertToType(i, jcrValues[i], type);
+            if (value != null) {
+                values.add(value);
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        T[] result = (T[]) Array.newInstance(type, values.size());
+
+        return values.toArray(result);
     }
-    
+
     @SuppressWarnings("unchecked")
-    private <T> T convertToType(int index, Value jcrValue,
-            Class<T> type) throws ValueFormatException, RepositoryException {
+    private <T> T convertToType(int index, Value jcrValue, Class<T> type)
+            throws ValueFormatException, RepositoryException {
 
         if (String.class == type) {
             return (T) jcrValue.getString();
@@ -302,7 +308,7 @@ public class AuthorizableValueMap implements ValueMap {
         // fallback in case of unsupported type
         return null;
     }
-    
+
     private Class<?> normalizeClass(Class<?> type) {
         if (Calendar.class.isAssignableFrom(type)) {
             type = Calendar.class;
@@ -315,5 +321,5 @@ public class AuthorizableValueMap implements ValueMap {
         }
         return type;
     }
-	
+
 }
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.