sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1720456 - in /sis/branches/JDK8: application/sis-console/src/main/java/org/apache/sis/console/ core/sis-utility/src/main/java/org/apache/sis/internal/system/ core/sis-utility/src/main/java/org/apache/sis/setup/ core/sis-utility/src/main/ja...
Date Wed, 16 Dec 2015 21:15:44 GMT
Author: desruisseaux
Date: Wed Dec 16 21:15:44 2015
New Revision: 1720456

URL: http://svn.apache.org/viewvc?rev=1720456&view=rev
Log:
Provide more information in the "SIS about" command:
- The remote server where the information came from.
- The logging level for loggers used by SIS.

Modified:
    sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/AboutSC.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/Loggers.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/setup/About.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/Disposable.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
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties

Modified: sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/AboutSC.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/AboutSC.java?rev=1720456&r1=1720455&r2=1720456&view=diff
==============================================================================
--- sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/AboutSC.java
[UTF-8] (original)
+++ sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/AboutSC.java
[UTF-8] Wed Dec 16 21:15:44 2015
@@ -16,7 +16,10 @@
  */
 package org.apache.sis.console;
 
+import java.util.Date;
 import java.util.EnumSet;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
 import java.io.IOException;
 import java.rmi.registry.Registry;
 import javax.management.JMX;
@@ -25,10 +28,15 @@ import javax.management.MBeanServerConne
 import javax.management.remote.JMXServiceURL;
 import javax.management.remote.JMXConnector;
 import javax.management.remote.JMXConnectorFactory;
+import org.apache.sis.internal.system.Loggers;
 import org.apache.sis.setup.About;
 import org.apache.sis.util.Version;
+import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.resources.Errors;
+import org.apache.sis.util.resources.Messages;
 import org.apache.sis.util.resources.Vocabulary;
+import org.apache.sis.util.collection.TreeTable;
+import org.apache.sis.util.collection.TableColumn;
 import org.apache.sis.internal.system.Supervisor;
 import org.apache.sis.internal.system.SupervisorMBean;
 import org.apache.sis.internal.util.X364;
@@ -100,19 +108,42 @@ final class AboutSC extends SubCommand {
                  *
                  * Tutorial: http://docs.oracle.com/javase/tutorial/jmx/remote/custom.html
                  */
-                final String path = toRemoteURL(files.get(0));
+                final String address = files.get(0);
+                final String path = toRemoteURL(address);
+                final long time = System.nanoTime();
+                final TreeTable table;
                 try {
                     final JMXServiceURL url = new JMXServiceURL(path);
                     try (JMXConnector jmxc = JMXConnectorFactory.connect(url)) {
                         final MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
                         final SupervisorMBean bean = JMX.newMBeanProxy(mbsc, new ObjectName(Supervisor.NAME),
SupervisorMBean.class);
-                        configuration = bean.configuration(sections, locale, timezone).toString();
+                        table = bean.configuration(sections, locale, timezone);
                         warnings = bean.warnings(locale);
                     }
                 } catch (IOException e) {
                     error(Errors.format(Errors.Keys.CanNotConnectTo_1, path), e);
                     return Command.IO_EXCEPTION_EXIT_CODE;
                 }
+                /*
+                 * Logs a message telling how long it took to receive the reply.
+                 * Sometime the delay gives a hint about the server charge.
+                 */
+                double delay = (System.nanoTime() - time) / 1E+9;   // In seconds.
+                if (delay >= 0.1) {
+                    final double scale = (delay >= 10) ? 1 : (delay >= 1) ? 10 : 100;
+                    delay = Math.rint(delay * scale) / scale;
+                }
+                final LogRecord record = Messages.getResources(locale).getLogRecord(Level.INFO,
+                        Messages.Keys.ConfigurationOf_3, address, new Date(), delay);
+                record.setLoggerName(Loggers.APPLICATION);
+                Logging.log(Command.class, "main", record);
+                /*
+                 * Replace the root node label from "Local configuration" to "Remote configuration"
+                 * before to get the string representation of the configuration as a tree-table.
+                 */
+                table.getRoot().setValue(TableColumn.NAME,
+                        Vocabulary.getResources(locale).getString(Vocabulary.Keys.RemoteConfiguration));
+                configuration = table.toString();
             }
         }
         out.println(configuration);

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/Loggers.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/Loggers.java?rev=1720456&r1=1720455&r2=1720456&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/Loggers.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/internal/system/Loggers.java
[UTF-8] Wed Dec 16 21:15:44 2015
@@ -16,6 +16,18 @@
  */
 package org.apache.sis.internal.system;
 
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.logging.Handler;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import org.apache.sis.util.Static;
+import org.apache.sis.util.logging.Logging;
+
 
 /**
  * Names of loggers used in SIS other than the "module-wide" loggers. We often use approximatively
one logger
@@ -24,10 +36,15 @@ package org.apache.sis.internal.system;
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.6
- * @version 0.6
+ * @version 0.7
  * @module
  */
-public final class Loggers {
+public final class Loggers extends Static {
+    /**
+     * The root logger.
+     */
+    public static final String ROOT = "org.apache.sis";
+
     /**
      * The logger for Apache SIS internal operations. The name of this logger does not match
the package name
      * of the classes using it, because this logger name does not have the {@code "internal"}
part in it.
@@ -74,8 +91,105 @@ public final class Loggers {
     public static final String LOCALIZATION = "org.apache.sis.util.resources";
 
     /**
+     * The logger name for operation related to application (console, GUI or web).
+     */
+    public static final String APPLICATION = "org.apache.sis.application";
+
+    /**
      * Do not allow instantiation of this class.
      */
     private Loggers() {
     }
+
+    /**
+     * Returns a map of effective logging levels for SIS loggers. The effective logging level
take in account the level
+     * of parent loggers and the level of handlers. For example if a logger level is set
to {@link Level#FINE} but no
+     * handler have a level finer than {@link Level#INFO}, then the effective logging level
will be {@link Level#INFO}.
+     *
+     * <p>This method does not report the loggers that have an effective level identical
to its parent logger.</p>
+     *
+     * @return The effective logging levels of SIS loggers.
+     */
+    public static SortedMap<String,Level> getEffectiveLevels() {
+        final SortedMap<String,Level> levels = new TreeMap<>();
+        for (final Field field : Loggers.class.getDeclaredFields()) {
+            if (Modifier.isStatic(field.getModifiers()) && field.getType() == String.class)
try {
+                levels.put((String) field.get(null), null);
+            } catch (IllegalAccessException e) {
+                /*
+                 * Should never happen, unless we added some fields and forgot to update
this method.
+                 * In such case forget the problematic fields and search the next one. This
is okay
+                 * since this method is only for information purpose.
+                 */
+                Logging.unexpectedException(Logging.getLogger(SYSTEM), Loggers.class, "getEffectiveLevels",
e);
+            }
+        }
+        /*
+         * Process the loggers in alphabetical order. The intend is to process parent loggers
before child.
+         * The first logger in the map should be the SIS root logger, "org.apache.sis".
+         */
+        final Iterator<Map.Entry<String,Level>> it = levels.entrySet().iterator();
+        while (it.hasNext()) {
+            final Map.Entry<String,Level> entry = it.next();
+            final String name = entry.getKey();
+            final Logger logger = Logging.getLogger(name);
+            Level level = getEffectiveLevel(logger);
+            final Level h = getHandlerLevel(logger);
+            if (h.intValue() > level.intValue()) {
+                level = h;                              // Take in account the logging level
of handlers.
+            }
+            entry.setValue(level);
+            /*
+             * Now verify if the level is identical to the effective level of parent logger.
+             * If they are identical, then we remove the entry in order to report only the
changes.
+             */
+            Logger parent = logger;
+            while ((parent = parent.getParent()) != null) {
+                final Level p = levels.get(parent.getName());
+                if (p != null) {
+                    if (p.equals(level)) {
+                        it.remove();
+                    }
+                    break;
+                }
+            }
+        }
+        return levels;
+    }
+
+    /**
+     * Returns the effective level of the given logger, searching in the parent loggers if
needed.
+     * This method does not verify if handlers have higher level.
+     */
+    private static Level getEffectiveLevel(Logger logger) {
+        while (logger != null) {
+            final Level level = logger.getLevel();
+            if (level != null) {
+                return level;
+            }
+            logger = logger.getParent();
+        }
+        return Level.INFO;      // Default value specified by the java.util.logging framework.
+    }
+
+    /**
+     * Returns the finest level of registered handlers for the given logger.
+     * This method verifies also in the parent handlers if the logger use them.
+     */
+    private static Level getHandlerLevel(Logger logger) {
+        Level level = Level.OFF;
+        while (logger != null) {
+            for (final Handler handler : logger.getHandlers()) {
+                final Level c = handler.getLevel();
+                if (c != null && c.intValue() < level.intValue()) {
+                    level = c;
+                }
+            }
+            if (!logger.getUseParentHandlers()) {
+                break;
+            }
+            logger = logger.getParent();
+        }
+        return level;
+    }
 }

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/setup/About.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/setup/About.java?rev=1720456&r1=1720455&r2=1720456&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/setup/About.java [UTF-8]
(original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/setup/About.java [UTF-8]
Wed Dec 16 21:15:44 2015
@@ -30,6 +30,7 @@ import java.util.MissingResourceExceptio
 import java.util.jar.Attributes;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
+import java.util.logging.Level;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
@@ -197,10 +198,10 @@ public enum About {
         TreeTable.Node section = null;
         About newSection = VERSIONS;
 fill:   for (int i=0; ; i++) {
-            short    nameKey  = 0;    // The Vocabulary.Key for 'name', used only if name
is null.
-            String   name     = null; // The value to put in the 'Name' column of the table.
-            Object   value    = null; // The value to put in the 'Value' column of the table.
-            String[] children = null; // Optional children to write below the node.
+            short    nameKey  = 0;          // The Vocabulary.Key for 'name', used only if
name is null.
+            String   name     = null;       // The value to put in the 'Name' column of the
table.
+            Object   value    = null;       // The value to put in the 'Value' column of
the table.
+            String[] children = null;       // Optional children to write below the node.
             switch (i) {
                 case 0: {
                     if (sections.contains(VERSIONS)) {
@@ -308,6 +309,23 @@ fill:   for (int i=0; ; i++) {
                     break;
                 }
                 case 9: {
+                    if (sections.contains(LOGGING)) {
+                        nameKey = Vocabulary.Keys.Level;
+                        final Level level = Logging.getLogger("").getLevel();   // Root logger
level.
+                        value = level.getLocalizedName();
+                        final Map<String,Level> levels = Loggers.getEffectiveLevels();
+                        if (levels.size() != 1 || !level.equals(levels.get(Loggers.ROOT)))
{
+                            int j = 0;
+                            children = new String[levels.size() * 2];
+                            for (final Map.Entry<String,Level> entry : levels.entrySet())
{
+                                children[j++] = entry.getKey();
+                                children[j++] = entry.getValue().getLocalizedName();
+                            }
+                        }
+                    }
+                    break;
+                }
+                case 10: {
                     newSection = PATHS;
                     if (sections.contains(PATHS)) {
                         nameKey = Vocabulary.Keys.UserHome;
@@ -315,14 +333,14 @@ fill:   for (int i=0; ; i++) {
                     }
                     break;
                 }
-                case 10: {
+                case 11: {
                     if (sections.contains(PATHS)) {
                         nameKey = Vocabulary.Keys.CurrentDirectory;
                         value = getProperty("user.dir");
                     }
                     break;
                 }
-                case 11: {
+                case 12: {
                     if (sections.contains(PATHS)) {
                         nameKey = Vocabulary.Keys.DataDirectory;
                         value = System.getenv(DataDirectory.ENV);
@@ -339,21 +357,21 @@ fill:   for (int i=0; ; i++) {
                     }
                     break;
                 }
-                case 12: {
+                case 13: {
                     if (sections.contains(PATHS)) {
                         nameKey = Vocabulary.Keys.TemporaryFiles;
                         value = getProperty("java.io.tmpdir");
                     }
                     break;
                 }
-                case 13: {
+                case 14: {
                     if (sections.contains(PATHS)) {
                         nameKey = Vocabulary.Keys.JavaHome;
                         value = javaHome = getProperty("java.home");
                     }
                     break;
                 }
-                case 14: {
+                case 15: {
                     newSection = LIBRARIES;
                     if (sections.contains(LIBRARIES)) {
                         nameKey = Vocabulary.Keys.JavaExtensions;
@@ -361,7 +379,7 @@ fill:   for (int i=0; ; i++) {
                     }
                     break;
                 }
-                case 15: {
+                case 16: {
                     if (sections.contains(LIBRARIES)) {
                         nameKey = Vocabulary.Keys.Classpath;
                         value = classpath(getProperty("java.class.path"), false);

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/Disposable.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/Disposable.java?rev=1720456&r1=1720455&r2=1720456&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/Disposable.java [UTF-8]
(original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/Disposable.java [UTF-8]
Wed Dec 16 21:15:44 2015
@@ -22,6 +22,11 @@ package org.apache.sis.util;
  * Invoking the {@link #dispose()} method allows any resources held by this object to be
released.
  * The result of calling any other method subsequent to a call to this method is undefined.
  *
+ * <p>Data integrity shall not depend on {@code dispose()} method invocation.
+ * If some data may need to be {@linkplain java.io.OutputStream#flush() flushed to a stream}
+ * or {@linkplain java.sql.Connection#commit() committed to a database},
+ * then a {@code close()} method should be used instead.</p>
+ *
  * <div class="section">Relationship with {@code Closeable}</div>
  * Some classes may implement both the {@code Disposeable} and {@link java.io.Closeable}
interfaces.
  * While very similar, those two interfaces serve slightly different purposes. The {@code
Closeable}
@@ -30,7 +35,14 @@ package org.apache.sis.util;
  *
  * <div class="note"><b>Example:</b>
  * {@link javax.imageio.ImageReader} and {@link javax.imageio.ImageWriter} allow to reuse
the same instance
- * many time for reading or writing different image streams of the same format.</div>
+ * many times for reading or writing different images in the same format. New streams can
be created, given
+ * to the {@code ImageReader} or {@code ImageWriter} and closed many times as long as {@code
dispose()} has
+ * not been invoked.</div>
+ *
+ * Another difference is that {@link #dispose()} does not throw any checked exception.
+ * That method may be invoked in a background thread performing cleanup tasks,
+ * which would not know what to do in case of failure.
+ * Error during {@code dispose()} execution should not result in any lost of data.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3

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=1720456&r1=1720455&r2=1720456&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] Wed Dec 16 21:15:44 2015
@@ -72,6 +72,11 @@ public final class Messages extends Inde
         public static final short ChangedContainerCapacity_2 = 1;
 
         /**
+         * Configuration of “{0}” received on {1} in {2} seconds.
+         */
+        public static final short ConfigurationOf_3 = 31;
+
+        /**
          * This result indicates if a datum shift method has been applied.
          */
         public static final short ConformanceMeansDatumShift = 8;

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=1720456&r1=1720455&r2=1720456&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] Wed Dec 16 21:15:44 2015
@@ -17,6 +17,7 @@
 AlreadyRegistered_2             = {0} \u201c{1}\u201d is already registered. The second instance
will be ignored.
 AmbiguousEllipsoid_1            = Ambiguity between inverse flattening and semi minor axis
length for \u201c{0}\u201d. Using inverse flattening.
 ChangedContainerCapacity_2      = Changed the container capacity from {0} to {1} elements.
+ConfigurationOf_3               = Configuration of \u201c{0}\u201d received on {1} in {2}
seconds.
 ConformanceMeansDatumShift      = This result indicates if a datum shift method has been
applied.
 ConstantProjParameterValue_1    = This parameter is shown for completeness, but should never
have a value different than {0} for this projection.
 CreatedNamedObject_2            = Created an instance of \u2018{0}\u2019 named \u201c{1}\u201d.

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=1720456&r1=1720455&r2=1720456&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] Wed Dec 16 21:15:44 2015
@@ -24,6 +24,7 @@
 AlreadyRegistered_2             = Le {0} \u00ab\u202f{1}\u202f\u00bb est d\u00e9j\u00e0 inscrit
dans le registre. La seconde instance sera ignor\u00e9e.
 AmbiguousEllipsoid_1            = Ambigu\u00eft\u00e9 entre l\u2019aplatissement et la longueur
du semi-axe mineur pour \u00ab\u202f{0}\u202f\u00bb. Utilise l\u2019aplatissement.
 ChangedContainerCapacity_2      = Changement de la capacit\u00e9 du conteneur de {0} vers
{1} \u00e9l\u00e9ments.
+ConfigurationOf_3               = Configuration de \u00ab\u202f{0}\u202f\u00bb re\u00e7ue
le {1} en {2} secondes.
 ConformanceMeansDatumShift      = Ce r\u00e9sultat indique si un changement de r\u00e9f\u00e9rentiel
a \u00e9t\u00e9 appliqu\u00e9.
 ConstantProjParameterValue_1    = Ce param\u00e8tre est montr\u00e9 pour \u00eatre plus complet,
mais sa valeur ne devrait jamais \u00eatre diff\u00e9rente de {0} pour cette projection.
 CreatedNamedObject_2            = Cr\u00e9ation d\u2019une instance de \u2018{0}\u2019 nomm\u00e9e
\u00ab\u202f{1}\u202f\u00bb.

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java?rev=1720456&r1=1720455&r2=1720456&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
[UTF-8] Wed Dec 16 21:15:44 2015
@@ -256,6 +256,11 @@ public final class Vocabulary extends In
         public static final short Latitude = 26;
 
         /**
+         * Level
+         */
+        public static final short Level = 94;
+
+        /**
          * Libraries
          */
         public static final short Libraries = 27;
@@ -381,6 +386,11 @@ public final class Vocabulary extends In
         public static final short Quoted_1 = 86;
 
         /**
+         * Remote configuration
+         */
+        public static final short RemoteConfiguration = 93;
+
+        /**
          * Root
          */
         public static final short Root = 47;

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties?rev=1720456&r1=1720455&r2=1720456&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
[ISO-8859-1] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
[ISO-8859-1] Wed Dec 16 21:15:44 2015
@@ -55,6 +55,7 @@ JavaHome                = Java home dire
 Julian                  = Julian
 Latitude                = Latitude
 Longitude               = Longitude
+Level                   = Level
 Libraries               = Libraries
 LocalConfiguration      = Local configuration
 Locale                  = Locale
@@ -79,6 +80,7 @@ Others                  = Others
 OtherSurface            = Other surface
 Paths                   = Paths
 Quoted_1                = \u201c{0}\u201d
+RemoteConfiguration     = Remote configuration
 Root                    = Root
 RootMeanSquare          = Root Mean Square
 Scale                   = Scale

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties?rev=1720456&r1=1720455&r2=1720456&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
[ISO-8859-1] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
[ISO-8859-1] Wed Dec 16 21:15:44 2015
@@ -62,6 +62,7 @@ JavaHome                = R\u00e9pertoir
 Julian                  = Julien
 Latitude                = Latitude
 Longitude               = Longitude
+Level                   = Niveau
 Libraries               = Biblioth\u00e8ques
 LocalConfiguration      = Configuration locale
 Locale                  = Locale
@@ -86,6 +87,7 @@ Others                  = Autres
 OtherSurface            = Autre surface
 Paths                   = Chemins
 Quoted_1                = \u00ab\u202f{0}\u202f\u00bb
+RemoteConfiguration     = Configuration distante
 Root                    = Racine
 RootMeanSquare          = Moyenne quadratique
 Scale                   = \u00c9chelle



Mime
View raw message