sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1683747 - in /sis/branches/JDK8/core: sis-metadata/src/main/java/org/apache/sis/internal/metadata/ sis-utility/src/main/java/org/apache/sis/internal/system/ sis-utility/src/main/java/org/apache/sis/internal/util/ sis-utility/src/main/java/...
Date Fri, 05 Jun 2015 13:27:04 GMT
Author: desruisseaux
Date: Fri Jun  5 13:27:03 2015
New Revision: 1683747

URL: http://svn.apache.org/r1683747
Log:
If an optional module is not found, log a better message at Level.CONFIG.
This logging service is factored in an internal 'OptionalDependency' parent class.

Added:
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/OptionalDependency.java
      - copied, changed from r1683714, sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
Modified:
    sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties

Modified: sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java?rev=1683747&r1=1683746&r2=1683747&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ReferencingServices.java
[UTF-8] Fri Jun  5 13:27:03 2015
@@ -40,12 +40,10 @@ import org.apache.sis.metadata.iso.exten
 import org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox;
 import org.apache.sis.metadata.iso.extent.DefaultSpatialTemporalExtent;
 import org.apache.sis.internal.system.DefaultFactories;
-import org.apache.sis.internal.system.SystemListener;
+import org.apache.sis.internal.system.OptionalDependency;
 import org.apache.sis.internal.system.Modules;
 import org.apache.sis.io.wkt.FormattableObject;
 import org.apache.sis.util.iso.DefaultNameSpace;
-import org.apache.sis.util.resources.Errors;
-import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.Deprecable;
 
 
@@ -62,7 +60,7 @@ import org.apache.sis.util.Deprecable;
  * @version 0.6
  * @module
  */
-public class ReferencingServices extends SystemListener {
+public class ReferencingServices extends OptionalDependency {
     /**
      * The length of one nautical mile, which is {@value} metres.
      */
@@ -115,8 +113,7 @@ public class ReferencingServices extends
      * in order to force a new {@code ReferencingServices} lookup if the classpath changes.
      */
     protected ReferencingServices() {
-        super(Modules.METADATA);
-        SystemListener.add(this);
+        super(Modules.METADATA, "sis-referencing");
     }
 
     /**
@@ -127,7 +124,7 @@ public class ReferencingServices extends
     @Override
     protected final void classpathChanged() {
         synchronized (ReferencingServices.class) {
-            SystemListener.remove(this);
+            super.classpathChanged();
             instance = null;
         }
     }
@@ -148,28 +145,10 @@ public class ReferencingServices extends
                      * In the particular case of this class, the intend is to ensure that
SystemListener.add(…)
                      * is invoked only once.
                      */
-                    try {
-                        c = (ReferencingServices) Class.forName("org.apache.sis.internal.referencing.ServicesForMetadata").newInstance();
-                    } catch (ClassNotFoundException exception) {
-                        /*
-                         * Log at the "warning" level. This method is usually invoked from
a metadata class,
-                         * except org.apache.sis.io.wkt.Formatter. So we infer the logger
from the stacktrace.
-                         */
-                        String logger = Modules.METADATA; // Default logger.
-                        for (final StackTraceElement e : exception.getStackTrace()) {
-                            final String name = e.getClassName();
-                            if (name.startsWith(Modules.METADATA)) break;
-                            if (name.startsWith("org.apache.sis.io.wkt")) {
-                                logger = "org.apache.sis.io.wkt";
-                                break;
-                            }
-                        }
-                        Logging.recoverableException(Logging.getLogger(logger),
-                                ReferencingServices.class, "getInstance", exception);
+                    c = getInstance(ReferencingServices.class, Modules.METADATA, "sis-referencing",
+                            "org.apache.sis.internal.referencing.ServicesForMetadata");
+                    if (c == null) {
                         c = new ReferencingServices();
-                    } catch (ReflectiveOperationException exception) {
-                        // Should never happen if we didn't broke our helper class.
-                        throw new AssertionError(exception);
                     }
                     instance = c;
                 }
@@ -178,14 +157,6 @@ public class ReferencingServices extends
         return c;
     }
 
-    /**
-     * Returns the exception to throw when a method requiring the {@code sis-referencing}
module is invoked
-     * but that module is not on the classpath.
-     */
-    private static UnsupportedOperationException referencingModuleNotFound() {
-        return new UnsupportedOperationException(Errors.format(Errors.Keys.MissingRequiredModule_1,
"sis-referencing"));
-    }
-
 
 
 
@@ -207,7 +178,7 @@ public class ReferencingServices extends
      * @throws UnsupportedOperationException if the {@code "sis-referencing"} module has
not been found on the classpath.
      */
     public void setBounds(Envelope envelope, DefaultGeographicBoundingBox target) throws
TransformException {
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -220,7 +191,7 @@ public class ReferencingServices extends
      * @throws UnsupportedOperationException if the {@code "sis-referencing"} module has
not been found on the classpath.
      */
     public void setBounds(Envelope envelope, DefaultVerticalExtent target) throws TransformException
{
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -233,7 +204,7 @@ public class ReferencingServices extends
      * @throws UnsupportedOperationException if the {@code "sis-referencing"} module has
not been found on the classpath.
      */
     public void setBounds(Envelope envelope, DefaultTemporalExtent target) throws TransformException
{
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -256,7 +227,7 @@ public class ReferencingServices extends
      * @throws UnsupportedOperationException if the {@code "sis-referencing"} module has
not been found on the classpath.
      */
     public void setBounds(Envelope envelope, DefaultSpatialTemporalExtent target) throws
TransformException {
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -268,7 +239,7 @@ public class ReferencingServices extends
      * @throws UnsupportedOperationException if the {@code "sis-referencing"} module has
not been found on the classpath.
      */
     public void addElements(Envelope envelope, DefaultExtent target) throws TransformException
{
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
 
@@ -290,7 +261,7 @@ public class ReferencingServices extends
      * @since 0.5
      */
     public ParameterDescriptor<?> toImplementation(ParameterDescriptor<?> parameter)
{
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -305,7 +276,7 @@ public class ReferencingServices extends
      * @since 0.4
      */
     public FormattableObject toFormattableObject(IdentifiedObject object) {
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -321,7 +292,7 @@ public class ReferencingServices extends
      * @since 0.6
      */
     public FormattableObject toFormattableObject(MathTransform object, boolean internal)
{
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
 
@@ -341,7 +312,7 @@ public class ReferencingServices extends
      * @since 0.6
      */
     public PrimeMeridian getGreenwich() {
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -353,7 +324,7 @@ public class ReferencingServices extends
      * @since 0.6
      */
     public CartesianCS getGeocentricCS(final Unit<Length> unit) {
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -380,7 +351,7 @@ public class ReferencingServices extends
      * @since 0.6
      */
     public CoordinateSystem createAbstractCS(final CoordinateSystemAxis[] axes) {
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -404,7 +375,7 @@ public class ReferencingServices extends
                                        final MathTransform    baseToDerived,
                                        final CoordinateSystem derivedCS)
     {
-        throw referencingModuleNotFound();
+        throw moduleNotFound();
     }
 
     /**
@@ -441,7 +412,7 @@ public class ReferencingServices extends
         if (factory != null) {
             return factory;
         } else {
-            throw referencingModuleNotFound();
+            throw moduleNotFound();
         }
     }
 

Copied: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/OptionalDependency.java
(from r1683714, sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/OptionalDependency.java?p2=sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/OptionalDependency.java&p1=sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java&r1=1683714&r2=1683747&rev=1683747&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/OptionalDependency.java
[UTF-8] Fri Jun  5 13:27:03 2015
@@ -14,106 +14,98 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.util;
+package org.apache.sis.internal.system;
 
-import org.opengis.metadata.citation.Citation;
-import org.apache.sis.internal.system.Modules;
-import org.apache.sis.internal.system.SystemListener;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
 import org.apache.sis.util.logging.Logging;
+import org.apache.sis.util.resources.Errors;
+import org.apache.sis.util.resources.Messages;
 
 
 /**
- * Provides access to services defined in the {@code "sis-metadata"} module.
- * This class searches for the {@link org.apache.sis.internal.metadata.ServicesForUtility}
- * implementation using Java reflection.
+ * Base class of internal hooks for accessing optional dependencies.
+ * This is used for example for allowing the {@code "sis-metadata"} module to access some
+ * services of the {@code "sis-referencing"} module if the later is present on the classpath.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.6
  * @version 0.6
  * @module
  */
-public class MetadataServices extends SystemListener {
+public abstract class OptionalDependency extends SystemListener {
     /**
-     * The services, fetched when first needed.
+     * The name of the optional module on which we depend.
      */
-    private static volatile MetadataServices instance;
+    private final String dependency;
 
     /**
-     * For subclass only. This constructor registers this instance as a {@link SystemListener}
-     * in order to force a new {@code MetadataServices} lookup if the classpath changes.
-     */
-    protected MetadataServices() {
-        super(Modules.UTILITIES);
+     * Creates a new optional dependency.
+     *
+     * @param module A constant from the {@link Modules} class which identify the module
that need the optional dependency.
+     * @param dependency The Maven artifact name (<strong>not</strong> a name
from the {@link Modules} class)
+     *        of the optional module on which the {@code module} depend.
+     */
+    protected OptionalDependency(final String module, final String dependency) {
+        super(module);
+        this.dependency = dependency;
         SystemListener.add(this);
     }
 
     /**
-     * Invoked when the classpath changed. Resets the {@link #instance} to {@code null} in
order
-     * to force the next call to {@link #getInstance()} to fetch a new one, which may be
different.
+     * Invoked when the classpath is likely to have changed.
+     * Subclasses must override like below:
+     *
+     * {@preformat java
+     *     &#64;Override
+     *     protected final void classpathChanged() {
+     *         synchronized (MyServices.class) {
+     *             super.classpathChanged();
+     *             instance = null;
+     *         }
+     *     }
+     * }
      */
     @Override
-    protected final void classpathChanged() {
-        synchronized (MetadataServices.class) {
-            SystemListener.remove(this);
-            instance = null;
-        }
+    protected void classpathChanged() {
+        SystemListener.remove(this);
     }
 
     /**
-     * Returns the singleton instance.
+     * Returns the optional dependency, or {@code null} if not found.
+     * This is a helper method for implementation of {@code getInstance()} static method
in subclasses.
      *
-     * @return The singleton instance.
-     */
-    public static MetadataServices getInstance() {
-        MetadataServices c = instance;
-        if (c == null) {
-            synchronized (MetadataServices.class) {
-                c = instance;
-                if (c == null) {
-                    /*
-                     * Double-checked locking: okay since Java 5 provided that the 'instance'
field is volatile.
-                     * In the particular case of this class, the intend is to ensure that
SystemListener.add(…)
-                     * is invoked only once.
-                     */
-                    try {
-                        c = (MetadataServices) Class.forName("org.apache.sis.internal.metadata.ServicesForUtility").newInstance();
-                    } catch (ClassNotFoundException exception) {
-                        Logging.recoverableException(Logging.getLogger(Modules.UTILITIES),
-                                MetadataServices.class, "getInstance", exception);
-                        c = new MetadataServices();
-                    } catch (ReflectiveOperationException exception) {
-                        // Should never happen if we didn't broke our helper class.
-                        throw new AssertionError(exception);
-                    }
-                    instance = c;
-                }
-            }
+     * @param <T>            Compile-time type of the {@code type} argument.
+     * @param type           The subclass type.
+     * @param module         Same argument value than the one given to the {@linkplain #OptionalDependency
constructor}.
+     * @param dependency     Same argument value than the one given to the {@linkplain #OptionalDependency
constructor}.
+     * @param implementation The fully-qualified name of the class to instantiate by reflection.
+     * @return An instance of the {@code implementation} class, or {@code null} if not found.
+     */
+    protected static <T extends OptionalDependency> T getInstance(final Class<T>
type,
+            final String module, final String dependency, final String implementation)
+    {
+        try {
+            return type.cast(Class.forName(implementation).newInstance());
+        } catch (ClassNotFoundException exception) {
+            final LogRecord record = Messages.getResources(null).getLogRecord(Level.CONFIG,
+                    Messages.Keys.OptionalModuleNotFound_1, dependency);
+            record.setLoggerName(module);
+            Logging.log(type, "getInstance", record);
+            return null;
+        } catch (ReflectiveOperationException exception) {
+            // Should never happen if we didn't broke our helper class.
+            throw new AssertionError(exception);
         }
-        return c;
-    }
-
-    /**
-     * Returns the constant defined in the {@link org.apache.sis.metadata.iso.citation.Citations}
class for the
-     * given name. This is used at {@link org.apache.sis.internal.simple.CitationConstant}
deserialization time,
-     * for which the two citations of interest are {@code "ISBN"} (International Standard
Book Number) and
-     * {@code "ISSN"} (International Standard Serial Number) citation.
-     *
-     * @param  name The name of one of the citation constants defined in the {@code Citations}
class.
-     * @return The requested citation, or {@code null} if the {@code sis-metadata} module
is not available.
-     */
-    public Citation getCitationConstant(final String name) {
-        return null;
     }
 
     /**
-     * Returns the build-in citation for the given primary key, or {@code null} if none.
-     * The metadata module will search in a database for information like a descriptive
-     * title, abbreviations, identifiers, URL to a web site, <i>etc</i>.
+     * Returns the exception to throw when a method requiring the optional dependency is
invoked
+     * but that module is not on the classpath.
      *
-     * @param  key The primary key of the desired citation.
-     * @return The requested citation, or {@code null} if the {@code sis-metadata} module
is not available.
+     * @return The exception to throw.
      */
-    public Citation createCitation(final String key) {
-        return null;
+    protected final UnsupportedOperationException moduleNotFound() {
+        return new UnsupportedOperationException(Errors.format(Errors.Keys.MissingRequiredModule_1,
dependency));
     }
 }

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java?rev=1683747&r1=1683746&r2=1683747&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
[UTF-8] Fri Jun  5 13:27:03 2015
@@ -18,8 +18,7 @@ package org.apache.sis.internal.util;
 
 import org.opengis.metadata.citation.Citation;
 import org.apache.sis.internal.system.Modules;
-import org.apache.sis.internal.system.SystemListener;
-import org.apache.sis.util.logging.Logging;
+import org.apache.sis.internal.system.OptionalDependency;
 
 
 /**
@@ -32,7 +31,7 @@ import org.apache.sis.util.logging.Loggi
  * @version 0.6
  * @module
  */
-public class MetadataServices extends SystemListener {
+public class MetadataServices extends OptionalDependency {
     /**
      * The services, fetched when first needed.
      */
@@ -43,8 +42,7 @@ public class MetadataServices extends Sy
      * in order to force a new {@code MetadataServices} lookup if the classpath changes.
      */
     protected MetadataServices() {
-        super(Modules.UTILITIES);
-        SystemListener.add(this);
+        super(Modules.UTILITIES, "sis-metadata");
     }
 
     /**
@@ -54,7 +52,7 @@ public class MetadataServices extends Sy
     @Override
     protected final void classpathChanged() {
         synchronized (MetadataServices.class) {
-            SystemListener.remove(this);
+            super.classpathChanged();
             instance = null;
         }
     }
@@ -75,15 +73,10 @@ public class MetadataServices extends Sy
                      * In the particular case of this class, the intend is to ensure that
SystemListener.add(…)
                      * is invoked only once.
                      */
-                    try {
-                        c = (MetadataServices) Class.forName("org.apache.sis.internal.metadata.ServicesForUtility").newInstance();
-                    } catch (ClassNotFoundException exception) {
-                        Logging.recoverableException(Logging.getLogger(Modules.UTILITIES),
-                                MetadataServices.class, "getInstance", exception);
+                    c = getInstance(MetadataServices.class, Modules.UTILITIES, "sis-metadata",
+                            "org.apache.sis.internal.metadata.ServicesForUtility");
+                    if (c == null) {
                         c = new MetadataServices();
-                    } catch (ReflectiveOperationException exception) {
-                        // Should never happen if we didn't broke our helper class.
-                        throw new AssertionError(exception);
                     }
                     instance = c;
                 }

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java?rev=1683747&r1=1683746&r2=1683747&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
[UTF-8] Fri Jun  5 13:27:03 2015
@@ -110,6 +110,11 @@ public final class Messages extends Inde
         public static final short NotFormalProjectionParameter_1 = 10;
 
         /**
+         * Optional module “{0}” requested but not found.
+         */
+        public static final short OptionalModuleNotFound_1 = 12;
+
+        /**
          * Property “{0}” is hidden by “{1}”.
          */
         public static final short PropertyHiddenBy_2 = 4;

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties?rev=1683747&r1=1683746&r2=1683747&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
[ISO-8859-1] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
[ISO-8859-1] Fri Jun  5 13:27:03 2015
@@ -21,8 +21,9 @@ ConstantProjParameterValue_1    = This p
 DiscardedExclusiveProperty_2    = Property \u201c{0}\u201d has been discarded in favor of
\u201c{1}\u201d, because those two properties are mutually exclusive.
 IgnoredPropertiesAfterFirst_1   = Ignored properties after the first occurrence of \u2018{0}\u2019.
 IgnoredPropertyAssociatedTo_1   = Ignored property associated to \u2018{0}\u2019.
-PropertyHiddenBy_2              = Property \u201c{0}\u201d is hidden by \u201c{1}\u201d.
 LocalesDiscarded                = Text were discarded for some locales.
+OptionalModuleNotFound_1        = Optional module \u201c{0}\u201d requested but not found.
+PropertyHiddenBy_2              = Property \u201c{0}\u201d is hidden by \u201c{1}\u201d.
 MismatchedEllipsoidAxisLength_3 = The \u201c{1}\u201d parameter could have been omitted.
But it has been given a value of {2} which does not match the definition of the \u201c{0}\u201d
ellipsoid.
 NotFormalProjectionParameter_1  = This parameter borrowed from the \u201c{0}\u201d projection
is not formally a parameter of this projection.
 UnparsableValueStoredAsText_2   = Can not parse \u201c{1}\u201d as an instance of \u2018{0}\u2019.
The value is stored as plain text instead, but will be ignored by some processing.

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties?rev=1683747&r1=1683746&r2=1683747&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
[ISO-8859-1] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
[ISO-8859-1] Fri Jun  5 13:27:03 2015
@@ -21,8 +21,9 @@ ConstantProjParameterValue_1    = Ce par
 DiscardedExclusiveProperty_2    = La propri\u00e9t\u00e9 \u00ab\u202f{0}\u202f\u00bb a \u00e9t\u00e9
\u00e9cart\u00e9e en faveur de \u00ab\u202f{1}\u202f\u00bb, parce que ces deux propri\u00e9t\u00e9s
sont mutuellement exclusives.
 IgnoredPropertiesAfterFirst_1   = Des propri\u00e9t\u00e9s ont \u00e9t\u00e9 ignor\u00e9es
apr\u00e8s la premi\u00e8re occurrence de \u2018{0}\u2019.
 IgnoredPropertyAssociatedTo_1   = Une propri\u00e9t\u00e9 associ\u00e9e \u00e0 \u2018{0}\u2019
a \u00e9t\u00e9 ignor\u00e9e.
-PropertyHiddenBy_2              = La propri\u00e9t\u00e9 \u00ab\u202f{0}\u202f\u00bb est
masqu\u00e9e par \u00ab\u202f{1}\u202f\u00bb.
 LocalesDiscarded                = Des textes ont \u00e9t\u00e9 ignor\u00e9s pour certaines
langues.
+OptionalModuleNotFound_1        = Le module optionnel \u00ab\u202f{0}\u202f\u00bb a \u00e9t\u00e9
demand\u00e9 mais n\u2019a pas \u00e9t\u00e9 trouv\u00e9.
+PropertyHiddenBy_2              = La propri\u00e9t\u00e9 \u00ab\u202f{0}\u202f\u00bb est
masqu\u00e9e par \u00ab\u202f{1}\u202f\u00bb.
 MismatchedEllipsoidAxisLength_3 = Le param\u00e8tre \u00ab\u202f{1}\u202f\u00bb aurait pu
\u00eatre omis. Mais il lui a \u00e9t\u00e9 donn\u00e9 la valeur {2} qui ne correspond pas
\u00e0 la d\u00e9finition de l\u2019ellipso\u00efde \u00ab\u202f{0}\u202f\u00bb.
 NotFormalProjectionParameter_1  = Ce param\u00e8tre emprunt\u00e9 \u00e0 la projection \u00ab\u202f{0}\u202f\u00bb
n\u2019est pas formellement un param\u00e8tre de cette projection.
 UnparsableValueStoredAsText_2   = La valeur \u00ab\u202f{1}\u202f\u00bb ne peut pas \u00eatre
interpr\u00e9t\u00e9e comme une instance de \u2018{0}\u2019. Elle est donc m\u00e9moris\u00e9e
sous sa forme textuelle, mais sera ignor\u00e9e par certains traitements.



Mime
View raw message