sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1413657 - in /sis/branches/JDK7: ide-project/NetBeans/ sis-utility/src/main/java/org/apache/sis/internal/util/ sis-utility/src/main/java/org/apache/sis/util/resources/ sis-utility/src/main/resources/ sis-utility/src/main/resources/org/ sis...
Date Mon, 26 Nov 2012 14:47:29 GMT
Author: desruisseaux
Date: Mon Nov 26 14:47:27 2012
New Revision: 1413657

URL: http://svn.apache.org/viewvc?rev=1413657&view=rev
Log:
First draft of a SupervisorMBean, for allowing an administrator to watch SIS status with JConsole.
For now, the only operation provided is a list of potential problems detected.
For now, the only potential problems detected is unexpected death of the deamon thread.
More items may be added in the future.

Added:
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Supervisor.java
  (with props)
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/SupervisorMBean.java
  (with props)
    sis/branches/JDK7/sis-utility/src/main/resources/
    sis/branches/JDK7/sis-utility/src/main/resources/org/
    sis/branches/JDK7/sis-utility/src/main/resources/org/apache/
    sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/
    sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/
    sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/
    sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions.properties
  (with props)
    sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions_fr.properties
  (with props)
Modified:
    sis/branches/JDK7/ide-project/NetBeans/build.xml
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/DaemonThread.java
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/OSGiActivator.java
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/ReferenceQueueConsumer.java
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Threads.java
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties

Modified: sis/branches/JDK7/ide-project/NetBeans/build.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/ide-project/NetBeans/build.xml?rev=1413657&r1=1413656&r2=1413657&view=diff
==============================================================================
--- sis/branches/JDK7/ide-project/NetBeans/build.xml (original)
+++ sis/branches/JDK7/ide-project/NetBeans/build.xml Mon Nov 26 14:47:27 2012
@@ -17,5 +17,12 @@
         <include name="*.utf"/>
       </fileset>
     </copy>
+
+    <!-- Following are classical properties resources files. -->
+    <copy todir="${build.classes.dir}/org/apache/sis/internal/util">
+      <fileset dir="${project.root}/sis-utility/src/main/resources/org/apache/sis/internal/util">
+        <include name="*.properties"/>
+      </fileset>
+    </copy>
   </target>
 </project>

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/DaemonThread.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/DaemonThread.java?rev=1413657&r1=1413656&r2=1413657&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/DaemonThread.java
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/DaemonThread.java
Mon Nov 26 14:47:27 2012
@@ -117,7 +117,7 @@ abstract class DaemonThread extends Thre
      * <p><strong>This method is for internal use by Apache SIS shutdown hooks
only.</strong>
      * Users should never invoke this method explicitely.</p>
      *
-     * @param  first The first thread in the chain of threads to kill.
+     * @param  thread The first thread in the chain of threads to kill.
      * @param  stopWaitingAt A {@link System#nanoTime()} value telling when to stop waiting.
      *         This is used for preventing shutdown process to block an indefinite amount
of time.
      * @throws InterruptedException If an other thread invoked {@link #interrupt()} while
@@ -125,15 +125,16 @@ abstract class DaemonThread extends Thre
      *
      * @see Threads#shutdown(long)
      */
-    static void killAll(final DaemonThread first, final long stopWaitingAt) throws InterruptedException
{
-        for (DaemonThread thread=first; thread!=null; thread=thread.previous) {
-            thread.killRequested = true;
-            thread.interrupt();
+    static void killAll(DaemonThread thread, final long stopWaitingAt) throws InterruptedException
{
+        for (DaemonThread t=thread; t!=null; t=t.previous) {
+            t.killRequested = true;
+            t.interrupt();
         }
-        for (DaemonThread thread=first; thread!=null; thread=thread.previous) {
+        while (thread != null) {
             final long delay = stopWaitingAt - System.nanoTime();
             if (delay <= 0) break;
             thread.join(delay / 1000000); // Convert nanoseconds to milliseconds.
+            thread = thread.previous;
         }
     }
 
@@ -142,18 +143,24 @@ abstract class DaemonThread extends Thre
      * always be null. A non-empty list would be a symptom for a severe problem, probably
      * requiring an application reboot.
      *
-     * @param  first The first thread in the chain of threads to verify.
+     * <p><strong>This method is for internal use by Apache SIS only.</strong>
+     * Users should never invoke this method explicitely.</p>
+     *
+     * @param  thread The first thread in the chain of threads to verify.
      * @return The name of dead threads, or {@code null} if none.
+     *
+     * @see Threads#listDeadThreads()
      */
-    static List<String> listDeadThreads(final DaemonThread first) {
+    static List<String> listDeadThreads(DaemonThread thread) {
         List<String> list = null;
-        for (DaemonThread thread=first; thread!=null; thread=thread.previous) {
+        while (thread != null) {
             if (!thread.isAlive()) {
                 if (list == null) {
                     list = new ArrayList<>();
                 }
                 list.add(thread.getName());
             }
+            thread = thread.previous;
         }
         return list;
     }

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/OSGiActivator.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/OSGiActivator.java?rev=1413657&r1=1413656&r2=1413657&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/OSGiActivator.java
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/OSGiActivator.java
Mon Nov 26 14:47:27 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.sis.internal.util;
 
+import javax.management.JMException;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleActivator;
 
@@ -52,9 +53,13 @@ public final class OSGiActivator impleme
      * @param  context The execution context of the bundle being stopped.
      * @throws InterruptedException If an other thread invoked {@link #interrupt()} while
      *         we were waiting for the {@code sis-utility} threads to die.
+     * @throws JMException If an error occurred during unregistration of the supervisor MBean.
      */
     @Override
-    public void stop(final BundleContext context) throws InterruptedException {
+    public void stop(final BundleContext context) throws InterruptedException, JMException
{
         Threads.shutdown(4000);
+        if (Supervisor.ENABLED) {
+            Supervisor.unregister();
+        }
     }
 }

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/ReferenceQueueConsumer.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/ReferenceQueueConsumer.java?rev=1413657&r1=1413656&r2=1413657&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/ReferenceQueueConsumer.java
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/ReferenceQueueConsumer.java
Mon Nov 26 14:47:27 2012
@@ -63,6 +63,9 @@ public final class ReferenceQueueConsume
         synchronized (Threads.class) {
             Threads.lastCreatedDaemon = DEFAULT = new ReferenceQueueConsumer<>(Threads.lastCreatedDaemon);
         }
+        if (Supervisor.ENABLED) {
+            Supervisor.register();
+        }
         // Call to Thread.start() must be outside the constructor
         // (Reference: Goetz et al.: "Java Concurrency in Practice").
         DEFAULT.start();

Added: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Supervisor.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Supervisor.java?rev=1413657&view=auto
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Supervisor.java
(added)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Supervisor.java
Mon Nov 26 14:47:27 2012
@@ -0,0 +1,199 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.internal.util;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.logging.Logger;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+import javax.management.MBeanServer;
+import javax.management.MBeanInfo;
+import javax.management.MBeanFeatureInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
+import javax.management.MBeanConstructorInfo;
+import javax.management.JMException;
+import javax.management.NotCompliantMBeanException;
+import java.lang.management.ManagementFactory;
+
+import org.apache.sis.util.Localized;
+import org.apache.sis.util.logging.Logging;
+import org.apache.sis.util.resources.Errors;
+
+
+/**
+ * A central place where to monitor library-wide information through a MBean. For example
+ * we register every {@link org.apache.sis.util.collection.WeakHashSet} created as static
+ * variables.  The MBean interface should allow administrators to know the cache size and
+ * eventually perform some operations like clearing a cache.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3
+ * @version 0.3
+ * @module
+ */
+public final class Supervisor extends StandardMBean implements SupervisorMBean, Localized
{
+    /**
+     * Whatever JMX agent is enabled. Setting this variable to {@code false} allows the
+     * Java compiler to omit any dependency to this {@code Supervisor} class.
+     */
+    static final boolean ENABLED = true;
+
+    /**
+     * The JMX object name, created when the {@link #register()} is first invoked.
+     * {@link ObjectName#WILDCARD} is used as a sentinel value if the registration failed.
+     */
+    private static ObjectName name;
+
+    /**
+     * Registers the {@code Supervisor} instance, if not already done.
+     * If the supervisor has already been registered but has not yet been
+     * {@linkplain #unregister() unregistered}, then this method does nothing.
+     *
+     * <p>If the registration fails, then this method logs a message at the warning
level
+     * and the MBean will not be registered. This method does not propagate the exception
+     * because the MBean is not a mandatory part of SIS library.</p>
+     */
+    static synchronized void register() {
+        if (name == null) {
+            name = ObjectName.WILDCARD; // In case of failure.
+            final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+            try {
+                final ObjectName n = new ObjectName("org.apache.sis:type=Supervisor");
+                server.registerMBean(new Supervisor(Locale.getDefault()), n);
+                name = n; // Store only on success.
+            } catch (SecurityException | JMException e) {
+                Logging.unexpectedException(Logger.getLogger("org.apache.sis"), Supervisor.class,
"register", e);
+            }
+        }
+    }
+
+    /**
+     * Unregister the {@code Supervisor} instance. This method does nothing if the supervisor
+     * has not been previously successfully {@linkplain #register() registered}, or if it
has
+     * already been unregistered.
+     *
+     * @throws JMException If an error occurred during unregistration.
+     */
+    static synchronized void unregister() throws JMException {
+        final ObjectName n = name;
+        if (n != null) {
+            name = null; // Clear even if the next line fail.
+            if (n != ObjectName.WILDCARD) {
+                ManagementFactory.getPlatformMBeanServer().unregisterMBean(n);
+            }
+        }
+    }
+
+    /**
+     * The locale for producing the messages.
+     */
+    private final Locale locale;
+
+    /**
+     * Creates a new {@code Supervisor} which will report messages in the given locale.
+     *
+     * @param  locale The locale to use for reporting messages.
+     * @throws NotCompliantMBeanException Should never happen.
+     */
+    public Supervisor(final Locale locale) throws NotCompliantMBeanException {
+        super(SupervisorMBean.class);
+        this.locale = locale;
+    }
+
+    /**
+     * Returns the supervisor locale.
+     */
+    @Override
+    public Locale getLocale() {
+        return locale;
+    }
+
+    /**
+     * If there is something wrong with the current Apache Supervisor status,
+     * returns descriptions of the problems. Otherwise returns {@code null}.
+     */
+    @Override
+    public List<String> warnings() {
+        final List<String> warnings = Threads.listDeadThreads();
+        if (warnings != null) {
+            final Errors resources = Errors.getResources(locale);
+            for (int i=warnings.size(); --i>=0;) {
+                warnings.set(i, resources.getString(Errors.Keys.DeadThread_1, warnings.get(i)));
+            }
+        }
+        return warnings;
+    }
+
+    /**
+     * Returns the operations impact, which is {@code INFO}.
+     */
+    @Override
+    protected int getImpact(final MBeanOperationInfo info) {
+        return MBeanOperationInfo.INFO;
+    }
+
+    /**
+     * Returns the localized description for this MBean.
+     */
+    @Override
+    protected String getDescription(final MBeanInfo info) {
+        return getDescription("supervisor");
+    }
+
+    /**
+     * Returns the localized description for the given constructor, attribute or operation.
+     */
+    @Override
+    protected String getDescription(final MBeanFeatureInfo info) {
+        return getDescription(info.getName());
+    }
+
+    /**
+     * Returns the localized description for the given constructor parameter.
+     *
+     * @param info     The constructor.
+     * @param param    The constructor parameter.
+     * @param sequence The parameter number (0 for the first parameter, 1 for the second,
etc.)
+     */
+    @Override
+    protected String getDescription(MBeanConstructorInfo info, MBeanParameterInfo param,
int sequence) {
+        return getDescription(getParameterName(info, param, sequence));
+    }
+
+    /**
+     * Returns the name of the given constructor parameter.
+     *
+     * @param info     The constructor.
+     * @param param    The constructor parameter.
+     * @param sequence The parameter number (0 for the first parameter, 1 for the second,
etc.)
+     */
+    @Override
+    protected String getParameterName(MBeanConstructorInfo info, MBeanParameterInfo param,
int sequence) {
+        return "locale";
+    }
+
+    /**
+     * Returns the string from the {@code Descriptions} resource bundle for the given key.
+     */
+    private String getDescription(final String resourceKey) {
+        return ResourceBundle.getBundle("org.apache.sis.internal.util.Descriptions",
+                locale, Supervisor.class.getClassLoader()).getString(resourceKey);
+    }
+}

Propchange: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Supervisor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Supervisor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/SupervisorMBean.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/SupervisorMBean.java?rev=1413657&view=auto
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/SupervisorMBean.java
(added)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/SupervisorMBean.java
Mon Nov 26 14:47:27 2012
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.internal.util;
+
+import java.util.List;
+
+
+/**
+ * Provides information about the state of a running Apache SIS instance.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3
+ * @version 0.3
+ * @module
+ */
+public interface SupervisorMBean {
+    /**
+     * If there is something wrong with the current Apache SIS status,
+     * returns descriptions of the problems. Otherwise returns {@code null}.
+     *
+     * @return A description of a problems in the library, or {@code null} if none.
+     */
+    List<String> warnings();
+}

Propchange: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/SupervisorMBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/SupervisorMBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Threads.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Threads.java?rev=1413657&r1=1413656&r2=1413657&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Threads.java
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/Threads.java
Mon Nov 26 14:47:27 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.sis.internal.util;
 
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.ExecutorService;
 import org.apache.sis.util.Static;
@@ -67,6 +68,14 @@ final class Threads extends Static {
         }
     };
 
+
+
+    /* -------------------------------------------------------------------------------------
+     * Every non-final static variables below this point are initialized by other classes,
+     * like DaemonThread or Executors - this class will never initialize those variables
by
+     * itself. All initialization shall be performed in a synchronized (Thread.class) block.
+     * -------------------------------------------------------------------------------------
*/
+
     /**
      * The tail of a chain of {@code DaemonThread}s created by the {@code sis-utility} module.
      * Other modules need to maintain their own chain, if any. See the {@link DaemonThread}
@@ -116,4 +125,15 @@ final class Threads extends Static {
         }
         DaemonThread.killAll(lastCreatedDaemon, stopWaitingAt);
     }
+
+    /**
+     * Returns the names of dead threads, or {@code null} if none. The returned list should
+     * always be null. A non-empty list would be a symptom for a severe problem, probably
+     * requiring an application reboot.
+     *
+     * @return The name of dead threads, or {@code null} if none.
+     */
+    static synchronized List<String> listDeadThreads() {
+        return DaemonThread.listDeadThreads(lastCreatedDaemon);
+    }
 }

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1413657&r1=1413656&r2=1413657&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
Mon Nov 26 14:47:27 2012
@@ -59,6 +59,11 @@ public final class Errors extends Indexe
         public static final int CloneNotSupported_1 = 42;
 
         /**
+         * Thread “{0}” is dead.
+         */
+        public static final int DeadThread_1 = 43;
+
+        /**
          * Value “{0}” is duplicated.
          */
         public static final int DuplicatedValue_1 = 38;

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1413657&r1=1413656&r2=1413657&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
Mon Nov 26 14:47:27 2012
@@ -15,6 +15,7 @@
 # limitations under the License.
 #
 CloneNotSupported_1             = Can not clone an object of type \u2018{0}\u2019.
+DeadThread_1                    = Thread \u201c{0}\u201d is dead.
 DuplicatedValue_1               = Value \u201c{0}\u201d is duplicated.
 ElementAlreadyPresent_1         = Element \u201c{0}\u201d is already present.
 EmptyArgument_1                 = Argument \u2018{0}\u2019 shall not be empty.

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1413657&r1=1413656&r2=1413657&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
Mon Nov 26 14:47:27 2012
@@ -15,6 +15,7 @@
 # limitations under the License.
 #
 CloneNotSupported_1             = Un objet de type \u2018{0}\u2019 ne peut pas \u00eatre
clon\u00e9.
+DeadThread_1                    = La t\u00e2che \u201c{0}\u201d est morte.
 DuplicatedValue_1               = La valeur \u201c{0}\u201d est dupliqu\u00e9e.
 ElementAlreadyPresent_1         = L\u2019\u00e9lement \u201c{0}\u201d est d\u00e9j\u00e0
pr\u00e9sent.
 EmptyArgument_1                 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre vide.

Added: sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions.properties?rev=1413657&view=auto
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions.properties
(added)
+++ sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions.properties
Mon Nov 26 14:47:27 2012
@@ -0,0 +1,5 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more contributor license
agreements.
+supervisor = Provides information about the state of a running Apache SIS library.
+org.apache.sis.internal.util.Supervisor = Creates a new supervisor.
+locale = The language of supervisor messages.
+warnings = List of problems detected in the running Apache SIS library. If this list contains
any item, then an application reboot is strongly recommended.

Propchange: sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions_fr.properties?rev=1413657&view=auto
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions_fr.properties
(added)
+++ sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions_fr.properties
Mon Nov 26 14:47:27 2012
@@ -0,0 +1,5 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more contributor license
agreements.
+supervisor = Fournit des informations \u00e0 propos de l\u2019\u00e9tat d\u2019une biblioth\u00e8que
Apache SIS en cours d\u2019ex\u00e9cution.
+org.apache.sis.internal.util.Supervisor = Construit un nouveau superviseur.
+locale = La langue des messages produits par le superviseur.
+warnings = Liste des probl\u00e8mes d\u00e9tect\u00e9s dans la biblioth\u00e8que Apache SIS
en cours d\u2019ex\u00e9cution. Si cette liste contient des items, alors un red\u00e9marrage
de l\u2019application est fortement recommand\u00e9.

Propchange: sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions_fr.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-utility/src/main/resources/org/apache/sis/internal/util/Descriptions_fr.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message