SLING-10038 resolve code quality warnings and issues reported by sonar (#1)

SLING-10038 resolve code quality warnings and issues reported by sonar
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java
index 1866ae0..4e679f8 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java
@@ -40,6 +40,7 @@
 import javax.jcr.security.Privilege;
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
 import org.apache.sling.jcr.base.util.AccessControlUtil;
 
 /**
@@ -68,8 +69,7 @@
 	 */
 	public Privilege [] getSupportedPrivileges(Session session, String absPath) throws RepositoryException {
 		AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(session);
-		Privilege[] supportedPrivileges = accessControlManager.getSupportedPrivileges(absPath);
-		return supportedPrivileges;
+		return accessControlManager.getSupportedPrivileges(absPath);
 	}
 	
 	/**
@@ -77,10 +77,10 @@
 	 * and/or denied for a specific principal.
 	 */
 	public static class AccessRights {
-		private Set<Privilege> granted = new HashSet<Privilege>();
-		private Set<Privilege> denied = new HashSet<Privilege>();
+		private Set<Privilege> granted = new HashSet<>();
+		private Set<Privilege> denied = new HashSet<>();
 
-		private transient static ResourceBundle resBundle = null; 
+		private ResourceBundle resBundle = null;
 		private ResourceBundle getResourceBundle(Locale locale) {
 			if (resBundle == null || !resBundle.getLocale().equals(locale)) {
 				resBundle = ResourceBundle.getBundle(getClass().getPackage().getName() + ".PrivilegesResources", locale);
@@ -110,10 +110,10 @@
 					//check if the single privilege is jcr:all or jcr:read
 					Iterator<Privilege> iterator = granted.iterator();
 					Privilege next = iterator.next();
-					if ("jcr:all".equals(next.getName())) {
+					if (PrivilegeConstants.JCR_ALL.equals(next.getName())) {
 						//full control privilege set
 						return getResourceBundle(locale).getString("privilegeset.all");
-					} else if ("jcr:read".equals(next.getName())) {
+					} else if (PrivilegeConstants.JCR_READ.equals(next.getName())) {
 						//readonly privilege set
 						return getResourceBundle(locale).getString("privilegeset.readonly");
 					} 
@@ -122,8 +122,8 @@
 					Iterator<Privilege> iterator = granted.iterator();
 					Privilege next = iterator.next();
 					Privilege next2 = iterator.next();
-					if ( ("jcr:read".equals(next.getName()) && "jcr:write".equals(next2.getName())) ||
-							("jcr:read".equals(next2.getName()) && "jcr:write".equals(next.getName())) ) {
+					if ( (PrivilegeConstants.JCR_READ.equals(next.getName()) && PrivilegeConstants.JCR_WRITE.equals(next2.getName())) ||
+							(PrivilegeConstants.JCR_READ.equals(next2.getName()) && PrivilegeConstants.JCR_WRITE.equals(next.getName())) ) {
 						//read/write privileges
 						return getResourceBundle(locale).getString("privilegeset.readwrite");
 					}
@@ -144,8 +144,7 @@
 	 * @throws RepositoryException if any errors reading the information
 	 */
 	public Map<Principal, AccessRights> getDeclaredAccessRights(Node node) throws RepositoryException {
-		Map<Principal, AccessRights> accessRights = getDeclaredAccessRights(node.getSession(), node.getPath());
-		return accessRights;
+		return getDeclaredAccessRights(node.getSession(), node.getPath());
 	}
 	
 	/**
@@ -158,39 +157,19 @@
 	 * @throws RepositoryException if any errors reading the information
 	 */
 	public Map<Principal, AccessRights> getDeclaredAccessRights(Session session, String absPath) throws RepositoryException {
-		Map<Principal, AccessRights> accessMap = new LinkedHashMap<Principal, AccessRights>();
 		AccessControlEntry[] entries = getDeclaredAccessControlEntries(session, absPath);
-		if (entries != null) {
-			for (AccessControlEntry ace : entries) {
-				Principal principal = ace.getPrincipal();
-				AccessRights accessPrivileges = accessMap.get(principal);
-				if (accessPrivileges == null) {
-					accessPrivileges = new AccessRights();
-					accessMap.put(principal, accessPrivileges);
-				}
-				boolean allow = AccessControlUtil.isAllow(ace);
-				if (allow) {
-					accessPrivileges.getGranted().addAll(Arrays.asList(ace.getPrivileges()));
-				} else {
-					accessPrivileges.getDenied().addAll(Arrays.asList(ace.getPrivileges()));
-				}
-			}
-		}
-		
-		return accessMap;
+		return mergePrivilegesFromEntries(entries);
 	}
 
 	private AccessControlEntry[] getDeclaredAccessControlEntries(Session session, String absPath) throws RepositoryException {
 		AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(session);
 		AccessControlPolicy[] policies = accessControlManager.getPolicies(absPath);
 		
-        List<AccessControlEntry> allEntries = new ArrayList<AccessControlEntry>(); 
+        List<AccessControlEntry> allEntries = new ArrayList<>();
         for (AccessControlPolicy accessControlPolicy : policies) {
             if (accessControlPolicy instanceof AccessControlList) {
                 AccessControlEntry[] accessControlEntries = ((AccessControlList)accessControlPolicy).getAccessControlEntries();
-                for (AccessControlEntry accessControlEntry : accessControlEntries) {
-					allEntries.add(accessControlEntry);
-				}
+                allEntries.addAll(Arrays.asList(accessControlEntries));
             }
         }
         return allEntries.toArray(new AccessControlEntry[allEntries.size()]);
@@ -270,23 +249,22 @@
 		AccessControlEntry[] entries = getDeclaredAccessControlEntries(session, absPath);
 		if (entries != null) {
 			for (AccessControlEntry ace : entries) {
-				if (principalId.equals(ace.getPrincipal().getName())) {
-					if (ace instanceof JackrabbitAccessControlEntry) {
-						JackrabbitAccessControlEntry jace = (JackrabbitAccessControlEntry)ace;
-						String[] restrictionNames = jace.getRestrictionNames();
-						if (restrictionNames != null) {
-							for (String name : restrictionNames) {
-								try {
-									Value value = jace.getRestriction(name);
-									if (value != null) {
-										restrictions.put(name, value);
-									}									
-								} catch (ValueFormatException vfe) {
-									//try multi-value restriction
-									Value[] values = jace.getRestrictions(name);
-									if (values != null && values.length > 0) {
-										restrictions.put(name,  values);
-									}
+				if (principalId.equals(ace.getPrincipal().getName()) &&
+						ace instanceof JackrabbitAccessControlEntry) {
+					JackrabbitAccessControlEntry jace = (JackrabbitAccessControlEntry)ace;
+					String[] restrictionNames = jace.getRestrictionNames();
+					if (restrictionNames != null) {
+						for (String name : restrictionNames) {
+							try {
+								Value value = jace.getRestriction(name);
+								if (value != null) {
+									restrictions.put(name, value);
+								}
+							} catch (ValueFormatException vfe) {
+								//try multi-value restriction
+								Value[] values = jace.getRestrictions(name);
+								if (values != null && values.length > 0) {
+									restrictions.put(name,  values);
 								}
 							}
 						}
@@ -308,8 +286,7 @@
 	 * @throws RepositoryException if any errors reading the information
 	 */
 	public Map<Principal, AccessRights> getEffectiveAccessRights(Node node) throws RepositoryException {
-		Map<Principal, AccessRights> accessRights = getEffectiveAccessRights(node.getSession(), node.getPath());
-		return accessRights;
+		return getEffectiveAccessRights(node.getSession(), node.getPath());
 	}
 	
 	/**
@@ -322,25 +299,32 @@
 	 * @throws RepositoryException if any errors reading the information
 	 */
 	public Map<Principal, AccessRights> getEffectiveAccessRights(Session session, String absPath) throws RepositoryException {
-		Map<Principal, AccessRights> accessMap = new LinkedHashMap<Principal, AccessRights>();
 		AccessControlEntry[] entries = getEffectiveAccessControlEntries(session, absPath);
+		return mergePrivilegesFromEntries(entries);
+	}
+
+	/**
+	 * Loop through each of the entries to merge the granted and denied privileges into
+	 * the map
+	 * 
+	 * @param entries the entries to process
+	 * @throws RepositoryException if any errors reading the information
+	 */
+	private Map<Principal, AccessRights> mergePrivilegesFromEntries(AccessControlEntry[] entries)
+			throws RepositoryException {
+		Map<Principal, AccessRights> accessMap = new LinkedHashMap<>();
 		if (entries != null) {
 			for (AccessControlEntry ace : entries) {
 				Principal principal = ace.getPrincipal();
-				AccessRights accessPrivleges = accessMap.get(principal);
-				if (accessPrivleges == null) {
-					accessPrivleges = new AccessRights();
-					accessMap.put(principal, accessPrivleges);
-				}
+				AccessRights accessPrivileges = accessMap.computeIfAbsent(principal, k -> new AccessRights());
 				boolean allow = AccessControlUtil.isAllow(ace);
 				if (allow) {
-					accessPrivleges.getGranted().addAll(Arrays.asList(ace.getPrivileges()));
+					accessPrivileges.getGranted().addAll(Arrays.asList(ace.getPrivileges()));
 				} else {
-					accessPrivleges.getDenied().addAll(Arrays.asList(ace.getPrivileges()));
+					accessPrivileges.getDenied().addAll(Arrays.asList(ace.getPrivileges()));
 				}
 			}
 		}
-		
 		return accessMap;
 	}
 	
@@ -348,13 +332,11 @@
 		AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(session);
 		AccessControlPolicy[] policies = accessControlManager.getEffectivePolicies(absPath);
 		
-        List<AccessControlEntry> allEntries = new ArrayList<AccessControlEntry>(); 
+        List<AccessControlEntry> allEntries = new ArrayList<>();
         for (AccessControlPolicy accessControlPolicy : policies) {
             if (accessControlPolicy instanceof AccessControlList) {
                 AccessControlEntry[] accessControlEntries = ((AccessControlList)accessControlPolicy).getAccessControlEntries();
-                for (AccessControlEntry accessControlEntry : accessControlEntries) {
-					allEntries.add(accessControlEntry);
-				}
+                allEntries.addAll(Arrays.asList(accessControlEntries));
             }
         }
         return allEntries.toArray(new AccessControlEntry[allEntries.size()]);
@@ -515,10 +497,9 @@
 				//strip the last segment
 				parentPath = absPath.substring(0, lastSlash);
 			}
-			boolean canDelete = accessControlManager.hasPrivileges(absPath, new Privilege[] {
+			return accessControlManager.hasPrivileges(absPath, new Privilege[] {
 							accessControlManager.privilegeFromName(Privilege.JCR_REMOVE_NODE)
 						}) && canDeleteChildren(session, parentPath);
-			return canDelete;
 		} catch (RepositoryException e) {
 			return false;
 		}
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelper.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelper.java
index 0303154..4c5d716 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelper.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelper.java
@@ -50,17 +50,13 @@
     public static Map<Privilege, Set<Privilege>> buildPrivilegeToAncestorMap(Session jcrSession, String resourcePath)
             throws RepositoryException {
         AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(jcrSession);
-        Map<Privilege, Set<Privilege>> privilegeToAncestorMap = new HashMap<Privilege, Set<Privilege>>();
+        Map<Privilege, Set<Privilege>> privilegeToAncestorMap = new HashMap<>();
         Privilege[] supportedPrivileges = accessControlManager.getSupportedPrivileges(resourcePath);
         for (Privilege privilege : supportedPrivileges) {
             if (privilege.isAggregate()) {
                 Privilege[] ap = privilege.getAggregatePrivileges();
                 for (Privilege privilege2 : ap) {
-                    Set<Privilege> set = privilegeToAncestorMap.get(privilege2);
-                    if (set == null) {
-                        set = new HashSet<Privilege>();
-                        privilegeToAncestorMap.put(privilege2, set);
-                    }
+                	Set<Privilege> set = privilegeToAncestorMap.computeIfAbsent(privilege2, k -> new HashSet<>());
                     set.add(privilege);
                 }
             }
@@ -164,11 +160,9 @@
             if (privilege3.isAggregate()) {
                 Privilege[] declaredAggregatePrivileges2 = privilege3.getDeclaredAggregatePrivileges();
                 for (Privilege privilege2 : declaredAggregatePrivileges2) {
-                    if (!ignorePrivilege.equals(privilege2)) {
-                        if (privilege2.isAggregate()) {
-                            filterAndMergePrivilegesFromAggregate(privilege2,
-                                    firstSet, secondSet, filterSet, ignorePrivilege);
-                        }
+                    if (!ignorePrivilege.equals(privilege2) && privilege2.isAggregate()) {
+                        filterAndMergePrivilegesFromAggregate(privilege2,
+                                firstSet, secondSet, filterSet, ignorePrivilege);
                     }
                 }
             }
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java
index 2ade35f..7dde987 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java
@@ -61,7 +61,7 @@
     /**
      * default log
      */
-    private final Logger log = LoggerFactory.getLogger(getClass());
+    private final transient Logger log = LoggerFactory.getLogger(getClass());
 
     /** Sorted list of post response creator holders. */
     private final List<PostResponseCreatorHolder> postResponseCreators = new ArrayList<>();
@@ -96,13 +96,11 @@
 
         Session session = request.getResourceResolver().adaptTo(Session.class);
 
-        final List<Modification> changes = new ArrayList<Modification>();
+        final List<Modification> changes = new ArrayList<>();
 
         try {
             handleOperation(request, response, changes);
 
-            //TODO: maybe handle SlingAuthorizablePostProcessor handlers here
-
             // set changes on html response
             for(Modification change : changes) {
                 switch ( change.getType() ) {
@@ -124,9 +122,8 @@
             response.setStatus(HttpServletResponse.SC_NOT_FOUND,
                 rnfe.getMessage());
         } catch (Throwable throwable) {
-            log.debug("Exception while handling POST "
-                + request.getResource().getPath() + " with "
-                + getClass().getName(), throwable);
+            log.debug(String.format("Exception while handling POST %s with %s",
+                    request.getResource().getPath(), getClass().getName()), throwable);
             response.setError(throwable);
         } finally {
             try {
@@ -233,7 +230,7 @@
      * @param changes the changes to report
      * @throws RepositoryException if any errors applying the changes 
      */
-    abstract protected void handleOperation(SlingHttpServletRequest request,
+    protected abstract void handleOperation(SlingHttpServletRequest request,
             PostResponse response, List<Modification> changes) throws RepositoryException;
 
 
@@ -279,7 +276,7 @@
                 // redirect to created/modified Resource
                 int star = result.indexOf('*');
                 if (star >= 0) {
-                    StringBuffer buf = new StringBuffer();
+                    StringBuilder buf = new StringBuilder();
 
                     // anything before the star
                     if (star > 0) {
@@ -304,7 +301,7 @@
                 }
 
                 if (log.isDebugEnabled()) {
-                    log.debug("Will redirect to " + result);
+                    log.debug("Will redirect to {}", result);
                 }
             }
         }
@@ -334,9 +331,8 @@
             return true;
         }
 
-        log.debug(
-            "getStatusMode: Parameter {} set to unknown value {}, assuming standard status code",
-            SlingPostConstants.RP_STATUS);
+        log.debug("getStatusMode: Parameter {} set to unknown value {}, assuming standard status code",
+            SlingPostConstants.RP_STATUS, statusParam);
         return true;
     }
 
@@ -365,7 +361,7 @@
      */
     protected final String externalizePath(SlingHttpServletRequest request,
             String path) {
-        StringBuffer ret = new StringBuffer();
+        StringBuilder ret = new StringBuilder();
         ret.append(SlingRequestPaths.getContextPath(request));
         ret.append(request.getResourceResolver().map(path));
 
@@ -453,15 +449,13 @@
             }
         }
 
-        if (acl == null) {
+        if (acl == null && mayCreate) {
             // no existing access control list, try to create if allowed
-            if (mayCreate) {
-                AccessControlPolicyIterator applicablePolicies = accessControlManager.getApplicablePolicies(resourcePath);
-                while (applicablePolicies.hasNext()) {
-                    AccessControlPolicy policy = applicablePolicies.nextAccessControlPolicy();
-                    if (policy instanceof AccessControlList) {
-                        acl = (AccessControlList) policy;
-                    }
+            AccessControlPolicyIterator applicablePolicies = accessControlManager.getApplicablePolicies(resourcePath);
+            while (applicablePolicies.hasNext()) {
+                AccessControlPolicy policy = applicablePolicies.nextAccessControlPolicy();
+                if (policy instanceof AccessControlList) {
+                    acl = (AccessControlList) policy;
                 }
             }
         }
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
index 72c9e19..3959885 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
@@ -57,10 +57,14 @@
 @SuppressWarnings("serial")
 public abstract class AbstractGetAclServlet extends SlingAllMethodsServlet {
 
-    /**
+    protected static final String KEY_ORDER = "order";
+	protected static final String KEY_DENIED = "denied";
+	protected static final String KEY_GRANTED = "granted";
+
+	/**
      * default log
      */
-    private final Logger log = LoggerFactory.getLogger(getClass());
+    private final transient Logger log = LoggerFactory.getLogger(getClass());
 
     /* (non-Javadoc)
      * @see org.apache.sling.api.servlets.SlingSafeMethodsServlet#doGet(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.SlingHttpServletResponse)
@@ -80,7 +84,7 @@
 
 	        boolean isTidy = false;
 	        final String[] selectors = request.getRequestPathInfo().getSelectors();
-	        if (selectors != null && selectors.length > 0) {
+	        if (selectors.length > 0) {
 	        	for (final String level : selectors) {
 		            if("tidy".equals(level)) {
 		            	isTidy = true;
@@ -91,15 +95,16 @@
 
 	        Map<String, Object> options = new HashMap<>();
             options.put(JsonGenerator.PRETTY_PRINTING, isTidy);
-	        Json.createGeneratorFactory(options).createGenerator(response.getWriter()).write(acl).flush();
+	        try (JsonGenerator generator = Json.createGeneratorFactory(options).createGenerator(response.getWriter())) {
+				generator.write(acl).flush();
+	        }
         } catch (AccessDeniedException ade) {
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
         } catch (ResourceNotFoundException rnfe) {
             response.sendError(HttpServletResponse.SC_NOT_FOUND, rnfe.getMessage());
         } catch (Throwable throwable) {
-            log.debug("Exception while handling GET "
-                + request.getResource().getPath() + " with "
-                + getClass().getName(), throwable);
+            log.debug(String.format("Exception while handling GET %s with %s",
+                request.getResource().getPath(), getClass().getName()), throwable);
             throw new ServletException(throwable);
         }
     }
@@ -123,17 +128,17 @@
         Map<Privilege, Set<Privilege>> privilegeToAncestorMap = PrivilegesHelper.buildPrivilegeToAncestorMap(jcrSession, resourcePath);
 
         AccessControlEntry[] declaredAccessControlEntries = getAccessControlEntries(jcrSession, resourcePath);
-        Map<String, Map<String, Object>> aclMap = new LinkedHashMap<String, Map<String,Object>>();
-        Map<String, Map<String, Object>> restrictionMap = new LinkedHashMap<String, Map<String,Object>>();
+        Map<String, Map<String, Object>> aclMap = new LinkedHashMap<>();
+        Map<String, Map<String, Object>> restrictionMap = new LinkedHashMap<>();
         int sequence = 0;
 
         for (AccessControlEntry ace : declaredAccessControlEntries) {
             Principal principal = ace.getPrincipal();
             Map<String, Object> map = aclMap.get(principal.getName());
             if (map == null) {
-                map = new LinkedHashMap<String, Object>();
+                map = new LinkedHashMap<>();
                 aclMap.put(principal.getName(), map);
-                map.put("order", sequence++);
+                map.put(KEY_ORDER, sequence++);
             }
         }
         //evaluate these in reverse order so the most entries with highest specificity are last
@@ -166,15 +171,15 @@
 			
             Map<String, Object> map = aclMap.get(principal.getName());
 
-            Set<Privilege> grantedSet = (Set<Privilege>) map.get("granted");
+            Set<Privilege> grantedSet = (Set<Privilege>) map.get(KEY_GRANTED);
             if (grantedSet == null) {
-                grantedSet = new LinkedHashSet<Privilege>();
-                map.put("granted", grantedSet);
+                grantedSet = new LinkedHashSet<>();
+                map.put(KEY_GRANTED, grantedSet);
             }
-            Set<Privilege> deniedSet = (Set<Privilege>) map.get("denied");
+            Set<Privilege> deniedSet = (Set<Privilege>) map.get(KEY_DENIED);
             if (deniedSet == null) {
-                deniedSet = new LinkedHashSet<Privilege>();
-                map.put("denied", deniedSet);
+                deniedSet = new LinkedHashSet<>();
+                map.put(KEY_DENIED, deniedSet);
             }
 
             boolean allow = AccessControlUtil.isAllow(ace);
@@ -204,26 +209,26 @@
             JsonObjectBuilder aceObject = Json.createObjectBuilder();
             aceObject.add("principal", principalName);
 
-            Set<Privilege> grantedSet = (Set<Privilege>) value.get("granted");
+            Set<Privilege> grantedSet = (Set<Privilege>) value.get(KEY_GRANTED);
             if (grantedSet != null && !grantedSet.isEmpty()) {
                 JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
                 for (Privilege v : grantedSet)
                 {
                     arrayBuilder.add(v.getName());
                 }
-                aceObject.add("granted", arrayBuilder);
+                aceObject.add(KEY_GRANTED, arrayBuilder);
             }
 
-            Set<Privilege> deniedSet = (Set<Privilege>) value.get("denied");
+            Set<Privilege> deniedSet = (Set<Privilege>) value.get(KEY_DENIED);
             if (deniedSet != null && !deniedSet.isEmpty()) {
                 JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
                 for (Privilege v : deniedSet)
                 {
                     arrayBuilder.add(v.getName());
                 }
-                aceObject.add("denied", arrayBuilder);
+                aceObject.add(KEY_DENIED, arrayBuilder);
             }
-            aceObject.add("order", (Integer) value.get("order"));
+            aceObject.add(KEY_ORDER, (Integer) value.get(KEY_ORDER));
 
             Map<String, Object> restrictions = restrictionMap.get(principalName);
             if (restrictions != null && !restrictions.isEmpty()) {
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java
index 6bb6550..27721d4 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java
@@ -93,7 +93,7 @@
 	/**
      * default log
      */
-    private final Logger log = LoggerFactory.getLogger(getClass());
+    private final transient Logger log = LoggerFactory.getLogger(getClass());
 
     /**
      * Overridden since the @Reference annotation is not inherited from the super method
@@ -110,7 +110,7 @@
 	 * @see org.apache.sling.jackrabbit.usermanager.impl.post.AbstractPostServlet#unbindPostResponseCreator(org.apache.sling.servlets.post.PostResponseCreator, java.util.Map)
 	 */
 	@Override
-	protected void unbindPostResponseCreator(PostResponseCreator creator, Map<String, Object> properties) {
+	protected void unbindPostResponseCreator(PostResponseCreator creator, Map<String, Object> properties) { //NOSONAR
 		super.unbindPostResponseCreator(creator, properties);
 	}
     
@@ -161,7 +161,7 @@
     		}
 
     		//load the principalIds array into a set for quick lookup below
-			Set<String> pidSet = new HashSet<String>();
+			Set<String> pidSet = new HashSet<>();
 			pidSet.addAll(Arrays.asList(principalNamesToDelete));
 
 			// validate that the submitted names are valid
@@ -188,12 +188,12 @@
 				if (updatedAcl == null) {
 					// log the warning about principals where no ACE was found
 					for (String pid : pidSet) {
-						log.warn("No AccessControlEntry was found to be deleted for principal: " + pid);
+						log.warn("No AccessControlEntry was found to be deleted for principal: {}", pid);
 					}
 				} else {
 					//keep track of the existing Aces for the target principal
 					AccessControlEntry[] accessControlEntries = updatedAcl.getAccessControlEntries();
-					List<AccessControlEntry> oldAces = new ArrayList<AccessControlEntry>();
+					List<AccessControlEntry> oldAces = new ArrayList<>();
 					for (AccessControlEntry ace : accessControlEntries) {
 						if (pidSet.contains(ace.getPrincipal().getName())) {
 							oldAces.add(ace);
@@ -220,7 +220,7 @@
 								changes.add(Modification.onDeleted(pid));
 							}
 						} else {
-							log.warn("No AccessControlEntry was found to be deleted for principal: " + pid);
+							log.warn("No AccessControlEntry was found to be deleted for principal: {}", pid);
 						}
 					}
 
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
index 59c7331..863e54a 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
@@ -17,6 +17,7 @@
 package org.apache.sling.jcr.jackrabbit.accessmanager.post;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import javax.jcr.RepositoryException;
@@ -120,13 +121,11 @@
 	protected AccessControlEntry[] getAccessControlEntries(Session session, String absPath) throws RepositoryException {
 		AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(session);
 		AccessControlPolicy[] policies = accessControlManager.getPolicies(absPath);
-        List<AccessControlEntry> allEntries = new ArrayList<AccessControlEntry>(); 
+        List<AccessControlEntry> allEntries = new ArrayList<>(); 
 		for (AccessControlPolicy accessControlPolicy : policies) {
 			if (accessControlPolicy instanceof AccessControlList) {
 				AccessControlEntry[] accessControlEntries = ((AccessControlList)accessControlPolicy).getAccessControlEntries();
-                for (AccessControlEntry accessControlEntry : accessControlEntries) {
-					allEntries.add(accessControlEntry);
-				}
+				allEntries.addAll(Arrays.asList(accessControlEntries));
 			}
 		}
         return allEntries.toArray(new AccessControlEntry[allEntries.size()]);
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
index 5cd722e..4cb81e4 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
@@ -17,6 +17,7 @@
 package org.apache.sling.jcr.jackrabbit.accessmanager.post;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import javax.jcr.RepositoryException;
@@ -120,13 +121,11 @@
     protected AccessControlEntry[] getAccessControlEntries(Session session, String absPath) throws RepositoryException {
         AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(session);
         AccessControlPolicy[] policies = accessControlManager.getEffectivePolicies(absPath);
-        List<AccessControlEntry> allEntries = new ArrayList<AccessControlEntry>(); 
+        List<AccessControlEntry> allEntries = new ArrayList<>(); 
         for (AccessControlPolicy accessControlPolicy : policies) {
             if (accessControlPolicy instanceof AccessControlList) {
                 AccessControlEntry[] accessControlEntries = ((AccessControlList)accessControlPolicy).getAccessControlEntries();
-                for (AccessControlEntry accessControlEntry : accessControlEntries) {
-					allEntries.add(accessControlEntry);
-				}
+                allEntries.addAll(Arrays.asList(accessControlEntries));
             }
         }
         return allEntries.toArray(new AccessControlEntry[allEntries.size()]);
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java
index 356e6a9..837f3cc 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java
@@ -113,7 +113,7 @@
     protected void bindRestrictionProvider(RestrictionProvider rp) {
     	this.restrictionProvider = rp;
     }
-    protected void unbindRestrictionProvider(RestrictionProvider rp) {
+    protected void unbindRestrictionProvider(RestrictionProvider rp) { //NOSONAR
     	this.restrictionProvider = null;
     }
     
@@ -132,7 +132,7 @@
 	 * @see org.apache.sling.jackrabbit.usermanager.impl.post.AbstractPostServlet#unbindPostResponseCreator(org.apache.sling.servlets.post.PostResponseCreator, java.util.Map)
 	 */
 	@Override
-	protected void unbindPostResponseCreator(PostResponseCreator creator, Map<String, Object> properties) {
+	protected void unbindPostResponseCreator(PostResponseCreator creator, Map<String, Object> properties) { //NOSONAR
 		super.unbindPostResponseCreator(creator, properties);
 	}
     
@@ -288,9 +288,9 @@
 		}
 		
 		// Collect the modified privileges from the request.
-		Set<String> grantedPrivilegeNames = new HashSet<String>();
-		Set<String> deniedPrivilegeNames = new HashSet<String>();
-		Set<String> removedPrivilegeNames = new HashSet<String>();
+		Set<String> grantedPrivilegeNames = new HashSet<>();
+		Set<String> deniedPrivilegeNames = new HashSet<>();
+		Set<String> removedPrivilegeNames = new HashSet<>();
 		if (privileges != null) {
 			Set<Entry<String, String>> entrySet = privileges.entrySet();
 			for (Entry<String, String> entry : entrySet) {
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
index 19ca1ff..6e3c0a3 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@org.osgi.annotation.versioning.Version("3.3.0")
+@org.osgi.annotation.versioning.Version("3.4.0")
 package org.apache.sling.jcr.jackrabbit.accessmanager.post;
 
 
diff --git a/src/test/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelperTest.java b/src/test/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelperTest.java
index c87e602..46dee20 100644
--- a/src/test/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelperTest.java
+++ b/src/test/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelperTest.java
@@ -33,7 +33,6 @@
 import javax.jcr.security.Privilege;
 
 import org.apache.sling.jcr.base.util.AccessControlUtil;
-import org.apache.sling.jcr.jackrabbit.accessmanager.impl.PrivilegesHelper;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.junit.Before;
@@ -46,19 +45,17 @@
     public final SlingContext context = new SlingContext(ResourceResolverType.JCR_OAK);
     
     private Map<Privilege, Set<Privilege>> privilegeToAncestorMap;
-    private Session session;
     private AccessControlManager acm;
 
     @Before
-    public void buildPrivilegesMap() throws Exception {
-        
-        session = context.resourceResolver().adaptTo(Session.class);
+    public void buildPrivilegesMap() throws RepositoryException {
+        Session session = context.resourceResolver().adaptTo(Session.class);
         privilegeToAncestorMap = PrivilegesHelper.buildPrivilegeToAncestorMap(session, "/");
         acm = AccessControlUtil.getAccessControlManager(session);
     }
     
     @Test
-    public void mergeAddsMissingPrivilege() throws Exception {
+    public void mergeAddsMissingPrivilege() throws RepositoryException {
         
         Privilege write = priv(Privilege.JCR_WRITE);
         Privilege read = priv(Privilege.JCR_READ);
@@ -81,7 +78,7 @@
     }
 
     @Test
-    public void mergeRemovesExistingDeniedPrivilege() throws Exception {
+    public void mergeRemovesExistingDeniedPrivilege() throws RepositoryException {
         
         Privilege write = priv(Privilege.JCR_WRITE);
         
@@ -98,7 +95,7 @@
     }    
     
     @Test
-    public void mergeAggregateOverlappingPrivilegesOnBothSides() throws Exception {
+    public void mergeAggregateOverlappingPrivilegesOnBothSides() throws RepositoryException {
 
         Privilege all = priv(Privilege.JCR_ALL);
         Privilege write = priv(Privilege.JCR_WRITE);
@@ -117,7 +114,7 @@
     }
     
     @Test
-    public void mergeAggregateNonOverlappingPrivilegesOnBothSides() throws Exception {
+    public void mergeAggregateNonOverlappingPrivilegesOnBothSides() throws RepositoryException {
         
         Privilege read = priv(Privilege.JCR_READ);
         Privilege write = priv(Privilege.JCR_WRITE);
@@ -142,7 +139,7 @@
      * Validates that two identical privileges are merged
      */
     @Test
-    public void mergeIdenticalPrivileges() throws Exception {
+    public void mergeIdenticalPrivileges() throws RepositoryException {
         
         Privilege read = priv(Privilege.JCR_READ);
         
@@ -164,7 +161,7 @@
      * Validates that the <tt>jcr:modifyProperties</tt> is recognized as being aggregated into <tt>jcr:write</tt>
      */
     @Test
-    public void mergeAggregatePrivileges() throws Exception {
+    public void mergeAggregatePrivileges() throws RepositoryException {
         
         Privilege write = priv(Privilege.JCR_WRITE);
         Privilege modifyProps = priv(Privilege.JCR_MODIFY_PROPERTIES);
@@ -187,7 +184,7 @@
      * privileges are reported
      */
     @Test
-    public void mergeRemoveAggregatePrivileges() throws Exception {
+    public void mergeRemoveAggregatePrivileges() throws RepositoryException {
         
         Privilege write = priv(Privilege.JCR_WRITE);
         Privilege modifyProps = priv(Privilege.JCR_MODIFY_PROPERTIES);