You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2021/08/24 16:29:49 UTC

[sling-org-apache-sling-fsresource] branch master updated: cosmetic: cleanup trailing slashes

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

sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fsresource.git


The following commit(s) were added to refs/heads/master by this push:
     new 5fc6411  cosmetic: cleanup trailing slashes
5fc6411 is described below

commit 5fc6411ec3361a7e1bf44dabfd80f211548f757b
Author: Stefan Seifert <st...@users.noreply.github.com>
AuthorDate: Tue Aug 24 18:26:10 2021 +0200

    cosmetic: cleanup trailing slashes
---
 .../fsprovider/internal/ContentFileExtensions.java | 10 ++--
 .../sling/fsprovider/internal/FileMonitor.java     | 12 ++---
 .../sling/fsprovider/internal/FileStatCache.java   | 10 ++--
 .../apache/sling/fsprovider/internal/FsMode.java   |  4 +-
 .../fsprovider/internal/FsResourceMapper.java      |  4 +-
 .../fsprovider/internal/FsResourceProvider.java    | 48 ++++++++---------
 .../internal/InitialContentImportOptions.java      |  8 +--
 .../fsprovider/internal/mapper/ContentFile.java    | 20 +++----
 .../internal/mapper/ContentFileResourceMapper.java | 12 ++---
 .../sling/fsprovider/internal/mapper/Escape.java   | 12 ++---
 .../fsprovider/internal/mapper/FileResource.java   | 16 +++---
 .../internal/mapper/FileResourceMapper.java        |  8 +--
 .../internal/mapper/FileVaultResourceMapper.java   | 38 ++++++-------
 .../mapper/LazyModifiedDateResourceMetadata.java   |  2 +-
 .../fsprovider/internal/mapper/jcr/FsItem.java     | 10 ++--
 .../fsprovider/internal/mapper/jcr/FsNode.java     | 18 +++----
 .../internal/mapper/jcr/FsNodeIterator.java        |  6 +--
 .../fsprovider/internal/mapper/jcr/FsNodeType.java |  8 +--
 .../fsprovider/internal/mapper/jcr/FsProperty.java | 14 ++---
 .../internal/mapper/jcr/FsPropertyDefinition.java  |  4 +-
 .../internal/mapper/jcr/FsPropertyIterator.java    |  8 +--
 .../fsprovider/internal/mapper/jcr/FsValue.java    |  6 +--
 .../internal/mapper/valuemap/DateUtils.java        |  4 +-
 .../internal/mapper/valuemap/ObjectConverter.java  | 12 ++---
 .../internal/mapper/valuemap/ValueMapUtil.java     |  8 +--
 .../fsprovider/internal/parser/ContentElement.java |  8 +--
 .../internal/parser/ContentElementHandler.java     |  6 +--
 .../internal/parser/ContentElementImpl.java        |  4 +-
 .../internal/parser/ContentFileCache.java          | 10 ++--
 .../internal/parser/ContentFileParserUtil.java     | 16 +++---
 .../internal/parser/ContentFileTypes.java          |  8 +--
 .../sling/fsprovider/internal/FileMonitorTest.java | 54 +++++++++----------
 .../fsprovider/internal/FileVaultContentTest.java  | 12 ++---
 .../internal/FileVaultFileMonitorTest.java         | 62 +++++++++++-----------
 .../sling/fsprovider/internal/JcrMixedTest.java    |  2 +-
 .../fsprovider/internal/JcrXmlContentTest.java     |  8 +--
 .../sling/fsprovider/internal/JsonContentTest.java | 28 +++++-----
 .../sling/fsprovider/internal/TestUtils.java       | 16 +++---
 .../internal/mapper/ContentFileTest.java           | 18 +++----
 .../internal/mapper/valuemap/Convert.java          | 38 ++++++-------
 .../mapper/valuemap/ObjectConverterTest.java       | 46 ++++++++--------
 .../mapper/valuemap/ValueMapDecoratorTest.java     |  2 +-
 .../internal/mapper/valuemap/ValueMapUtilTest.java |  2 +-
 .../internal/parser/ContentFileCacheTest.java      | 10 ++--
 44 files changed, 326 insertions(+), 326 deletions(-)

diff --git a/src/main/java/org/apache/sling/fsprovider/internal/ContentFileExtensions.java b/src/main/java/org/apache/sling/fsprovider/internal/ContentFileExtensions.java
index 2de233e..c93502f 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/ContentFileExtensions.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/ContentFileExtensions.java
@@ -31,13 +31,13 @@ import org.apache.commons.lang3.StringUtils;
  * Matches file names for content file extensions.
  */
 public final class ContentFileExtensions {
-    
+
     private final List<String> contentFileSuffixes;
 
     public ContentFileExtensions(List<String> contentFileSuffixes) {
         this.contentFileSuffixes = contentFileSuffixes;
     }
-    
+
     /**
      * Get suffix from file name.
      * @param file File
@@ -68,19 +68,19 @@ public final class ContentFileExtensions {
     public boolean matchesSuffix(File file) {
         return getSuffix(file) != null;
     }
-    
+
     /**
      * @return Content file suffixes.
      */
     public Collection<String> getSuffixes() {
         return contentFileSuffixes;
     }
-    
+
     /**
      * @return true if not suffixes are defined.
      */
     public boolean isEmpty() {
         return contentFileSuffixes.isEmpty();
     }
-    
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FileMonitor.java b/src/main/java/org/apache/sling/fsprovider/internal/FileMonitor.java
index 4b71865..21dccc2 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FileMonitor.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FileMonitor.java
@@ -80,7 +80,7 @@ public final class FileMonitor extends TimerTask {
             rootFile = new File(this.provider.getRootFile(), "." + PlatformNameFormat.getPlatformPath(this.provider.getProviderRoot()));
         }
         this.root = new Monitorable(this.provider.getProviderRoot(), rootFile, null);
-        
+
         createStatus(this.root, contentFileExtensions, contentFileCache);
         log.debug("Starting file monitor for {} with an interval of {}ms", this.root.file, interval);
         timer.schedule(this, 0, interval);
@@ -201,7 +201,7 @@ public final class FileMonitor extends TimerTask {
             }
         }
     }
-    
+
     private void checkDirStatusChildren(final Monitorable dirMonitorable, final ObservationReporter reporter) {
         final DirStatus ds = (DirStatus)dirMonitorable.status;
         final File[] files = dirMonitorable.file.listFiles();
@@ -253,7 +253,7 @@ public final class FileMonitor extends TimerTask {
             reporter.reportChanges(changes, false);
         }
     }
-    
+
     /**
      * Transform path for resource event.
      * @param path Path
@@ -267,7 +267,7 @@ public final class FileMonitor extends TimerTask {
             return path;
         }
     }
-    
+
     private List<ResourceChange> collectResourceChanges(final Monitorable monitorable, final ChangeType changeType) {
         List<ResourceChange> changes = new ArrayList<>();
         if (monitorable.status instanceof ContentFileStatus) {
@@ -344,7 +344,7 @@ public final class FileMonitor extends TimerTask {
             this.lastModified = file.lastModified();
         }
     }
-    
+
     /** Status for content files */
     private static class ContentFileStatus extends FileStatus {
         public final ContentFile contentFile;
@@ -353,7 +353,7 @@ public final class FileMonitor extends TimerTask {
             this.contentFile = contentFile;
         }
     }
-    
+
     /** Status for directories. */
     private static final class DirStatus extends FileStatus {
         public Monitorable[] children;
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FileStatCache.java b/src/main/java/org/apache/sling/fsprovider/internal/FileStatCache.java
index 3b6053c..58a8911 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FileStatCache.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FileStatCache.java
@@ -18,16 +18,16 @@
  */
 package org.apache.sling.fsprovider.internal;
 
-import org.apache.commons.lang3.StringUtils;
-import org.apache.sling.api.resource.ResourceUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.io.File;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.apache.commons.lang3.StringUtils;
+import org.apache.sling.api.resource.ResourceUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * A cache that caches whether files exist or don't exist.
  */
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FsMode.java b/src/main/java/org/apache/sling/fsprovider/internal/FsMode.java
index 722a4e5..a974b36 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FsMode.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FsMode.java
@@ -22,7 +22,7 @@ package org.apache.sling.fsprovider.internal;
  * Different modes for File system provider support and file system layouts.
  */
 public enum FsMode {
-    
+
     /**
      * Support only files and folders (classic mode).
      */
@@ -32,7 +32,7 @@ public enum FsMode {
      * Sling-Initial-Content file system layout, supports file and folders ant content files in JSON, xml and jcr.xml format.
      */
     INITIAL_CONTENT,
-    
+
     /**
      * FileVault XML format (expanded content package).
      */
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceMapper.java b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceMapper.java
index 4cb2c17..351c968 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceMapper.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceMapper.java
@@ -35,7 +35,7 @@ public interface FsResourceMapper {
      * @return Resource or null if not exists
      */
     Resource getResource(ResourceResolver resolver, String resourcePath);
-    
+
     /**
      * Get children of resource.
      * @param resolver Resource resolver.
@@ -43,5 +43,5 @@ public interface FsResourceMapper {
      * @return Child resources or null if no children exist
      */
     Iterator<Resource> getChildren(ResourceResolver resolver, Resource parent);
-    
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
index 256e2cc..e5f898c 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
@@ -76,7 +76,7 @@ import org.osgi.service.metatype.annotations.Option;
            })
 @Designate(ocd=FsResourceProvider.Config.class, factory=true)
 public final class FsResourceProvider extends ResourceProvider<Object> {
-    
+
     /**
      * Resource metadata property set by {@link org.apache.sling.fsprovider.internal.mapper.FileResource}
      * if the underlying file reference is a directory.
@@ -100,7 +100,7 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
                 description = "Location in the virtual resource tree where the " +
                 "file system resources are mapped in. This property must not be an empty string.")
         String provider_root();
-        
+
         @AttributeDefinition(name = "File system layout",
                 description = "File system layout mode for files, folders and content.",
                 options={
@@ -112,15 +112,15 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
                                 + "FileVault XML format (expanded content package)"),
                 })
         FsMode provider_fs_mode() default FsMode.FILES_FOLDERS;
-        
+
         @AttributeDefinition(name = "Init. Content Options",
                 description = "Import options for Sling-Initial-Content file system layout. Supported options: overwrite, ignoreImportProviders.")
         String provider_initial_content_import_options();
-        
+
         @AttributeDefinition(name = "FileVault Filter",
                 description = "Path to META-INF/vault/filter.xml when using FileVault XML file system layout.")
         String provider_filevault_filterxml_path();
-        
+
 
         @AttributeDefinition(name = "Check Interval",
                              description = "If the interval has a value higher than 100, the provider will " +
@@ -144,16 +144,16 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
 
     // The monitor to detect file changes.
     private FileMonitor monitor;
-    
+
     // maps file system to resources
     private FsMode fsMode;
     private FsResourceMapper fileMapper;
     private FsResourceMapper contentFileMapper;
     private FileVaultResourceMapper fileVaultMapper;
-    
+
     // if true resources from file system are only "overlayed" to JCR resources, serving JCR as fallback within the same path
     private boolean overlayParentResourceProvider;
-    
+
     // cache for parsed content files
     private ContentFileCache contentFileCache;
 
@@ -175,9 +175,9 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
             final @NotNull String path,
             final @NotNull ResourceContext resourceContext,
             final @Nullable Resource parent) {
-        
+
         ResourceResolver resolver = ctx.getResourceResolver();
-        
+
         boolean askParentResourceProvider;
         Resource rsrc = null;
 
@@ -199,25 +199,25 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
                 rsrc = contentFileMapper.getResource(resolver, path);
             }
         }
-        
+
         if (askParentResourceProvider) {
             // make sure directory resources from parent resource provider have higher precedence than from this provider
             // this allows properties like sling:resourceSuperType to take effect
             if ( rsrc == null || rsrc.getResourceMetadata().containsKey(RESOURCE_METADATA_FILE_DIRECTORY) ) {
             	// get resource from shadowed provider
             	final ResourceProvider rp = ctx.getParentResourceProvider();
-            	final ResolveContext resolveContext = (ResolveContext)ctx.getParentResolveContext();
+            	final ResolveContext resolveContext = ctx.getParentResolveContext();
             	if ( rp != null && resolveContext != null ) {
-            	    Resource resourceFromParentResourceProvider = rp.getResource(resolveContext, 
-    	            		path, 
+            	    Resource resourceFromParentResourceProvider = rp.getResource(resolveContext,
+    	            		path,
     	            		resourceContext, parent);
             	    if (resourceFromParentResourceProvider != null) {
             	        rsrc = resourceFromParentResourceProvider;
             	    }
-            	}        	
+            	}
             }
         }
-        
+
         return rsrc;
     }
 
@@ -228,11 +228,11 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
     @Override
     public Iterator<Resource> listChildren(final @NotNull ResolveContext<Object> ctx, final @NotNull Resource parent) {
         ResourceResolver resolver = ctx.getResourceResolver();
-        
+
         List<Iterator<? extends Resource>> allChildren = new ArrayList<>();
         Iterator<Resource> children;
         boolean askParentResourceProvider;
-        
+
         if (fsMode == FsMode.FILEVAULT_XML) {
             // filevault: always ask provider, it checks itself if children matches the filters
             askParentResourceProvider = true;
@@ -253,11 +253,11 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
                 allChildren.add(children);
             }
         }
-        
+
     	// get children from from shadowed provider
         if (askParentResourceProvider) {
         	final ResourceProvider parentResourceProvider = ctx.getParentResourceProvider();
-            final ResolveContext resolveContext = (ResolveContext)ctx.getParentResolveContext();
+            final ResolveContext resolveContext = ctx.getParentResolveContext();
         	if (parentResourceProvider != null && resolveContext != null) {
         		children = parentResourceProvider.listChildren(resolveContext, parent);
                 if (children != null) {
@@ -314,10 +314,10 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
         this.providerRoot = providerRoot;
         this.providerFile = getProviderFile(providerFileName, bundleContext);
         this.overlayParentResourceProvider = false;
-        
+
         InitialContentImportOptions options = new InitialContentImportOptions(config.provider_initial_content_import_options());
         File filterXmlFile = null;
-                
+
         List<String> contentFileSuffixes = new ArrayList<>();
         if (fsMode == FsMode.FILEVAULT_XML) {
             contentFileSuffixes.add("/" + DOT_CONTENT_XML);
@@ -342,7 +342,7 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
             }
         }
         ContentFileExtensions contentFileExtensions = new ContentFileExtensions(contentFileSuffixes);
-        
+
         this.contentFileCache = new ContentFileCache(config.provider_cache_size());
         this.fileStatCache = new FileStatCache(this.providerFile);
 
@@ -354,7 +354,7 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
             this.contentFileMapper = new ContentFileResourceMapper(this.providerRoot, this.providerFile,
                     contentFileExtensions, this.contentFileCache, this.fileStatCache);
         }
-        
+
         // start background monitor if check interval is higher than 100
         if (config.provider_checkinterval() > 100) {
             this.monitor = new FileMonitor(this, config.provider_checkinterval(), fsMode,
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java b/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java
index 52de538..1ab3b1d 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/InitialContentImportOptions.java
@@ -42,10 +42,10 @@ class InitialContentImportOptions {
      */
     private static final String IGNORE_CONTENT_READERS_DIRECTIVE = "ignoreImportProviders";
 
-    
+
     private final boolean overwrite;
     private final Set<String> ignoreImportProviders;
-    
+
     public InitialContentImportOptions(String optionsString) {
         ManifestHeader header = ManifestHeader.parse("/dummy/path;" + optionsString);
         Entry[] entries = header.getEntries();
@@ -59,7 +59,7 @@ class InitialContentImportOptions {
             ignoreImportProviders = Collections.emptySet();
         }
     }
-    
+
     public boolean isOverwrite() {
         return overwrite;
     }
@@ -67,5 +67,5 @@ class InitialContentImportOptions {
     public Set<String> getIgnoreImportProviders() {
         return ignoreImportProviders;
     }
-    
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFile.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFile.java
index 853fe82..4c75a4d 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFile.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFile.java
@@ -32,7 +32,7 @@ import org.apache.sling.jcr.contentparser.ContentType;
  * Reference to a file that contains a content fragment (e.g. JSON, JCR XML).
  */
 public final class ContentFile {
-    
+
     private final File file;
     private final String path;
     private final String subPath;
@@ -41,7 +41,7 @@ public final class ContentFile {
     private boolean contentInitialized;
     private ContentElement content;
     private ValueMap valueMap;
-    
+
     /**
      * @param file File with content fragment
      * @param path Root path of the content file
@@ -73,7 +73,7 @@ public final class ContentFile {
     public File getFile() {
         return file;
     }
-    
+
     /**
      * @return Root path of content file
      */
@@ -87,7 +87,7 @@ public final class ContentFile {
     public String getSubPath() {
         return subPath;
     }
-    
+
     /**
      * Content object referenced by sub path.
      * @return Map if resource, property value if property.
@@ -105,14 +105,14 @@ public final class ContentFile {
         }
         return content;
     }
-    
+
     /**
      * @return true if any content was found.
      */
     public boolean hasContent() {
         return getContent() != null;
     }
-    
+
     /**
      * @return ValueMap for resource. Never null.
      */
@@ -128,14 +128,14 @@ public final class ContentFile {
         }
         return valueMap;
     }
-    
+
     /**
      * @return Child maps.
      */
     public Iterator<Map.Entry<String,ContentElement>> getChildren() {
         return getContent().getChildren().entrySet().iterator();
     }
-    
+
     /**
      * Navigate to another sub path position in content file.
      * @param newSubPath New sub path related to root path of content file
@@ -144,7 +144,7 @@ public final class ContentFile {
     public ContentFile navigateToAbsolute(String newSubPath) {
         return new ContentFile(file, path, newSubPath, contentFileCache);
     }
-        
+
     /**
      * Navigate to another sub path position in content file.
      * @param newSubPath New sub path relative to current sub path in content file
@@ -160,5 +160,5 @@ public final class ContentFile {
         }
         return new ContentFile(file, path, absoluteSubPath, contentFileCache);
     }
-        
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
index 2649ac6..2835a6f 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
@@ -36,13 +36,13 @@ import org.apache.sling.fsprovider.internal.FsResourceMapper;
 import org.apache.sling.fsprovider.internal.parser.ContentFileCache;
 
 public final class ContentFileResourceMapper implements FsResourceMapper {
-    
+
     // providerRoot + "/" to be used for prefix matching of paths
     private final String providerRootPrefix;
 
     // The "root" file or folder in the file system
     private final File providerFile;
-    
+
     private final ContentFileExtensions contentFileExtensions;
     private final ContentFileCache contentFileCache;
     private FileStatCache fileStatCache;
@@ -56,7 +56,7 @@ public final class ContentFileResourceMapper implements FsResourceMapper {
         this.contentFileCache = contentFileCache;
         this.fileStatCache = fileStatCache;
     }
-    
+
     @Override
     public Resource getResource(final ResourceResolver resolver, final String resourcePath) {
         if (contentFileExtensions.isEmpty()) {
@@ -70,7 +70,7 @@ public final class ContentFileResourceMapper implements FsResourceMapper {
             return null;
         }
     }
-    
+
     @SuppressWarnings("unchecked")
     @Override
     public Iterator<Resource> getChildren(final ResourceResolver resolver, final Resource parent) {
@@ -125,7 +125,7 @@ public final class ContentFileResourceMapper implements FsResourceMapper {
         }
         return children;
     }
-    
+
     private ContentFile getFile(String path, String subPath) {
         if (!StringUtils.startsWith(path, providerRootPrefix)) {
             return null;
@@ -146,5 +146,5 @@ public final class ContentFileResourceMapper implements FsResourceMapper {
                 + (subPath != null ? "/" + subPath : "");
         return getFile(parentPath, nextSubPath);
     }
-    
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/Escape.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/Escape.java
index ef234a9..9b059a3 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/Escape.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/Escape.java
@@ -29,10 +29,10 @@ import org.apache.commons.lang3.CharEncoding;
  * Manages deescaping for platform file names to resource names.
  */
 public final class Escape {
-    
+
     /**
      * List of characters typically prohibited on unix and windows file systems.
-     * "/" is not included because it is neither allowed in resource nor in file names on any system. 
+     * "/" is not included because it is neither allowed in resource nor in file names on any system.
      */
     private static final char[] RESERVED_CHARS = {
             '<',
@@ -51,14 +51,14 @@ public final class Escape {
             RESERVED_CHARS_SET.set(RESERVED_CHARS[i]);
         }
     }
-    
+
     private Escape() {
         // static methods only
     }
-    
+
     /**
      * Convert file name to resource name.
-     * Applies same rules as Apache Sling JCR ContentLoader. 
+     * Applies same rules as Apache Sling JCR ContentLoader.
      * @param path File name or path
      * @return Resource name or path
      */
@@ -75,7 +75,7 @@ public final class Escape {
         }
         return path;
     }
-    
+
     /**
      * Converts resource name to file name.
      * Allows all characters, but URL-encodes characters that are in the list of {@link #RESERVED_CHARS}.
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
index 58f04c0..95b6d37 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
@@ -90,7 +90,7 @@ public final class FileResource extends AbstractResource {
     // the resource type, assigned on demand
     private String resourceType;
     private String resourceSuperType;
-    
+
     // valuemap is build on demand
     private ValueMap valueMap;
 
@@ -99,7 +99,7 @@ public final class FileResource extends AbstractResource {
     private final FileStatCache fileStatCache;
 
     private static final Logger log = LoggerFactory.getLogger(FileResource.class);
-    
+
     /**
      * Creates an instance of this File system resource.
      *
@@ -110,7 +110,7 @@ public final class FileResource extends AbstractResource {
     FileResource(ResourceResolver resolver, String resourcePath, File file, FileStatCache fileStatCache) {
         this(resolver, resourcePath, file, null, null, fileStatCache);
     }
-    
+
     FileResource(ResourceResolver resolver, String resourcePath, File file,
                  ContentFileExtensions contentFileExtensions, ContentFileCache contentFileCache,
                  FileStatCache fileStatCache) {
@@ -236,11 +236,11 @@ public final class FileResource extends AbstractResource {
                 Map<String,Object> props = new HashMap<String, Object>();
                 props.put("jcr:primaryType", fileStatCache.isFile(file) ? RESOURCE_TYPE_FILE : RESOURCE_TYPE_FOLDER);
                 props.put("jcr:createdBy", "system");
-                
+
                 Calendar lastModifed = Calendar.getInstance();
                 lastModifed.setTimeInMillis(file.lastModified());
                 props.put("jcr:created", lastModifed);
-                
+
                 // overlay properties with those from node descriptor content file, if it exists
                 ContentFile contentFile = getNodeDescriptorContentFile();
                 if (contentFile != null) {
@@ -253,13 +253,13 @@ public final class FileResource extends AbstractResource {
                         props.put(entry.getKey(), entry.getValue());
                     }
                 }
-                
+
                 valueMap = new DeepReadValueMapDecorator(this, new ValueMapDecorator(props));
             }
         }
         return valueMap;
     }
-    
+
     private ContentFile getNodeDescriptorContentFile() {
         if (contentFileExtensions == null || contentFileCache == null) {
             return null;
@@ -272,5 +272,5 @@ public final class FileResource extends AbstractResource {
         }
         return null;
     }
-    
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResourceMapper.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResourceMapper.java
index db120a0..b18a77c 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResourceMapper.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResourceMapper.java
@@ -43,7 +43,7 @@ public final class FileResourceMapper implements FsResourceMapper {
 
     // The "root" file or folder in the file system
     private final File providerFile;
-    
+
     private final ContentFileExtensions contentFileExtensions;
     private final ContentFileCache contentFileCache;
     private FileStatCache fileStatCache;
@@ -58,7 +58,7 @@ public final class FileResourceMapper implements FsResourceMapper {
         this.contentFileCache = contentFileCache;
         this.fileStatCache = fileStatCache;
     }
-    
+
     @Override
     public Resource getResource(final ResourceResolver resolver, final String resourcePath) {
         File file = getFile(resourcePath);
@@ -69,7 +69,7 @@ public final class FileResourceMapper implements FsResourceMapper {
             return null;
         }
     }
-    
+
     @SuppressWarnings("unchecked")
     @Override
     public Iterator<Resource> getChildren(final ResourceResolver resolver, final Resource parent) {
@@ -151,5 +151,5 @@ public final class FileResourceMapper implements FsResourceMapper {
         }
         return null;
     }
-    
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileVaultResourceMapper.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileVaultResourceMapper.java
index 96e246b..9aac1fd 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileVaultResourceMapper.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileVaultResourceMapper.java
@@ -48,7 +48,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public final class FileVaultResourceMapper implements FsResourceMapper {
-    
+
     private static final String DOT_CONTENT_XML_SUFFIX = "/" + DOT_CONTENT_XML;
     private static final String DOT_DIR = ".dir";
     private static final String DOT_DIR_SUFFIX = "/" + DOT_DIR;
@@ -58,9 +58,9 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
     private final ContentFileCache contentFileCache;
     private FileStatCache fileStatCache;
     private final WorkspaceFilter workspaceFilter;
-    
+
     private static final Logger log = LoggerFactory.getLogger(FileVaultResourceMapper.class);
-    
+
     public FileVaultResourceMapper(File providerFile, File filterXmlFile, ContentFileCache contentFileCache, FileStatCache fileStatCache) {
         this.providerFile = providerFile;
         this.filterXmlFile = filterXmlFile;
@@ -68,37 +68,37 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
         this.fileStatCache = fileStatCache;
         this.workspaceFilter = getWorkspaceFilter();
     }
-    
+
     @Override
     public Resource getResource(final ResourceResolver resolver, final String resourcePath) {
-        
+
         // direct file
         File file = getFile(resourcePath);
         if (file != null && fileStatCache.isFile(file)) {
             return new FileResource(resolver, resourcePath, file, fileStatCache);
         }
-        
+
         // content file
         ContentFile contentFile = getContentFile(resourcePath, null);
         if (contentFile != null) {
             return new ContentFileResource(resolver, contentFile);
         }
-        
+
         // fallback to directory resource if folder was found but nothing else
         if (file != null && fileStatCache.isDirectory(file)) {
             return new FileResource(resolver, resourcePath, file, fileStatCache);
         }
-        
+
         return null;
     }
-    
+
     @SuppressWarnings("unchecked")
     @Override
     public Iterator<Resource> getChildren(final ResourceResolver resolver, final Resource parent) {
         String parentPath = parent.getPath();
-        
+
         Set<String> childPaths = new LinkedHashSet<>();
-        
+
         // get children from content resource of parent
         ContentFile parentContentFile = getContentFile(parentPath, null);
         if (parentContentFile != null) {
@@ -111,7 +111,7 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
                 }
             }
         }
-        
+
         // additional check for children in file system
         File parentFile = getFile(parentPath);
         if (parentFile != null && fileStatCache.isDirectory(parentFile)) {
@@ -135,7 +135,7 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
                 }
             }
         }
-        
+
         if (childPaths.isEmpty()) {
             return null;
         }
@@ -168,7 +168,7 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
         }
         return null;
     }
-    
+
     /**
      * Checks if the given path matches the workspace filter.
      * @param path Path
@@ -186,7 +186,7 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
             return workspaceFilter.contains(path);
         }
     }
-    
+
     private File getFile(String path) {
         if (StringUtils.endsWith(path, DOT_CONTENT_XML_SUFFIX)) {
             return null;
@@ -200,7 +200,7 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
         }
         return null;
     }
-    
+
     private ContentFile getContentFile(String path, String subPath) {
         File file = new File(providerFile, "." + PlatformNameFormat.getPlatformPath(path) + DOT_CONTENT_XML_SUFFIX);
         if (fileStatCache.exists(file)) {
@@ -209,7 +209,7 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
                 return contentFile;
             }
         }
-        
+
         file = new File(providerFile, "." + PlatformNameFormat.getPlatformPath(path) + XML_SUFFIX);
         if (fileStatCache.exists(file) && !hasDotDirFile(file)) {
             ContentFile contentFile = new ContentFile(file, path, subPath, contentFileCache, ContentType.JCR_XML);
@@ -217,7 +217,7 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
                 return contentFile;
             }
         }
-        
+
         // try to find in parent path which contains content fragment
         String parentPath = ResourceUtil.getParent(path);
         if (parentPath == null) {
@@ -227,7 +227,7 @@ public final class FileVaultResourceMapper implements FsResourceMapper {
                 + (subPath != null ? "/" + subPath : "");
         return getContentFile(parentPath, nextSubPath);
     }
-    
+
     private boolean hasDotDirFile(File file) {
         File dotDir = new File(file.getPath() + DOT_DIR);
         if (fileStatCache.isDirectory(dotDir)) {
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/LazyModifiedDateResourceMetadata.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/LazyModifiedDateResourceMetadata.java
index 78d0088..a3fcc3a 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/LazyModifiedDateResourceMetadata.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/LazyModifiedDateResourceMetadata.java
@@ -24,7 +24,7 @@ import org.apache.sling.api.resource.ResourceMetadata;
 
 class LazyModifiedDateResourceMetadata extends ResourceMetadata {
     private static final long serialVersionUID = 1L;
-    
+
     private volatile long lastModified = -1;
     private File file;
 
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsItem.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsItem.java
index d5689a9..d711bf6 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsItem.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsItem.java
@@ -45,11 +45,11 @@ import org.apache.sling.fsprovider.internal.mapper.ContentFile;
  * Simplified implementation of read-only content access via the JCR API.
  */
 abstract class FsItem implements Item {
-    
+
     protected final ContentFile contentFile;
     protected final ResourceResolver resolver;
     protected final ValueMap props;
-    
+
     public FsItem(ContentFile contentFile, ResourceResolver resolver) {
         this.contentFile = contentFile;
         this.resolver = resolver;
@@ -124,7 +124,7 @@ abstract class FsItem implements Item {
     public void accept(ItemVisitor visitor) throws RepositoryException {
         // do nothing
     }
-    
+
     @Override
     public String toString() {
         try {
@@ -136,8 +136,8 @@ abstract class FsItem implements Item {
             throw new RuntimeException(ex);
         }
     }
-    
-    
+
+
     // --- unsupported methods ---
 
     @Override
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
index c0fb1cd..061ffdc 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
@@ -61,19 +61,19 @@ import org.apache.sling.fsprovider.internal.mapper.ContentFile;
  * Simplified implementation of read-only content access via the JCR API.
  */
 public final class FsNode extends FsItem implements Node {
-    
+
     public FsNode(ContentFile contentFile, ResourceResolver resolver) {
         super(contentFile, resolver);
     }
-    
+
     private String getPrimaryTypeName() {
         return props.get("jcr:primaryType", String.class);
     }
-    
+
     private String[] getMixinTypeNames() {
         return props.get("jcr:mixinTypes", new String[0]);
     }
-    
+
     @Override
     public String getName() throws RepositoryException {
         if (contentFile.getSubPath() == null) {
@@ -88,14 +88,14 @@ public final class FsNode extends FsItem implements Node {
     public Node getParent() throws ItemNotFoundException, AccessDeniedException, RepositoryException {
         return getNode(ResourceUtil.getParent(getPath()));
     }
-    
+
     @Override
     @SuppressWarnings("null")
     public Node getNode(String relPath) throws PathNotFoundException, RepositoryException {
         if (relPath == null) {
             throw new PathNotFoundException();
         }
-        
+
         // get absolute node path
         String path = relPath;
         if (!StringUtils.startsWith(path,  "/")) {
@@ -116,7 +116,7 @@ public final class FsNode extends FsItem implements Node {
                 return new FsNode(referencedFile, resolver);
             }
         }
-        
+
         // check if node is outside content file
         Node refNode = null;
         Resource resource = resolver.getResource(path);
@@ -224,10 +224,10 @@ public final class FsNode extends FsItem implements Node {
         }
         return mixinTypes;
     }
-    
+
 
     // --- unsupported methods ---
-    
+
     @Override
     public Node addNode(String relPath) throws ItemExistsException, PathNotFoundException, VersionException,
             ConstraintViolationException, LockException, RepositoryException {
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNodeIterator.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNodeIterator.java
index 7565994..3877ac6 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNodeIterator.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNodeIterator.java
@@ -32,7 +32,7 @@ import org.apache.sling.fsprovider.internal.parser.ContentElement;
  * Simplified implementation of read-only content access via the JCR API.
  */
 class FsNodeIterator implements NodeIterator {
-    
+
     private final ContentFile contentFile;
     private final ResourceResolver resolver;
     private final Iterator<Map.Entry<String,ContentElement>> children;
@@ -58,9 +58,9 @@ class FsNodeIterator implements NodeIterator {
         return new FsNode(contentFile.navigateToRelative(nextEntry.getKey()), resolver);
     }
 
-    
+
     // --- unsupported methods ---
-        
+
     public void remove() {
         throw new UnsupportedOperationException();
     }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNodeType.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNodeType.java
index 8d60812..945d7e4 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNodeType.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNodeType.java
@@ -27,10 +27,10 @@ import javax.jcr.nodetype.PropertyDefinition;
 import org.apache.commons.lang3.StringUtils;
 
 class FsNodeType implements NodeType {
-    
+
     private final String name;
     private final boolean mixin;
-    
+
     public FsNodeType(String name, boolean mixin) {
         this.name = name;
         this.mixin = mixin;
@@ -87,8 +87,8 @@ class FsNodeType implements NodeType {
     }
 
 
-    // --- unsupported methods ---    
-    
+    // --- unsupported methods ---
+
     @Override
     public PropertyDefinition[] getDeclaredPropertyDefinitions() {
         throw new UnsupportedOperationException();
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsProperty.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsProperty.java
index bf24aa7..0ff2947 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsProperty.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsProperty.java
@@ -43,16 +43,16 @@ import org.apache.sling.fsprovider.internal.mapper.ContentFile;
  * Simplified implementation of read-only content access via the JCR API.
  */
 class FsProperty extends FsItem implements Property {
-    
+
     private final String propertyName;
     private final Node node;
-    
+
     public FsProperty(ContentFile contentFile, ResourceResolver resolver, String propertyName, Node node) {
         super(contentFile, resolver);
         this.propertyName = propertyName;
         this.node = node;
     }
-    
+
     @Override
     public String getName() throws RepositoryException {
         return propertyName;
@@ -67,7 +67,7 @@ class FsProperty extends FsItem implements Property {
     public Node getNode() throws ItemNotFoundException, ValueFormatException, RepositoryException {
         return node;
     }
-    
+
     @Override
     public String getPath() throws RepositoryException {
         return super.getPath() + "/" + propertyName;
@@ -143,15 +143,15 @@ class FsProperty extends FsItem implements Property {
     public int getType() throws RepositoryException {
         return getValue().getType();
     }
-    
+
     @Override
     public PropertyDefinition getDefinition() throws RepositoryException {
         return new FsPropertyDefinition(propertyName);
     }
 
-    
+
     // --- unsupported methods ---
-    
+
     @Override
     public void setValue(Value value) throws ValueFormatException, VersionException, LockException,
             ConstraintViolationException, RepositoryException {
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyDefinition.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyDefinition.java
index b406fd7..594e215 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyDefinition.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyDefinition.java
@@ -42,7 +42,7 @@ class FsPropertyDefinition implements PropertyDefinition {
     }
 
     private final String name;
-    
+
     public FsPropertyDefinition(String name) {
         this.name = name;
     }
@@ -110,6 +110,6 @@ class FsPropertyDefinition implements PropertyDefinition {
     @Override
     public boolean isQueryOrderable() {
         return false;
-    }    
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyIterator.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyIterator.java
index 335472f..3d85e6f 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyIterator.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyIterator.java
@@ -31,12 +31,12 @@ import org.apache.sling.fsprovider.internal.mapper.ContentFile;
  * Simplified implementation of read-only content access via the JCR API.
  */
 class FsPropertyIterator implements PropertyIterator {
-    
+
     private final Iterator<String> propertyNames;
     private final ContentFile contentFile;
     private final ResourceResolver resolver;
     private final Node node;
-    
+
     public FsPropertyIterator(Iterator<String> propertyNames, ContentFile contentFile, ResourceResolver resolver, Node node) {
         this.propertyNames = propertyNames;
         this.contentFile = contentFile;
@@ -57,9 +57,9 @@ class FsPropertyIterator implements PropertyIterator {
         return new FsProperty(contentFile, resolver, propertyNames.next(), node);
     }
 
-    
+
     // --- unsupported methods ---
-        
+
     public void remove() {
         throw new UnsupportedOperationException();
     }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
index 7d53f88..4143f8f 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
@@ -35,11 +35,11 @@ import org.apache.sling.api.resource.ValueMap;
  * Simplified implementation of read-only content access via the JCR API.
  */
 class FsValue implements Value {
-    
+
     private final ValueMap props;
     private final String propertyName;
     private final int arrayIndex;
-    
+
     public FsValue(ValueMap props, String propertyName) {
         this.props = props;
         this.propertyName = propertyName;
@@ -172,7 +172,7 @@ class FsValue implements Value {
 
 
     // --- unsupported methods ---
-    
+
     @Override
     public InputStream getStream() throws RepositoryException {
         throw new UnsupportedOperationException();
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/DateUtils.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/DateUtils.java
index cf985f5..7b074e9 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/DateUtils.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/DateUtils.java
@@ -29,7 +29,7 @@ import org.apache.jackrabbit.util.ISO8601;
  * This can be removed when Sling API 2.17.0 or higher is referenced.
  */
 final class DateUtils {
-    
+
     private DateUtils() {
         // static methods only
     }
@@ -57,7 +57,7 @@ final class DateUtils {
         }
         return input.getTime();
     }
-    
+
     /**
      * @param input Date value
      * @return ISO8601 string representation or null
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverter.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverter.java
index 5d91e06..da2d86b 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverter.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverter.java
@@ -31,7 +31,7 @@ import java.util.List;
  * This can be removed when Sling API 2.17.0 or higher is referenced.
  */
 final class ObjectConverter {
-    
+
     private ObjectConverter() {
         // static methods only
     }
@@ -47,17 +47,17 @@ final class ObjectConverter {
         if (obj == null) {
             return null;
         }
-        
+
         // check if direct assignment is possible
         if (type.isAssignableFrom(obj.getClass())) {
             return (T)obj;
         }
-        
+
         // convert array elements individually
         if (type.isArray()) {
             return (T)convertToArray(obj, type.getComponentType());
         }
-        
+
         // convert Calendar in Date and vice versa
         if (Calendar.class.isAssignableFrom(type) && obj instanceof Date) {
             return (T)DateUtils.toCalendar((Date)obj);
@@ -66,7 +66,7 @@ final class ObjectConverter {
             return (T)DateUtils.toDate((Calendar)obj);
         }
 
-        // no direct conversion - format to string and try to parse to target type 
+        // no direct conversion - format to string and try to parse to target type
         String result = getSingleValue(obj);
         if (result == null) {
             return null;
@@ -181,5 +181,5 @@ final class ObjectConverter {
             return arrayResult;
         }
     }
-    
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapUtil.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapUtil.java
index ce69941..5ba7b04 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapUtil.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapUtil.java
@@ -25,11 +25,11 @@ import java.util.Map;
 import org.apache.sling.api.resource.ValueMap;
 
 public final class ValueMapUtil {
-    
+
     private ValueMapUtil() {
         // static methods only
     }
-    
+
     /**
      * Convert map to value map.
      * @param content Content map.
@@ -37,7 +37,7 @@ public final class ValueMapUtil {
      */
     public static ValueMap toValueMap(Map<String,Object> content) {
         Map<String,Object> props = new HashMap<>();
-        
+
         for (Map.Entry<String, Object> entry : content.entrySet()) {
             if (entry.getValue() instanceof Collection) {
                 // convert lists to arrays
@@ -47,7 +47,7 @@ public final class ValueMapUtil {
                 props.put(entry.getKey(), entry.getValue());
             }
         }
-        
+
         return new ValueMapDecorator(props);
     }
 
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElement.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElement.java
index 85ead62..77e3cca 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElement.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElement.java
@@ -29,24 +29,24 @@ public interface ContentElement {
      * @return Resource name. The root resource has no name (null).
      */
     String getName();
-    
+
     /**
      * Properties of this resource.
      * @return Properties (keys, values)
      */
     Map<String, Object> getProperties();
-    
+
     /**
      * Get children of current resource. The Map preserves the ordering of children.
      * @return Children (child names, child objects)
      */
     Map<String, ContentElement> getChildren();
-    
+
     /**
      * Get child or descendant
      * @param path Relative path to address child or one of it's descendants (use "/" as hierarchy separator).
      * @return Child or null if no child found with this path
      */
     ContentElement getChild(String path);
-    
+
 }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementHandler.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementHandler.java
index e128943..760aac4 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementHandler.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementHandler.java
@@ -29,9 +29,9 @@ import org.apache.sling.jcr.contentparser.ContentHandler;
  * {@link ContentHandler} implementation that produces a tree of {@link ContentElement} items.
  */
 final class ContentElementHandler implements ContentHandler {
-    
+
     private ContentElement root;
-    private Pattern PATH_PATTERN = Pattern.compile("^((/[^/]+)*)(/([^/]+))$"); 
+    private Pattern PATH_PATTERN = Pattern.compile("^((/[^/]+)*)(/([^/]+))$");
 
     @Override
     public void resource(String path, Map<String, Object> properties) {
@@ -61,7 +61,7 @@ final class ContentElementHandler implements ContentHandler {
             parent.getChildren().put(name, new ContentElementImpl(name, properties));
         }
     }
-    
+
     public ContentElement getRoot() {
         return root;
     }
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementImpl.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementImpl.java
index e7d6dd3..9f139bb 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementImpl.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentElementImpl.java
@@ -24,11 +24,11 @@ import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 
 final class ContentElementImpl implements ContentElement {
-    
+
     private final String name;
     private final Map<String, Object> properties;
     private final Map<String, ContentElement> children = new LinkedHashMap<>();
-    
+
     public ContentElementImpl(String name, Map<String, Object> properties) {
         this.name = name;
         this.properties = properties;
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileCache.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileCache.java
index b4ed805..904d6c7 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileCache.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileCache.java
@@ -32,7 +32,7 @@ public final class ContentFileCache {
 
     private final Map<String,ContentElement> contentCache;
     private final ContentElement NULL_ELEMENT = new ContentElementImpl(null, Collections.<String,Object>emptyMap());
-    
+
     /**
      * @param maxSize Cache size. 0 = caching disabled.
      */
@@ -45,7 +45,7 @@ public final class ContentFileCache {
             this.contentCache = null;
         }
     }
-    
+
     /**
      * Get content.
      * @param path Path (used as cache key).
@@ -55,7 +55,7 @@ public final class ContentFileCache {
     public ContentElement get(String path, File file) {
         return get(path, file, null);
     }
-    
+
     /**
      * Get content.
      * @param path Path (used as cache key).
@@ -89,7 +89,7 @@ public final class ContentFileCache {
             return content;
         }
     }
-    
+
     /**
      * Remove content from cache.
      * @param path Path (used as cache key)
@@ -108,7 +108,7 @@ public final class ContentFileCache {
             contentCache.clear();
         }
     }
-    
+
     /**
      * @return Current cache size
      */
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileParserUtil.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileParserUtil.java
index e0d0e0c..1bdfdf1 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileParserUtil.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileParserUtil.java
@@ -20,8 +20,8 @@ package org.apache.sling.fsprovider.internal.parser;
 
 import static org.apache.jackrabbit.vault.util.Constants.DOT_CONTENT_XML;
 import static org.apache.sling.fsprovider.internal.parser.ContentFileTypes.JCR_XML_SUFFIX;
-import static org.apache.sling.fsprovider.internal.parser.ContentFileTypes.XML_SUFFIX;
 import static org.apache.sling.fsprovider.internal.parser.ContentFileTypes.JSON_SUFFIX;
+import static org.apache.sling.fsprovider.internal.parser.ContentFileTypes.XML_SUFFIX;
 
 import java.io.BufferedInputStream;
 import java.io.File;
@@ -42,16 +42,16 @@ import org.slf4j.LoggerFactory;
  * Parses files that contains content fragments (e.g. JSON, JCR XML).
  */
 class ContentFileParserUtil {
-    
+
     private static final Logger log = LoggerFactory.getLogger(ContentFileParserUtil.class);
-    
+
     private static final ContentParser JSON_PARSER;
     static {
         // workaround for JsonProvider classloader issue until https://issues.apache.org/jira/browse/GERONIMO-6560 is fixed
         ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
         try {
             Thread.currentThread().setContextClassLoader(ContentFileParserUtil.class.getClassLoader());
-            // support comments and tick quotes for JSON parsing - same as in JCR content loader 
+            // support comments and tick quotes for JSON parsing - same as in JCR content loader
             JSON_PARSER = ContentParserFactory.create(ContentType.JSON, new ParserOptions()
                     .jsonParserFeatures(EnumSet.of(JsonParserFeature.COMMENTS, JsonParserFeature.QUOTE_TICK)));
         }
@@ -61,11 +61,11 @@ class ContentFileParserUtil {
     }
     private static final ContentParser JCR_XML_PARSER = ContentParserFactory.create(ContentType.JCR_XML);
     private static final ContentParser XML_PARSER = ContentParserFactory.create(ContentType.XML);
-    
+
     private ContentFileParserUtil() {
         // static methods only
     }
-    
+
     /**
      * Parse content from file.
      * @param file File. Type is detected automatically.
@@ -86,7 +86,7 @@ class ContentFileParserUtil {
         }
         return null;
     }
-    
+
     /**
      * Parse content from file.
      * @param file File. Type is detected automatically.
@@ -114,7 +114,7 @@ class ContentFileParserUtil {
         }
         return null;
     }
-    
+
     private static ContentElement parse(ContentParser contentParser, File file) throws IOException {
         try (FileInputStream fis = new FileInputStream(file);
                 BufferedInputStream bis = new BufferedInputStream(fis)) {
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java
index 9cd9931..6912c46 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/parser/ContentFileTypes.java
@@ -24,7 +24,7 @@ import org.apache.sling.jcr.contentparser.ContentType;
  * Content file types.
  */
 public final class ContentFileTypes {
-    
+
     /**
      * JSON content files.
      */
@@ -34,14 +34,14 @@ public final class ContentFileTypes {
      * XML content files.
      */
     public static final String XML_SUFFIX = "." + ContentType.XML.getExtension();
-        
+
     /**
      * JCR XML content files.
      */
     public static final String JCR_XML_SUFFIX = "." + ContentType.JCR_XML.getExtension();
-        
+
     private ContentFileTypes() {
         // static methods only
     }
-    
+
 }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
index d2b1143..89f8837 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FileMonitorTest.java
@@ -45,10 +45,10 @@ public class FileMonitorTest {
 
     private static final int CHECK_INTERVAL = 120;
     private static final int WAIT_INTERVAL = 250;
-    
+
     private final File tempDir;
     private final ResourceListener resourceListener = new ResourceListener();
-    
+
     public FileMonitorTest() throws Exception {
         tempDir = Files.createTempDirectory(getClass().getName()).toFile();
     }
@@ -62,7 +62,7 @@ public class FileMonitorTest {
                 tempDir.mkdirs();
                 File sourceDir = new File("src/test/resources/fs-test");
                 FileUtils.copyDirectory(sourceDir, tempDir);
-                
+
                 // mount temp. directory
                 context.registerInjectActivateService(new FsResourceProvider(),
                         "provider.file", tempDir.getPath(),
@@ -70,7 +70,7 @@ public class FileMonitorTest {
                         "provider.checkinterval", CHECK_INTERVAL,
                         "provider.fs.mode", FsMode.INITIAL_CONTENT.name(),
                         "provider.initial.content.import.options", "overwrite:=true;ignoreImportProviders:=jcr.xml");
-                
+
                 // register resource change listener
                 context.registerService(ResourceChangeListener.class, resourceListener,
                         ResourceChangeListener.PATHS, new String[] { "/fs-test" });
@@ -89,69 +89,69 @@ public class FileMonitorTest {
     public void testUpdateFile() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file1a = new File(tempDir, "folder1/file1a.txt");
         FileUtils.touch(file1a);
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(1, changes.size());
         assertChange(changes, "/fs-test/folder1/file1a.txt", ChangeType.CHANGED);
     }
-    
+
     @Test
     public void testAddFile() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file1c = new File(tempDir, "folder1/file1c.txt");
         FileUtils.write(file1c, "newcontent");
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/fs-test/folder1", ChangeType.CHANGED);
         assertChange(changes, "/fs-test/folder1/file1c.txt", ChangeType.ADDED);
     }
-    
+
     @Test
     public void testRemoveFile() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file1a = new File(tempDir, "folder1/file1a.txt");
         file1a.delete();
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/fs-test/folder1", ChangeType.CHANGED);
         assertChange(changes, "/fs-test/folder1/file1a.txt", ChangeType.REMOVED);
     }
-    
+
     @Test
     public void testAddFolder() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File folder99 = new File(tempDir, "folder99");
         folder99.mkdir();
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/fs-test", ChangeType.CHANGED);
         assertChange(changes, "/fs-test/folder99", ChangeType.ADDED);
     }
-    
+
     @Test
     public void testRemoveFolder() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File folder1 = new File(tempDir, "folder1");
         FileUtils.deleteDirectory(folder1);
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
@@ -163,25 +163,25 @@ public class FileMonitorTest {
     public void testUpdateContent() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file1a = new File(tempDir, "folder2/content.json");
         FileUtils.touch(file1a);
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertChange(changes, "/fs-test/folder2/content", ChangeType.REMOVED);
         assertChange(changes, "/fs-test/folder2/content", ChangeType.ADDED);
         assertChange(changes, "/fs-test/folder2/content/jcr:content", ChangeType.ADDED);
     }
-    
+
     @Test
     public void testAddContent() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file1c = new File(tempDir, "folder1/file1c.json");
         FileUtils.write(file1c, "{\"prop1\":\"value1\",\"child1\":{\"prop2\":\"value1\"}}");
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(3, changes.size());
@@ -189,20 +189,20 @@ public class FileMonitorTest {
         assertChange(changes, "/fs-test/folder1/file1c", ChangeType.ADDED);
         assertChange(changes, "/fs-test/folder1/file1c/child1", ChangeType.ADDED);
     }
-    
+
     @Test
     public void testRemoveContent() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file1a = new File(tempDir, "folder2/content.json");
         file1a.delete();
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/fs-test/folder2", ChangeType.CHANGED);
         assertChange(changes, "/fs-test/folder2/content", ChangeType.REMOVED);
     }
-    
+
 }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultContentTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultContentTest.java
index 40a1af8..2dcd9c1 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultContentTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultContentTest.java
@@ -80,16 +80,16 @@ public class FileVaultContentTest {
     public void testDamAsset() {
         assertNotNull(damAsset);
         assertEquals("app:Asset", damAsset.getResourceType());
-        
+
         Resource content = damAsset.getChild("jcr:content");
         assertNotNull(content);
         assertEquals("app:AssetContent", content.getResourceType());
-        
+
         Resource metadata = content.getChild("metadata");
         assertNotNull(metadata);
         ValueMap props = metadata.getValueMap();
         assertEquals((Integer)4, props.get("app:Bitsperpixel", Integer.class));
-        
+
         assertFolder(content, "renditions");
         assertFile(content, "renditions/original", null);
         assertFile(content, "renditions/web.1280.1280.png", null);
@@ -125,13 +125,13 @@ public class FileVaultContentTest {
         Node conference = en.addNode("conference", "nt:folder");
         conference.addNode("page2", "nt:folder");
         samples.addNode("it", "nt:folder");
-        
+
         // pass-through because of filter
         assertNotNull(context.resourceResolver().getResource("/content/samples/en/conference"));
         assertNotNull(sampleContent.getChild("en/conference"));
         assertNotNull(context.resourceResolver().getResource("/content/samples/en/conference/page2"));
         assertNotNull(sampleContent.getChild("en/conference/page2"));
-        
+
         // hidden because overlayed by resource provider
         assertNull(context.resourceResolver().getResource("/content/samples/it"));
         assertNull(sampleContent.getChild("it"));
@@ -146,7 +146,7 @@ public class FileVaultContentTest {
         Resource extraContent = sampleContent.getChild("en/extra/extracontent");
         assertNotNull(extraContent);
         assertEquals("apps/app1/components/comp1", extraContent.getResourceType());
-        
+
         Resource layout = extraContent.getChild("layout");
         assertNotNull(layout);
         assertEquals("apps/app1/components/comp2", layout.getResourceType());
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
index 76e0525..763c64a 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/FileVaultFileMonitorTest.java
@@ -42,13 +42,13 @@ import org.junit.Test;
  * Test events when changing file system content (FileVault XML).
  */
 public class FileVaultFileMonitorTest {
-    
+
     private static final int CHECK_INTERVAL = 120;
     private static final int WAIT_INTERVAL = 250;
 
     private final File tempDir;
     private final ResourceListener resourceListener = new ResourceListener();
-    
+
     public FileVaultFileMonitorTest() throws Exception {
         tempDir = Files.createTempDirectory(getClass().getName()).toFile();
     }
@@ -62,7 +62,7 @@ public class FileVaultFileMonitorTest {
                 tempDir.mkdirs();
                 File sourceDir = new File("src/test/resources/vaultfs-test");
                 FileUtils.copyDirectory(sourceDir, tempDir);
-                
+
                 // mount temp. directory
                 context.registerInjectActivateService(new FsResourceProvider(),
                         "provider.file", tempDir.getPath() + "/jcr_root",
@@ -76,7 +76,7 @@ public class FileVaultFileMonitorTest {
                         "provider.root", "/content/samples",
                         "provider.checkinterval", CHECK_INTERVAL,
                         "provider.fs.mode", FsMode.FILEVAULT_XML.name());
-                
+
                 // register resource change listener
                 context.registerService(ResourceChangeListener.class, resourceListener,
                         ResourceChangeListener.PATHS, new String[] { "/content/dam/talk.png", "/content/samples" });
@@ -95,69 +95,69 @@ public class FileVaultFileMonitorTest {
     public void testUpdateFile() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file = new File(tempDir, "jcr_root/content/dam/talk.png/_jcr_content/renditions/web.1280.1280.png");
         FileUtils.touch(file);
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(1, changes.size());
         assertChange(changes, "/content/dam/talk.png/jcr:content/renditions/web.1280.1280.png", ChangeType.CHANGED);
     }
-    
+
     @Test
     public void testAddFile() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file = new File(tempDir, "jcr_root/content/dam/talk.png/_jcr_content/renditions/text.txt");
         FileUtils.write(file, "newcontent");
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/content/dam/talk.png/jcr:content/renditions", ChangeType.CHANGED);
         assertChange(changes, "/content/dam/talk.png/jcr:content/renditions/text.txt", ChangeType.ADDED);
     }
-    
+
     @Test
     public void testRemoveFile() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file = new File(tempDir, "jcr_root/content/dam/talk.png/_jcr_content/renditions/web.1280.1280.png");
         file.delete();
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/content/dam/talk.png/jcr:content/renditions", ChangeType.CHANGED);
         assertChange(changes, "/content/dam/talk.png/jcr:content/renditions/web.1280.1280.png", ChangeType.REMOVED);
     }
-    
+
     @Test
     public void testAddFolder() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File folder = new File(tempDir, "jcr_root/content/dam/talk.png/_jcr_content/newfolder");
         folder.mkdir();
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/content/dam/talk.png/jcr:content", ChangeType.CHANGED);
         assertChange(changes, "/content/dam/talk.png/jcr:content/newfolder", ChangeType.ADDED);
     }
-    
+
     @Test
     public void testRemoveFolder() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File folder = new File(tempDir, "jcr_root/content/dam/talk.png/_jcr_content/renditions");
         FileUtils.deleteDirectory(folder);
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
@@ -169,22 +169,22 @@ public class FileVaultFileMonitorTest {
     public void testUpdateContent() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file = new File(tempDir, "jcr_root/content/samples/en/.content.xml");
         FileUtils.touch(file);
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertChange(changes, "/content/samples/en", ChangeType.REMOVED);
         assertChange(changes, "/content/samples/en", ChangeType.ADDED);
         assertChange(changes, "/content/samples/en/jcr:content", ChangeType.ADDED);
     }
-    
+
     @Test
     public void testAddContent() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file = new File(tempDir, "jcr_root/content/samples/fr/.content.xml");
         file.getParentFile().mkdir();
         FileUtils.write(file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
@@ -192,43 +192,43 @@ public class FileVaultFileMonitorTest {
                 + "xmlns:sling=\"http://sling.apache.org/jcr/sling/1.0\" jcr:primaryType=\"app:Page\">\n"
                 + "<jcr:content jcr:primaryType=\"app:PageContent\"/>\n"
                 + "</jcr:root>");
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertChange(changes, "/content/samples", ChangeType.CHANGED);
         assertChange(changes, "/content/samples/fr", ChangeType.ADDED);
         assertChange(changes, "/content/samples/fr/jcr:content", ChangeType.ADDED);
     }
-    
+
     @Test
     public void testRemoveContent() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file = new File(tempDir, "jcr_root/content/samples/en");
         FileUtils.deleteDirectory(file);
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/content/samples", ChangeType.CHANGED);
         assertChange(changes, "/content/samples/en", ChangeType.REMOVED);
     }
-    
+
     @Test
     public void testRemoveContentDotXmlOnly() throws Exception {
         List<ResourceChange> changes = resourceListener.getChanges();
         assertTrue(changes.isEmpty());
-        
+
         File file = new File(tempDir, "jcr_root/content/samples/en/.content.xml");
         file.delete();
-        
+
         Thread.sleep(WAIT_INTERVAL);
 
         assertEquals(2, changes.size());
         assertChange(changes, "/content/samples/en", ChangeType.CHANGED);
-        // this second event is not fully correct, but this is a quite special case, accept it for now 
+        // this second event is not fully correct, but this is a quite special case, accept it for now
         assertChange(changes, "/content/samples/en", ChangeType.REMOVED);
     }
-    
+
 }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/JcrMixedTest.java b/src/test/java/org/apache/sling/fsprovider/internal/JcrMixedTest.java
index 5646c78..3c7be0d 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/JcrMixedTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/JcrMixedTest.java
@@ -53,7 +53,7 @@ public class JcrMixedTest {
     public void setUp() throws RepositoryException {
         root = context.resourceResolver().getResource("/");
         fsroot = context.resourceResolver().getResource("/fs-test");
-        
+
         // prepare mixed JCR content
         Node node = root.adaptTo(Node.class);
         Node fstest = node.addNode("fs-test", "nt:folder");
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/JcrXmlContentTest.java b/src/test/java/org/apache/sling/fsprovider/internal/JcrXmlContentTest.java
index 2bca0eb..c9f8c66 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/JcrXmlContentTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/JcrXmlContentTest.java
@@ -125,12 +125,12 @@ public class JcrXmlContentTest {
     public void testContent_Datatypes() {
         Resource underTest = fsroot.getChild("folder3/content/jcr:content");
         ValueMap props = underTest.getValueMap();
-        
+
         assertEquals("en", props.get("jcr:title", String.class));
         assertEquals(true, props.get("includeAside", false));
         assertEquals((Long)1234567890123L, props.get("longProp", Long.class));
-        assertEquals((Double)1.2345d, props.get("decimalProp", Double.class), 0.00001d);
-        
+        assertEquals(1.2345d, props.get("decimalProp", Double.class), 0.00001d);
+
         assertArrayEquals(new String[] { "aa", "bb", "cc" }, props.get("stringPropMulti", String[].class));
         assertArrayEquals(new Long[] { 1234567890123L, 55L }, props.get("longPropMulti", Long[].class));
     }
@@ -156,7 +156,7 @@ public class JcrXmlContentTest {
         Resource folder3 = fsroot.getChild("folder3");
         List<Resource> children = Lists.newArrayList(folder3.listChildren());
         Collections.sort(children, new ResourcePathComparator());
-        
+
         assertEquals(2, children.size());
         Resource child1 = children.get(0);
         assertEquals("content", child1.getName());
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java b/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
index 2daed26..84226e3 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
@@ -142,13 +142,13 @@ public class JsonContentTest {
     public void testContent_Datatypes() {
         Resource underTest = fsroot.getChild("folder2/content/toolbar/profiles/jcr:content");
         ValueMap props = underTest.getValueMap();
-        
+
         assertEquals("Profiles", props.get("jcr:title", String.class));
         assertEquals(true, props.get("booleanProp", false));
         assertEquals((Long)1234567890123L, props.get("longProp", Long.class));
-        assertEquals((Double)1.2345d, props.get("decimalProp", Double.class), 0.00001d);
+        assertEquals(1.2345d, props.get("decimalProp", Double.class), 0.00001d);
         assertEquals(new BigDecimal("1.2345"), props.get("decimalProp", BigDecimal.class));
-        
+
         assertArrayEquals(new String[] { "aa", "bb", "cc" }, props.get("stringPropMulti", String[].class));
         assertArrayEquals(new Long[] { 1234567890123L, 55L }, props.get("longPropMulti", Long[].class));
     }
@@ -158,13 +158,13 @@ public class JsonContentTest {
         Resource underTest = fsroot.getChild("folder2/content/toolbar/profiles/jcr:content");
         ValueMap props = underTest.getValueMap();
         Node node = underTest.adaptTo(Node.class);
-        
+
         assertEquals("/fs-test/folder2/content/toolbar/profiles/jcr:content", node.getPath());
         assertEquals(6, node.getDepth());
-        
+
         assertTrue(node.hasProperty(JcrConstants.JCR_PRIMARYTYPE));
         assertTrue(node.getProperty(JcrConstants.JCR_PRIMARYTYPE).getDefinition().isProtected());
-        
+
         assertTrue(node.hasProperty("jcr:title"));
         assertEquals(PropertyType.STRING, node.getProperty("jcr:title").getType());
         assertFalse(node.getProperty("jcr:title").isMultiple());
@@ -179,7 +179,7 @@ public class JsonContentTest {
         assertEquals(PropertyType.DECIMAL, node.getProperty("decimalProp").getType());
         assertEquals(1.2345d, node.getProperty("decimalProp").getDouble(), 0.00001d);
         assertEquals(new BigDecimal("1.2345"), node.getProperty("decimalProp").getDecimal());
-        
+
         assertEquals(PropertyType.STRING, node.getProperty("stringPropMulti").getType());
         assertTrue(node.getProperty("stringPropMulti").isMultiple());
         Value[] stringPropMultiValues = node.getProperty("stringPropMulti").getValues();
@@ -194,7 +194,7 @@ public class JsonContentTest {
         assertEquals(2, longPropMultiValues.length);
         assertEquals(1234567890123L, longPropMultiValues[0].getLong());
         assertEquals(55L, longPropMultiValues[1].getLong());
-        
+
         // assert property iterator
         Set<String> propertyNames = new HashSet<>();
         PropertyIterator propertyIterator = node.getProperties();
@@ -210,7 +210,7 @@ public class JsonContentTest {
             nodeNames.add(nodeIterator.nextNode().getName());
         }
         assertEquals(ImmutableSet.of("par", "rightpar"), nodeNames);
-        
+
         // node hierarchy
         assertTrue(node.hasNode("rightpar"));
         Node rightpar = node.getNode("rightpar");
@@ -221,7 +221,7 @@ public class JsonContentTest {
         assertEquals(underTest.getParent().getPath(), ancestor.getPath());
         Node root = (Node)rightpar.getAncestor(0);
         assertEquals("/", root.getPath());
-        
+
         // node types
         assertTrue(node.isNodeType("app:PageContent"));
         assertEquals("app:PageContent", node.getPrimaryNodeType().getName());
@@ -239,7 +239,7 @@ public class JsonContentTest {
         Resource underTest = fsroot.getChild("folder2/content/jcr:content/par/title_2");
         assertEquals(ParserOptions.DEFAULT_PRIMARY_TYPE, underTest.adaptTo(Node.class).getPrimaryNodeType().getName());
     }
-    
+
     @Test
     public void testContent_InvalidPath() {
         Resource underTest = fsroot.getChild("folder2/content/jcr:content/xyz");
@@ -261,7 +261,7 @@ public class JsonContentTest {
         Resource folder2 = fsroot.getChild("folder2");
         List<Resource> children = Lists.newArrayList(folder2.listChildren());
         Collections.sort(children, new ResourcePathComparator());
-        
+
         assertEquals(2, children.size());
         Resource child1 = children.get(0);
         assertEquals("content", child1.getName());
@@ -278,7 +278,7 @@ public class JsonContentTest {
         Resource file21a = fsroot.getChild("folder2/folder21/file21a.txt");
         assertEquals("nt:file", file21a.getResourceType());
         assertEquals("/my/super/type", file21a.getResourceSuperType());
-        
+
         ValueMap props = file21a.getValueMap();
         assertEquals("nt:file", props.get("jcr:primaryType", String.class));
         assertEquals("/my/super/type", props.get("sling:resourceSuperType", String.class));
@@ -286,7 +286,7 @@ public class JsonContentTest {
         assertArrayEquals(new String[] { "mix:language" }, props.get("jcr:mixinTypes", String[].class));
 
         assertNull(fsroot.getChild("folder2/folder21/file21a.txt.xml"));
-        
+
         Node node = file21a.adaptTo(Node.class);
         assertNotNull(node);
         assertEquals("/my/super/type", node.getProperty("sling:resourceSuperType").getString());
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java b/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
index 4b9e300..1211b70 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
@@ -53,7 +53,7 @@ class TestUtils {
     public static class RegisterFsResourcePlugin extends AbstractContextPlugin<SlingContextImpl> {
         private final Map<String,Object> props;
         public RegisterFsResourcePlugin(Object... props) {
-            this.props = MapUtil.toMap(props); 
+            this.props = MapUtil.toMap(props);
         }
         @Override
         public void beforeSetUp(SlingContextImpl context) throws Exception {
@@ -70,10 +70,10 @@ class TestUtils {
     public static void assertFolder(Resource resource, String path) {
         Resource folder = resource.getChild(path);
         assertNotNull(path, folder);
-        
+
         assertThat(folder, ResourceMatchers.props("jcr:primaryType", "nt:folder"));
         assertEquals("nt:folder", folder.getResourceType());
-        
+
         assertNull(folder.getResourceSuperType());
         assertEquals(folder.getName(), folder.adaptTo(File.class).getName());
         assertTrue(StringUtils.contains(folder.adaptTo(URL.class).toString(), folder.getName()));
@@ -82,13 +82,13 @@ class TestUtils {
     public static void assertFile(Resource resource, String path, String content) {
         Resource file = resource.getChild(path);
         assertNotNull(path, file);
-        
+
         assertThat(file, ResourceMatchers.props("jcr:primaryType", "nt:file"));
         assertEquals("nt:file", file.getResourceType());
-        
+
         assertNull(file.getResourceSuperType());
         assertEquals(file.getName(), Escape.fileToResourceName(file.adaptTo(File.class).getName()));
-        
+
         if (content != null) {
             try {
                 try (InputStream is = file.adaptTo(InputStream.class)) {
@@ -100,7 +100,7 @@ class TestUtils {
                 throw new RuntimeException(ex);
             }
         }
-    }    
+    }
 
     public static void assertChange(List<ResourceChange> changes, String path, ChangeType changeType) {
         boolean found = false;
@@ -112,7 +112,7 @@ class TestUtils {
         }
         assertTrue("Change with path=" + path + ", changeType=" + changeType + " expected", found);
     }
-    
+
     public static class ResourceListener implements ResourceChangeListener {
         private final List<ResourceChange> allChanges = new ArrayList<>();
         @Override
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/mapper/ContentFileTest.java b/src/test/java/org/apache/sling/fsprovider/internal/mapper/ContentFileTest.java
index 3a6a747..f51dcb3 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/mapper/ContentFileTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/mapper/ContentFileTest.java
@@ -31,17 +31,17 @@ import org.apache.sling.fsprovider.internal.parser.ContentFileCache;
 import org.junit.Test;
 
 public class ContentFileTest {
-    
+
     private ContentFileCache contentFileCache = new ContentFileCache(0);
 
     @Test
     public void testRootContent() {
         File file = new File("src/test/resources/fs-test/folder2/content.json");
-        
+
         ContentFile underTest = new ContentFile(file, "/fs-test/folder2/content", null, contentFileCache);
         assertEquals(file, underTest.getFile());
         assertNull(underTest.getSubPath());
-        
+
         assertTrue(underTest.hasContent());
 
         ContentElement content = underTest.getContent();
@@ -56,11 +56,11 @@ public class ContentFileTest {
     @Test
     public void testContentLevel1() {
         File file = new File("src/test/resources/fs-test/folder2/content.json");
-        
+
         ContentFile underTest = new ContentFile(file, "/fs-test/folder2/content", "jcr:content", contentFileCache);
         assertEquals(file, underTest.getFile());
         assertEquals("jcr:content", underTest.getSubPath());
-        
+
         assertTrue(underTest.hasContent());
 
         ContentElement content = underTest.getContent();
@@ -73,11 +73,11 @@ public class ContentFileTest {
     @Test
     public void testContentLevel5() {
         File file = new File("src/test/resources/fs-test/folder2/content.json");
-        
+
         ContentFile underTest = new ContentFile(file, "/fs-test/folder2/content", "jcr:content/par/image/file/jcr:content", contentFileCache);
         assertEquals(file, underTest.getFile());
         assertEquals("jcr:content/par/image/file/jcr:content", underTest.getSubPath());
-        
+
         assertTrue(underTest.hasContent());
 
         ContentElement content = underTest.getContent();
@@ -90,11 +90,11 @@ public class ContentFileTest {
     @Test
     public void testContentProperty() {
         File file = new File("src/test/resources/fs-test/folder2/content.json");
-        
+
         ContentFile underTest = new ContentFile(file, "/fs-test/folder2/content", "jcr:content/jcr:title", contentFileCache);
         assertEquals(file, underTest.getFile());
         assertEquals("jcr:content/jcr:title", underTest.getSubPath());
-        
+
         assertFalse(underTest.hasContent());
     }
 
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/Convert.java b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/Convert.java
index 15657cc..adf49c1 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/Convert.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/Convert.java
@@ -32,11 +32,11 @@ import org.apache.commons.lang3.ClassUtils;
  * This is copied from org.apache.sling.api.wrappers.impl.Convert
  */
 final class Convert {
-    
+
     private Convert() {
         // static methods only
     }
-    
+
     @SuppressWarnings("unchecked")
     public static class ConversionAssert<T,U> {
         private final T input1;
@@ -46,7 +46,7 @@ final class Convert {
         private U expected2;
         private U nullValue;
         private Class<U> expectedType;
-        
+
         private ConversionAssert(T input1, T input2, boolean inputTypePrimitive) {
             this.input1 = input1;
             this.input2 = input2;
@@ -55,7 +55,7 @@ final class Convert {
                 this.inputType = (Class<T>)ClassUtils.wrapperToPrimitive(this.inputType);
             }
         }
-        
+
         private void expected(U expected1, U expected2, boolean expectedTypePrimitive) {
             this.expected1 = expected1;
             this.expected2 = expected2;
@@ -64,7 +64,7 @@ final class Convert {
                 expectedType = (Class<U>)ClassUtils.wrapperToPrimitive(this.expectedType);
             }
         }
-        
+
         /**
          * @param expected1 Singleton or first array expected result value
          * @param expected2 Second array expected result value
@@ -84,7 +84,7 @@ final class Convert {
             expected(expected1, expected2, true);
             return this;
         }
-        
+
         /**
          * @param expected1 Singleton or first array expected result value
          * @param expected2 Second array expected result value
@@ -96,7 +96,7 @@ final class Convert {
             this.expectedType = expectedType;
             return this;
         }
-        
+
         /**
          * @param nullValue Result value in case of null
          */
@@ -104,7 +104,7 @@ final class Convert {
             this.nullValue = nullValue;
             return this;
         }
-        
+
         /**
          * Do assertion
          */
@@ -132,10 +132,10 @@ final class Convert {
 
     private static <T,U> void assertPermuations(T input1, T input2, Class<T> inputType,
             U expected1, U expected2, U nullValue, Class<U> expectedType, Class<U[]> expectedArrayType) {
-        
+
         // single value to single value
         assertConversion(expected1, input1, expectedType);
-        
+
         // single value to array
         Object expectedSingletonArray;
         if (expected1 == null && expected2 == null) {
@@ -146,7 +146,7 @@ final class Convert {
             Array.set(expectedSingletonArray, 0, expected1);
         }
         assertConversion(expectedSingletonArray, input1, expectedArrayType);
-        
+
         // array to array
         Object inputDoubleArray = Array.newInstance(inputType, 2);
         Array.set(inputDoubleArray, 0, input1);
@@ -161,16 +161,16 @@ final class Convert {
             Array.set(expectedDoubleArray, 1,  expected2);
         }
         assertConversion(expectedDoubleArray, inputDoubleArray, expectedArrayType);
-        
+
         // array to single (first) value
         assertConversion(expected1, inputDoubleArray, expectedType);
-        
+
         // null to single value
         assertConversion(nullValue, null, expectedType);
-        
+
         // null to array
         assertConversion(null, null, expectedArrayType);
-        
+
         // empty array to single value
         Object inputEmptyArray = Array.newInstance(inputType, 0);
         assertConversion(nullValue, inputEmptyArray, expectedType);
@@ -179,7 +179,7 @@ final class Convert {
         Object expectedEmptyArray = Array.newInstance(expectedType, 0);
         assertConversion(expectedEmptyArray, inputEmptyArray, expectedArrayType);
     }
-    
+
     @SuppressWarnings("unchecked")
     private static <T,U> void assertConversion(Object expected, Object input, Class<U> type) {
         U result = ObjectConverter.convert(input, type);
@@ -194,7 +194,7 @@ final class Convert {
             assertEquals(msg, toStringIfDate(expected), toStringIfDate(result));
         }
     }
-    
+
     private static String toString(Object input) {
         if (input == null) {
             return "null";
@@ -215,7 +215,7 @@ final class Convert {
             return toStringIfDate(input).toString();
         }
     }
-    
+
     private static Object toStringIfDate(Object input) {
         if (input == null) {
             return null;
@@ -238,5 +238,5 @@ final class Convert {
         }
         return input;
     }
-        
+
 }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverterTest.java b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverterTest.java
index 8c21a70..a0a46f8 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverterTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ObjectConverterTest.java
@@ -36,7 +36,7 @@ import org.junit.Test;
  * This is copied from org.apache.sling.api.wrappers.impl.ObjectConverterTest
  */
 public class ObjectConverterTest {
-    
+
     private static final String STRING_1 = "item1";
     private static final String STRING_2 = "item2";
     private static final boolean BOOLEAN_1 = true;
@@ -85,24 +85,24 @@ public class ObjectConverterTest {
         Convert.from(CALENDAR_1, CALENDAR_2).to(calendarToString(CALENDAR_1), calendarToString(CALENDAR_2)).test();
         Convert.from(DATE_1, DATE_2).to(calendarToString(toCalendar(DATE_1)), calendarToString(toCalendar(DATE_2))).test();
     }
-    
+
     @Test
     public void testToBoolean() {
         Convert.fromPrimitive(BOOLEAN_1, BOOLEAN_2).to(BOOLEAN_1, BOOLEAN_2).test();
         Convert.from(BOOLEAN_1, BOOLEAN_2).to(BOOLEAN_1, BOOLEAN_2).test();
         Convert.from(Boolean.toString(BOOLEAN_1), Boolean.toString(BOOLEAN_2)).to(BOOLEAN_1, BOOLEAN_2).test();
-        
+
         // test other types that should not be converted
         Convert.<Integer,Boolean>from(INT_1, INT_2).toNull(Boolean.class).test();
         Convert.<Date,Boolean>from(DATE_1, DATE_2).toNull(Boolean.class).test();
     }
-    
+
     @Test
     public void testToByte() {
         Convert.fromPrimitive(BYTE_1, BYTE_2).to(BYTE_1, BYTE_2).test();
         Convert.from(BYTE_1, BYTE_2).to(BYTE_1, BYTE_2).test();
         Convert.from(Byte.toString(BYTE_1), Byte.toString(BYTE_2)).to(BYTE_1, BYTE_2).test();
-        
+
         // test conversion from other number types
         Convert.from(INT_1, INT_2).to((byte)INT_1, (byte)INT_2).test();
         Convert.fromPrimitive(INT_1, INT_2).to((byte)INT_1, (byte)INT_2).test();
@@ -110,13 +110,13 @@ public class ObjectConverterTest {
         // test other types that should not be converted
         Convert.<Date,Byte>from(DATE_1, DATE_2).toNull(Byte.class).test();
     }
-    
+
     @Test
     public void testToShort() {
         Convert.fromPrimitive(SHORT_1, SHORT_2).to(SHORT_1, SHORT_2).test();
         Convert.from(SHORT_1, SHORT_2).to(SHORT_1, SHORT_2).test();
         Convert.from(Short.toString(SHORT_1), Short.toString(SHORT_2)).to(SHORT_1, SHORT_2).test();
-        
+
         // test conversion from other number types
         Convert.from(INT_1, INT_2).to((short)INT_1, (short)INT_2).test();
         Convert.fromPrimitive(INT_1, INT_2).to((short)INT_1, (short)INT_2).test();
@@ -124,13 +124,13 @@ public class ObjectConverterTest {
         // test other types that should not be converted
         Convert.<Date,Short>from(DATE_1, DATE_2).toNull(Short.class).test();
     }
-    
+
     @Test
     public void testToInteger() {
         Convert.fromPrimitive(INT_1, INT_2).to(INT_1, INT_2).test();
         Convert.from(INT_1, INT_2).to(INT_1, INT_2).test();
         Convert.from(Integer.toString(INT_1), Integer.toString(INT_2)).to(INT_1, INT_2).test();
-        
+
         // test conversion from other number types
         Convert.from(SHORT_1, SHORT_2).to((int)SHORT_1, (int)SHORT_2).test();
         Convert.fromPrimitive(SHORT_1, SHORT_2).to((int)SHORT_1, (int)SHORT_2).test();
@@ -138,13 +138,13 @@ public class ObjectConverterTest {
         // test other types that should not be converted
         Convert.<Date,Integer>from(DATE_1, DATE_2).toNull(Integer.class).test();
     }
-    
+
     @Test
     public void testToLong() {
         Convert.fromPrimitive(LONG_1, LONG_2).to(LONG_1, LONG_2).test();
         Convert.from(LONG_1, LONG_2).to(LONG_1, LONG_2).test();
         Convert.from(Long.toString(LONG_1), Long.toString(LONG_2)).to(LONG_1, LONG_2).test();
-        
+
         // test conversion from other number types
         Convert.from(SHORT_1, SHORT_2).to((long)SHORT_1, (long)SHORT_2).test();
         Convert.fromPrimitive(SHORT_1, SHORT_2).to((long)SHORT_1, (long)SHORT_2).test();
@@ -152,13 +152,13 @@ public class ObjectConverterTest {
         // test other types that should not be converted
         Convert.<Date,Long>from(DATE_1, DATE_2).toNull(Long.class).test();
     }
-    
+
     @Test
     public void testToFloat() {
         Convert.fromPrimitive(FLOAT_1, FLOAT_2).to(FLOAT_1, FLOAT_2).test();
         Convert.from(FLOAT_1, FLOAT_2).to(FLOAT_1, FLOAT_2).test();
         Convert.from(Float.toString(FLOAT_1), Float.toString(FLOAT_2)).to(FLOAT_1, FLOAT_2).test();
-        
+
         // test conversion from other number types
         Convert.from(SHORT_1, SHORT_2).to((float)SHORT_1, (float)SHORT_2).test();
         Convert.fromPrimitive(SHORT_1, SHORT_2).to((float)SHORT_1, (float)SHORT_2).test();
@@ -166,13 +166,13 @@ public class ObjectConverterTest {
         // test other types that should not be converted
         Convert.<Date,Float>from(DATE_1, DATE_2).toNull(Float.class).test();
     }
-    
+
     @Test
     public void testToDouble() {
         Convert.fromPrimitive(DOUBLE_1, DOUBLE_2).to(DOUBLE_1, DOUBLE_2).test();
         Convert.from(DOUBLE_1, DOUBLE_2).to(DOUBLE_1, DOUBLE_2).test();
         Convert.from(Double.toString(DOUBLE_1), Double.toString(DOUBLE_2)).to(DOUBLE_1, DOUBLE_2).test();
-        
+
         // test conversion from other number types
         Convert.from(SHORT_1, SHORT_2).to((double)SHORT_1, (double)SHORT_2).test();
         Convert.fromPrimitive(SHORT_1, SHORT_2).to((double)SHORT_1, (double)SHORT_2).test();
@@ -180,12 +180,12 @@ public class ObjectConverterTest {
         // test other types that should not be converted
         Convert.<Date,Double>from(DATE_1, DATE_2).toNull(Double.class).test();
     }
-    
+
     @Test
     public void testToBigDecimal() {
         Convert.from(BIGDECIMAL_1, BIGDECIMAL_2).to(BIGDECIMAL_1, BIGDECIMAL_2).test();
         Convert.from(BIGDECIMAL_1.toString(), BIGDECIMAL_2.toString()).to(BIGDECIMAL_1, BIGDECIMAL_2).test();
-        
+
         // test conversion from other number types
         Convert.from(LONG_1, LONG_2).to(BigDecimal.valueOf(LONG_1), BigDecimal.valueOf(LONG_2)).test();
         Convert.fromPrimitive(LONG_1, LONG_2).to(BigDecimal.valueOf(LONG_1), BigDecimal.valueOf(LONG_2)).test();
@@ -195,12 +195,12 @@ public class ObjectConverterTest {
         // test other types that should not be converted
         Convert.<Date,BigDecimal>from(DATE_1, DATE_2).toNull(BigDecimal.class).test();
     }
-    
+
     @Test
     public void testToCalendar() {
         Convert.from(CALENDAR_1, CALENDAR_2).to(CALENDAR_1, CALENDAR_2).test();
         Convert.from(DateUtils.calendarToString(CALENDAR_1), DateUtils.calendarToString(CALENDAR_2)).to(CALENDAR_1, CALENDAR_2).test();
-        
+
         // test conversion from other date types
         Convert.from(DATE_1, DATE_2).to(toCalendar(DATE_1), toCalendar(DATE_2)).test();
 
@@ -208,12 +208,12 @@ public class ObjectConverterTest {
         Convert.<String,Calendar>from(STRING_1, STRING_2).toNull(Calendar.class).test();
         Convert.<Boolean,Calendar>from(BOOLEAN_1, BOOLEAN_2).toNull(Calendar.class).test();
     }
-    
+
     @Test
     public void testToDate() {
         Convert.from(DATE_1, DATE_2).to(DATE_1, DATE_2).test();
         Convert.from(DateUtils.dateToString(DATE_1), DateUtils.dateToString(DATE_2)).to(DATE_1, DATE_2).test();
-        
+
         // test conversion from other date types
         Convert.from(CALENDAR_1, CALENDAR_2).to(toDate(CALENDAR_1), toDate(CALENDAR_2)).test();
 
@@ -221,7 +221,7 @@ public class ObjectConverterTest {
         Convert.<String,Date>from(STRING_1, STRING_2).toNull(Date.class).test();
         Convert.<Boolean,Date>from(BOOLEAN_1, BOOLEAN_2).toNull(Date.class).test();
     }
-    
+
     @Test
     public void testPrimitiveByteArray() {
         byte[] array = new byte[] { 0x01, 0x02, 0x03 };
@@ -229,5 +229,5 @@ public class ObjectConverterTest {
         assertArrayEquals(new byte[0], ObjectConverter.convert(new byte[0], byte[].class));
         assertNull(ObjectConverter.convert(null, byte[].class));
     }
-    
+
 }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecoratorTest.java b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecoratorTest.java
index 88827e0..f432b6f 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecoratorTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecoratorTest.java
@@ -153,5 +153,5 @@ public class ValueMapDecoratorTest {
         Assert.assertFalse("Two ValueMapDecorators based on maps with different entries should not be equal",
                 valueMap.equals(valueMap2));
     }
-    
+
 }
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapUtilTest.java b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapUtilTest.java
index 841ef00..048927c 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapUtilTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapUtilTest.java
@@ -39,7 +39,7 @@ public class ValueMapUtilTest {
         content.put("stringArray", new String[] { "a", "b", "c" });
         content.put("stringList", ImmutableList.of("ab", "cd"));
         content.put("intList", ImmutableList.of(12, 34));
-        
+
         ValueMap props = ValueMapUtil.toValueMap(content);
         assertEquals("abc", props.get("stringProp", String.class));
         assertEquals((Integer)123, props.get("intProp", 0));
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/parser/ContentFileCacheTest.java b/src/test/java/org/apache/sling/fsprovider/internal/parser/ContentFileCacheTest.java
index 236959a..07d739e 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/parser/ContentFileCacheTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/parser/ContentFileCacheTest.java
@@ -31,7 +31,7 @@ import org.junit.runner.RunWith;
 
 @RunWith(Theories.class)
 public class ContentFileCacheTest {
-    
+
     @DataPoint
     public static final int NO_CACHE = 0;
     @DataPoint
@@ -42,10 +42,10 @@ public class ContentFileCacheTest {
     @Theory
     public void testCache(int cacheSize) {
         ContentFileCache underTest = new ContentFileCache(cacheSize);
-        
+
         ContentElement content1 = underTest.get("/fs-test/folder2/content", new File("src/test/resources/fs-test/folder2/content.json"));
         assertNotNull(content1);
-        
+
         switch (cacheSize) {
         case NO_CACHE:
             assertEquals(0, underTest.size());
@@ -82,10 +82,10 @@ public class ContentFileCacheTest {
             assertEquals(1, underTest.size());
             break;
         }
-        
+
         underTest.clear();
 
-        assertEquals(0, underTest.size());        
+        assertEquals(0, underTest.size());
     }
 
 }