Author: desruisseaux
Date: Tue Feb 20 18:41:45 2018
New Revision: 1824899

URL: http://svn.apache.org/viewvc?rev=1824899&view=rev
Log:
Partial revision of FileStoreProvider changes.

Modified:
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
    
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemProvider.java
    
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java
    
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties
    
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties
    
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java
    
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/FolderStoreProvider.java
    
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java
    
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/package-info.java
    
sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/folder/StoreTest.java

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
 [UTF-8] Tue Feb 20 18:41:45 2018
@@ -936,6 +936,11 @@ public final class Errors extends Indexe
         public static final short UnsupportedFormatVersion_2 = 159;
 
         /**
+         * Format “{0}” is unsupported.
+         */
+        public static final short UnsupportedFormat_1 = 181;
+
+        /**
          * Can not handle this instance of ‘{0}’ because arbitrary 
implementations are not yet
          * supported.
          */

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
 [ISO-8859-1] Tue Feb 20 18:41:45 2018
@@ -193,6 +193,7 @@ UnparsableStringForClass_3        = Text
 UnparsableStringInElement_2       = Can not parse \u201c{1}\u201d in element 
\u201c{0}\u201d.
 UnspecifiedCRS                    = Coordinate reference system has not been 
specified.
 UnspecifiedFormatForClass_1       = No format is specified for objects of 
class \u2018{0}\u2019.
+UnsupportedFormat_1               = Format \u201c{0}\u201d is unsupported.
 UnsupportedFormatVersion_2        = Version {1} of {0} format is not supported.
 UnsupportedImplementation_1       = Can not handle this instance of 
\u2018{0}\u2019 because arbitrary implementations are not yet supported.
 UnsupportedInterpolation_1        = The \u201c{0}\u201d interpolation is 
unsupported.

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
 [ISO-8859-1] Tue Feb 20 18:41:45 2018
@@ -189,6 +189,7 @@ UnspecifiedFormatForClass_1       = Aucu
 UnparsableStringForClass_2        = Le texte \u00ab\u202f{1}\u202f\u00bb 
n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019.
 UnparsableStringForClass_3        = Le texte \u00ab\u202f{1}\u202f\u00bb 
n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019, \u00e0 cause des 
caract\u00e8res \u00ab\u202f{2}\u202f\u00bb.
 UnparsableStringInElement_2       = Le texte \u00ab\u202f{1}\u202f\u00bb dans 
l\u2019\u00e9l\u00e9ment \u00ab\u202f{0}\u202f\u00bb ne peut pas \u00eatre lu.
+UnsupportedFormat_1               = Le format \u00ab\u202f{0}\u202f\u00bb 
n\u2019est pas support\u00e9.
 UnsupportedFormatVersion_2        = La version {1} du format {0} n\u2019est 
pas support\u00e9e.
 UnsupportedImplementation_1       = Cette instance de \u2018{0}\u2019 ne peut 
pas \u00eatre g\u00e9r\u00e9e parce que les impl\u00e9mentations arbitraires ne 
sont pas encore support\u00e9es.
 UnsupportedInterpolation_1        = L\u2019interpolation \u201c{0}\u201d 
n\u2019est pas support\u00e9e.

Modified: 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemProvider.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemProvider.java?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemProvider.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemProvider.java
 [UTF-8] Tue Feb 20 18:41:45 2018
@@ -25,17 +25,21 @@ import org.apache.sis.storage.DataStoreP
 import org.apache.sis.storage.ProbeResult;
 import org.apache.sis.storage.StorageConnector;
 
+
 /**
  * Files-related {@linkplain org.apache.sis.storage.DataStoreProvider 
provider}.
  * This interface provides additional descriptive informations on the supported
  * file types.
  *
- * @author Johann Sorel (Geomatys)
- * @since 1.0
+ * @author  Johann Sorel (Geomatys)
+ * @version 1.0
+ * @since   1.0
  * @module
+ *
+ * @todo Rename, as this interface may be confused with {@link 
java.nio.file.spi.FileSystemProvider}.
+ *       Do we need this interface or can we rely on {@link 
URIDataStore.Provider} only?
  */
 public interface FileSystemProvider {
-
     /**
      * Get the list of this format mainly used file suffixes.
      * If the provider uses multiple files, this method should return
@@ -63,7 +67,7 @@ public interface FileSystemProvider {
      * @return collection of signatures, never null, can be empty.
      */
     default Collection<byte[]> getSignature() {
-        return Collections.EMPTY_LIST;
+        return Collections.emptyList();
     }
 
     /**
@@ -102,5 +106,4 @@ public interface FileSystemProvider {
         }
         return ProbeResult.UNSUPPORTED_STORAGE;
     }
-
 }

Modified: 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java
 [UTF-8] Tue Feb 20 18:41:45 2018
@@ -158,16 +158,11 @@ public final class Resources extends Ind
         public static final short FeatureNotFound_2 = 17;
 
         /**
-         * Restricted store provider identifier to use for resource discovery 
and creation.
+         * Name of the format to use for reading or writing the directory 
content.
          */
         public static final short FolderStoreProviderParameter = 40;
 
         /**
-         * Unknown provider identifier {0}.
-         */
-        public static final short FolderStoreProviderUnknown_1 = 41;
-
-        /**
          * Whether to assemble trajectory fragments (lines in CSV file) in a 
single feature instance.
          */
         public static final short FoliationRepresentation = 38;

Modified: 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties
 [ISO-8859-1] Tue Feb 20 18:41:45 2018
@@ -37,8 +37,7 @@ DataStoreTimeZone                 = Time
 DirectoryContent_1                = Content of \u201c{0}\u201d directory.
 FeatureAlreadyPresent_2           = A feature named \u201c{1}\u201d is already 
present in the \u201c{0}\u201d data store.
 FeatureNotFound_2                 = Feature \u201c{1}\u201d has not been found 
in the \u201c{0}\u201d data store.
-FolderStoreProviderParameter      = Restricted store provider identifier to 
use for resource discovery and creation.
-FolderStoreProviderUnknown_1      = Unknown provider identifier {0}.
+FolderStoreProviderParameter      = Name of the format to use for reading or 
writing the directory content.
 FoliationRepresentation           = Whether to assemble trajectory fragments 
(lines in CSV file) in a single feature instance.
 ExcessiveStringSize_3             = Character string in the \u201c{0}\u201d 
file is too long. The string has {2} characters while the limit is {1}.
 IllegalFeatureType_2              = The {0} data store does not accept 
features of type \u201c{1}\u201d.

Modified: 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties
 [ISO-8859-1] Tue Feb 20 18:41:45 2018
@@ -43,12 +43,11 @@ DirectoryContent_1                = Cont
 ExcessiveStringSize_3             = La cha\u00eene de caract\u00e8res dans le 
fichier \u00ab\u202f{0}\u202f\u00bb est trop longue. La cha\u00eene fait {2} 
caract\u00e8res alors que la limite est {1}.
 FeatureAlreadyPresent_2           = Une entit\u00e9 nomm\u00e9e 
\u00ab\u202f{1}\u202f\u00bb est d\u00e9j\u00e0 pr\u00e9sente dans les 
donn\u00e9es de \u00ab\u202f{0}\u202f\u00bb.
 FeatureNotFound_2                 = L\u2019entit\u00e9 
\u00ab\u202f{1}\u202f\u00bb n\u2019a pas \u00e9t\u00e9 trouv\u00e9e dans les 
donn\u00e9es de \u00ab\u202f{0}\u202f\u00bb.
-FolderStoreProviderParameter      = Identifiant du fournisseur de donn\u00e9es 
unique \u00e0 utiliser pour la d\u00e9tection et la cr\u00e9ation.
-FolderStoreProviderUnknown_1      = L'identifiant de fournisseur de 
donn\u00e9es {0} est inconnu.
+FolderStoreProviderParameter      = Nom du format ou de la source de 
donn\u00e9es \u00e0 utiliser pour lire ou \u00e9crire le contenu du 
r\u00e9pertoire.
 FoliationRepresentation           = Indique s\u2019il faut assembler les 
fragments de trajectoires (lignes dans un fichier CSV) dans une entit\u00e9 
unique.
 IllegalFeatureType_2              = Le format {0} ne stocke pas de 
donn\u00e9es de type \u00ab\u202f{1}\u202f\u00bb.
 IllegalInputTypeForReader_2       = Le lecteur {0} n\u2019accepte pas des 
entr\u00e9s de type \u2018{1}\u2019.
-IllegalOutputTypeForWriter_2      = Le l\u2019encodeur {0} n\u2019accepte pas 
des sorties de type \u2018{1}\u2019.
+IllegalOutputTypeForWriter_2      = L\u2019encodeur {0} n\u2019accepte pas des 
sorties de type \u2018{1}\u2019.
 InconsistentNameComponents_2      = Les \u00e9l\u00e9ments qui composent le 
nom \u00ab\u202f{1}\u202f\u00bb ne sont pas coh\u00e9rents avec ceux du nom qui 
avait \u00e9t\u00e9 pr\u00e9c\u00e9demment li\u00e9 dans les donn\u00e9es de 
\u00ab\u202f{0}\u202f\u00bb.
 MissingSchemeInURI_1              = Il manque le sch\u00e9ma dans l\u2019URI 
\u00ab\u202f{0}\u202f\u00bb.
 ProcessingExecutedOn_1            = Traitement ex\u00e9cut\u00e9 sur {0}.

Modified: 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java
 [UTF-8] Tue Feb 20 18:41:45 2018
@@ -32,7 +32,6 @@ import org.apache.sis.storage.DataStoreP
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.IllegalOpenParameterException;
 import org.apache.sis.internal.storage.io.IOUtilities;
-import org.apache.sis.internal.util.UnmodifiableArrayList;
 
 
 /**
@@ -127,10 +126,10 @@ public abstract class URIDataStore exten
         private volatile ParameterDescriptorGroup openDescriptor;
 
         /**
-         * List of main file suffixes used.
+         * The suffixes that may be used with the name of the "main" file.
+         * This is the collection to be returned by {@link #getSuffix()}.
          */
         protected final List<String> suffix = new ArrayList<>();
-        private final List<String> unSuffix = 
Collections.unmodifiableList(suffix);
 
         /**
          * Creates a new provider.
@@ -155,12 +154,24 @@ public abstract class URIDataStore exten
         }
 
         /**
-         * Get the list of this format mainly used file suffixes.
+         * Returns the suffixes that may be used with the name of the "main" 
file.
+         * The "main" file is the file that users specify when opening the 
dataset.
+         * The returned collection should <em>not</em> include the suffixes of 
auxiliary files.
          *
-         * @return list of suffix, case insensitive, never null, can be empty.
+         * <div class="note"><b>Example:</b>
+         * GeoTIFF data are contained in files with the {@code ".tif"} or 
{@code ".tiff"} suffix,
+         * sometime accompanied by auxiliary files with {@code ".prj"} and 
{@code ".tfw"} suffixes.
+         * This method should return a collection containing only {@code 
"tif"} or {@code "tiff"}
+         * strings, without the leading dot.</div>
+         *
+         * The suffixes are case-insensitive (no need to declare both 
lower-case and upper-case variants)
+         * and shall not contain the leading dot.
+         *
+         * @return the filename suffixes, case insensitive. Never null but can 
be empty.
          */
+        @Override
         public final List<String> getSuffix() {
-            return unSuffix;
+            return Collections.unmodifiableList(suffix);
         }
 
         /**

Modified: 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/FolderStoreProvider.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/FolderStoreProvider.java?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/FolderStoreProvider.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/FolderStoreProvider.java
 [UTF-8] Tue Feb 20 18:41:45 2018
@@ -39,7 +39,7 @@ import org.apache.sis.util.logging.Loggi
 import org.apache.sis.internal.system.Modules;
 import org.apache.sis.internal.storage.Resources;
 import org.apache.sis.internal.storage.URIDataStore;
-import org.apache.sis.internal.storage.io.IOUtilities;
+import org.apache.sis.setup.OptionKey;
 
 
 /**
@@ -49,7 +49,7 @@ import org.apache.sis.internal.storage.i
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @version 1.0
  * @since   0.8
  * @module
  */
@@ -60,43 +60,40 @@ public final class FolderStoreProvider e
     private static final String NAME = "folder";
 
     /**
-     * Description of the parameter for folder location.
-     */
-    static final ParameterDescriptor<Path> LOCATION;
-
-    /**
      * Description of the parameter for formating conventions of dates and 
numbers.
      */
-    static final ParameterDescriptor<Locale> LOCALE;
+    private static final ParameterDescriptor<Locale> LOCALE;
 
     /**
      * Description of the parameter for timezone of dates in the data store.
      */
-    static final ParameterDescriptor<TimeZone> TIMEZONE;
+    private static final ParameterDescriptor<TimeZone> TIMEZONE;
 
     /**
      * Description of the parameter for character encoding used by the data 
store.
      */
-    static final ParameterDescriptor<Charset> ENCODING;
+    private static final ParameterDescriptor<Charset> ENCODING;
 
     /**
-     * Description of the parameter for restricting searched factories.
+     * Description of the parameter for name of format or {@code 
DataStoreProvider}
+     * to use for reading or writing the directory content.
      */
-    static final ParameterDescriptor<String> PROVIDER;
+    private static final ParameterDescriptor<String> FORMAT;
 
     /**
      * The group of parameter descriptors to be returned by {@link 
#getOpenParameters()}.
      */
     static final ParameterDescriptorGroup PARAMETERS;
     static {
+        final ParameterDescriptor<Path> location;
         final ParameterBuilder builder = new ParameterBuilder();
         final InternationalString remark = 
Resources.formatInternational(Resources.Keys.UsedOnlyIfNotEncoded);
         ENCODING   = annotate(builder, URIDataStore.Provider.ENCODING, remark);
         LOCALE     = builder.addName("locale"  
).setDescription(Resources.formatInternational(Resources.Keys.DataStoreLocale  
)).setRemarks(remark).create(Locale.class,   null);
         TIMEZONE   = 
builder.addName("timezone").setDescription(Resources.formatInternational(Resources.Keys.DataStoreTimeZone)).setRemarks(remark).create(TimeZone.class,
 null);
-        PROVIDER   = 
builder.addName("provider").setDescription(Resources.formatInternational(Resources.Keys.FolderStoreProviderParameter)).create(String.class,
 null);
-        LOCATION   = new 
ParameterBuilder(URIDataStore.Provider.LOCATION_PARAM).create(Path.class, null);
-        PARAMETERS = builder.addName(NAME).createGroup(LOCATION, LOCALE, 
TIMEZONE, ENCODING, PROVIDER);
+        FORMAT     = 
builder.addName("provider").setDescription(Resources.formatInternational(Resources.Keys.FolderStoreProviderParameter)).create(String.class,
 null);
+        location   = new 
ParameterBuilder(URIDataStore.Provider.LOCATION_PARAM).create(Path.class, null);
+        PARAMETERS = builder.addName(NAME).createGroup(location, LOCALE, 
TIMEZONE, ENCODING, FORMAT);
     }
 
     /**
@@ -164,6 +161,8 @@ public final class FolderStoreProvider e
 
     /**
      * Returns a data store implementation associated with this provider.
+     * The data store created by this method will try to auto-detect the 
format of every files in the directory.
+     * For exploring only the file of a known format, use {@link 
#open(ParameterValueGroup)} instead.
      *
      * @param  connector  information about the storage (URL, path, 
<i>etc</i>).
      * @return a data store implementation associated with this provider for 
the given storage.
@@ -172,7 +171,7 @@ public final class FolderStoreProvider e
     @Override
     public DataStore open(final StorageConnector connector) throws 
DataStoreException {
         try {
-            return new Store(this, connector);
+            return new Store(this, connector, null);
         } catch (IOException e) {
             throw new 
DataStoreException(Resources.format(Resources.Keys.CanNotReadDirectory_1,
                     connector.getStorageName()), e);
@@ -188,16 +187,21 @@ public final class FolderStoreProvider e
     @Override
     public DataStore open(final ParameterValueGroup parameters) throws 
DataStoreException {
         ArgumentChecks.ensureNonNull("parameter", parameters);
-        final Parameters params = Parameters.castOrWrap(parameters);
+        final StorageConnector connector = 
URIDataStore.Provider.connector(this, parameters);
+        final Parameters pg = Parameters.castOrWrap(parameters);
+        connector.setOption(OptionKey.LOCALE,   pg.getValue(LOCALE));
+        connector.setOption(OptionKey.TIMEZONE, pg.getValue(TIMEZONE));
+        connector.setOption(OptionKey.ENCODING, pg.getValue(ENCODING));
+        final String format = pg.getValue(FORMAT);
         try {
-            if (params.getValue(PROVIDER) != null) {
-                return new Store.Writable(this, params);
+            if (format != null) {
+                return new Store.Writable(this, connector, format);
             } else {
-                return new Store(this, params);
+                return new Store(this, connector, format);
             }
         } catch (IOException e) {
             throw new 
DataStoreException(Resources.format(Resources.Keys.CanNotReadDirectory_1,
-                    IOUtilities.filename(params.getValue(LOCATION))), e);
+                    connector.getStorageName()), e);
         }
     }
 

Modified: 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java
 [UTF-8] Tue Feb 20 18:41:45 2018
@@ -36,10 +36,10 @@ import java.util.Map.Entry;
 import java.util.logging.Level;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Stream;
-import org.apache.sis.internal.storage.FileSystemResource;
 import org.opengis.metadata.Metadata;
 import org.opengis.metadata.maintenance.ScopeCode;
 import org.opengis.parameter.ParameterValueGroup;
+import org.opengis.metadata.identification.Identification;
 import org.apache.sis.setup.OptionKey;
 import org.apache.sis.storage.Resource;
 import org.apache.sis.storage.Aggregate;
@@ -54,15 +54,17 @@ import org.apache.sis.internal.util.Unmo
 import org.apache.sis.internal.storage.MetadataBuilder;
 import org.apache.sis.internal.storage.Resources;
 import org.apache.sis.internal.storage.URIDataStore;
+import org.apache.sis.internal.storage.FileSystemResource;
 import org.apache.sis.metadata.iso.citation.Citations;
-import org.apache.sis.parameter.Parameters;
 import org.apache.sis.storage.FeatureSet;
 import org.apache.sis.storage.ProbeResult;
 import org.apache.sis.storage.ReadOnlyStorageException;
 import org.apache.sis.storage.WritableAggregate;
 import org.apache.sis.storage.WritableFeatureSet;
+import org.apache.sis.util.resources.Errors;
+
+// Branch-dependent imports
 import org.opengis.feature.Feature;
-import org.opengis.metadata.identification.Identification;
 
 
 /**
@@ -83,12 +85,11 @@ import org.opengis.metadata.identificati
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @version 1.0
  * @since   0.8
  * @module
  */
 class Store extends DataStore implements Aggregate, 
DirectoryStream.Filter<Path> {
-
     /**
      * File walker to delete file and folder recursively.
      */
@@ -170,26 +171,17 @@ class Store extends DataStore implements
      * @throws DataStoreException if an error occurred while opening the 
stream.
      */
     @SuppressWarnings("ThisEscapedInObjectConstruction")    // Okay because 
'folders' does not escape.
-    Store(final DataStoreProvider provider, final StorageConnector connector) 
throws DataStoreException, IOException {
+    Store(final DataStoreProvider provider, final StorageConnector connector, 
final String format)
+            throws DataStoreException, IOException
+    {
         super(provider, connector);
         location = connector.getStorageAs(Path.class);
         locale   = connector.getOption(OptionKey.LOCALE);
         timezone = connector.getOption(OptionKey.TIMEZONE);
         encoding = connector.getOption(OptionKey.ENCODING);
+        providerName = format;
         children = new ConcurrentHashMap<>();
         children.put(location.toRealPath(), this);
-        providerName = null;
-    }
-
-    Store(final DataStoreProvider provider, final Parameters params) throws 
DataStoreException, IOException {
-        super(provider, new StorageConnector(params));
-        location     = params.getValue(FolderStoreProvider.LOCATION);
-        locale       = params.getValue(FolderStoreProvider.LOCALE);
-        timezone     = params.getValue(FolderStoreProvider.TIMEZONE);
-        encoding     = params.getValue(FolderStoreProvider.ENCODING);
-        providerName = params.getValue(FolderStoreProvider.PROVIDER);
-        children     = new ConcurrentHashMap<>();
-        children.put(location.toRealPath(), this);
     }
 
     /**
@@ -357,11 +349,12 @@ class Store extends DataStore implements
                 }
             }
             if (searchProvider == null) {
-                throw new 
DataStoreException(message(Resources.Keys.FolderStoreProviderUnknown_1, 
providerName));
+                throw new 
DataStoreException(Errors.getResources(getLocale()).getString(Errors.Keys.UnsupportedFormat_1,
 providerName));
             }
         }
         return searchProvider;
     }
+
     /**
      * Builds an error message for an error occurring while reading files in 
the directory.
      */
@@ -426,8 +419,10 @@ class Store extends DataStore implements
      */
     static class Writable extends Store implements WritableAggregate {
 
-        public Writable(DataStoreProvider provider, Parameters params) throws 
DataStoreException, IOException {
-            super(provider, params);
+        public Writable(final DataStoreProvider provider, final 
StorageConnector connector, final String format)
+            throws DataStoreException, IOException
+        {
+            super(provider, connector, format);
         }
 
         /**
@@ -570,7 +565,5 @@ class Store extends DataStore implements
                 }
             }
         }
-
     }
-
 }

Modified: 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/package-info.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/package-info.java?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/package-info.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/package-info.java
 [UTF-8] Tue Feb 20 18:41:45 2018
@@ -19,7 +19,7 @@
  * {@link org.apache.sis.storage.DataStore} implementation for a folder 
containing an arbitrary amount of data files.
  *
  * @author  Johann Sorel (Geomatys)
- * @version 0.8
+ * @version 1.0
  * @since   0.8
  * @module
  */

Modified: 
sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/folder/StoreTest.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/folder/StoreTest.java?rev=1824899&r1=1824898&r2=1824899&view=diff
==============================================================================
--- 
sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/folder/StoreTest.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/folder/StoreTest.java
 [UTF-8] Tue Feb 20 18:41:45 2018
@@ -43,7 +43,7 @@ import static org.junit.Assume.assumeTru
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @version 1.0
  * @since   0.8
  * @module
  */
@@ -70,7 +70,7 @@ public final strictfp class StoreTest ex
     @Test
     public void testComponents() throws URISyntaxException, 
DataStoreException, IOException {
         final Set<String> identifiers = new HashSet<>(Arrays.asList("proj", 
"Sample 1", "Sample 2", "Sample 3", "data4"));
-        try (Store store = new Store(null, new 
StorageConnector(testDirectory()))) {
+        try (Store store = new Store(null, new 
StorageConnector(testDirectory()), null)) {
             assertEquals("Expected three data stores.", 4, 
store.components().size());
             verifyContent(store, identifiers);
         }
@@ -88,19 +88,16 @@ public final strictfp class StoreTest ex
      */
     @Test
     public void testSearchProviderParameter() throws URISyntaxException, 
DataStoreException, IOException {
-
-        {
-            final Set<String> identifiers = new 
HashSet<>(Arrays.asList("Sample 1", "Sample 2", "Sample 3", "data4"));
-            final Parameters params = 
Parameters.castOrWrap(FolderStoreProvider.PARAMETERS.createValue());
-            params.parameter("location").setValue(testDirectory());
-            params.parameter("provider").setValue("XML");
-            try (Store store = new Store(null, params)) {
-                assertEquals("Expected three data stores.", 3, 
store.components().size());
-                verifyContent(store, identifiers);
-            }
-            if (!identifiers.isEmpty()) {
-                fail("Missing resources: " + identifiers);
-            }
+        final Set<String> identifiers = new HashSet<>(Arrays.asList("Sample 
1", "Sample 2", "Sample 3", "data4"));
+        final Parameters params = 
Parameters.castOrWrap(FolderStoreProvider.PARAMETERS.createValue());
+        params.parameter("location").setValue(testDirectory());
+        params.parameter("provider").setValue("XML");
+        try (Store store = (Store) FolderStoreProvider.INSTANCE.open(params)) {
+            assertEquals("Expected three data stores.", 3, 
store.components().size());
+            verifyContent(store, identifiers);
+        }
+        if (!identifiers.isEmpty()) {
+            fail("Missing resources: " + identifiers);
         }
     }
 


Reply via email to