You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2012/11/03 03:55:39 UTC

svn commit: r1405270 - in /sis/branches/JDK7/sis-build-helper/src: main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java main/java/org/apache/sis/util/resources/ResourceCompilerMojo.java site/apt/index.apt

Author: desruisseaux
Date: Sat Nov  3 02:55:39 2012
New Revision: 1405270

URL: http://svn.apache.org/viewvc?rev=1405270&view=rev
Log:
Resources location: replaced the hard-coded "org.apache.sis.util.resources"
location by a search of any package name ending with "resources".
We will need that for resources in other modules.

Modified:
    sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java
    sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/ResourceCompilerMojo.java
    sis/branches/JDK7/sis-build-helper/src/site/apt/index.apt

Modified: sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java?rev=1405270&r1=1405269&r2=1405270&view=diff
==============================================================================
--- sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java (original)
+++ sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java Sat Nov  3 02:55:39 2012
@@ -26,10 +26,10 @@ import java.util.regex.Pattern;
  * Reads a given list of {@code .properties} files and copies their content to {@code .utf} files
  * using UTF-8 encoding. It also checks for key validity and checks values for {@link MessageFormat}
  * compatibility. Finally, it writes the key values in the Java source files.
- * <p>
- * This class is independent of any Mojo and could be executed from the command-line.
+ *
+ * <p>This class is independent of any Mojo and could be executed from the command-line.
  * For now we keep it package-private, but we could consider to enable execution from
- * the command-line in a future version if this happen to be useful.
+ * the command-line in a future version if this happen to be useful.</p>
  *
  * @author Martin Desruisseaux (IRD, Geomatys)
  * @since   0.3 (derived from geotk-1.2)
@@ -283,8 +283,8 @@ class IndexedResourceCompiler implements
      * conventions (i.e. resources expecting some arguments must have a key name ending with
      * {@code "_$n"} where {@code "n"} is the number of arguments). This method transforms resource
      * values into legal {@link MessageFormat} patterns when necessary.
-     * <p>
-     * The following methods must be invoked before this one:
+     *
+     * <p>The following methods must be invoked before this one:</p>
      *
      * <ul>
      *   <li>{@link #initialize}</li>

Modified: sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/ResourceCompilerMojo.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/ResourceCompilerMojo.java?rev=1405270&r1=1405269&r2=1405270&view=diff
==============================================================================
--- sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/ResourceCompilerMojo.java (original)
+++ sis/branches/JDK7/sis-build-helper/src/main/java/org/apache/sis/util/resources/ResourceCompilerMojo.java Sat Nov  3 02:55:39 2012
@@ -55,6 +55,16 @@ public class ResourceCompilerMojo extend
     private String outputDirectory;
 
     /**
+     * The <code>compileSourceRoots</code> named "java" as a <code>File</code>.
+     */
+    private File javaDirectoryFile;
+
+    /**
+     * The <code>outputDirectory</code> as a <code>File</code>.
+     */
+    private File outputDirectoryFile;
+
+    /**
      * Executes the mojo.
      *
      * @throws MojoExecutionException if the plugin execution failed.
@@ -63,14 +73,12 @@ public class ResourceCompilerMojo extend
     @SuppressWarnings({"unchecked","rawtypes"}) // Generic array creation.
     public void execute() throws MojoExecutionException {
         int errors = 0;
-        final File target = new File(outputDirectory);
+        outputDirectoryFile = new File(outputDirectory);
         for (final String sourceDirectory : compileSourceRoots) {
-            File directory = new File(sourceDirectory);
+            final File directory = new File(sourceDirectory);
             if (directory.getName().equals("java")) {
-                final File[] resourcesToProcess = new File(sourceDirectory, "org/apache/sis/util/resources").listFiles(this);
-                if (resourcesToProcess != null && resourcesToProcess.length != 0) {
-                    errors += new Compiler(directory, target, resourcesToProcess).run();
-                }
+                javaDirectoryFile = directory;
+                errors += processAllResourceDirectories(directory);
             }
         }
         if (errors != 0) {
@@ -79,6 +87,27 @@ public class ResourceCompilerMojo extend
     }
 
     /**
+     * Recursively scans the directories for a sub-package named "resources",
+     * then invokes the resource compiler for that directory.
+     */
+    private int processAllResourceDirectories(final File directory) throws ResourceCompilerException {
+        int errors = 0;
+        for (final File subdir : directory.listFiles()) {
+            if (subdir.isDirectory()) {
+                if (subdir.getName().equals("resources")) {
+                    final File[] resourcesToProcess = subdir.listFiles(this);
+                    if (resourcesToProcess != null && resourcesToProcess.length != 0) {
+                        errors += new Compiler(resourcesToProcess).run();
+                    }
+                } else {
+                    errors += processAllResourceDirectories(subdir);
+                }
+            }
+        }
+        return errors;
+    }
+
+    /**
      * Returns {@code true} if the given file is the source code for a resources bundle.
      * This method returns {@code true} if the given file is a Java source file and if a
      * properties file of the same name exists.
@@ -101,8 +130,8 @@ public class ResourceCompilerMojo extend
      * A resource compiler that delegates the messages to the Mojo logger.
      */
     private final class Compiler extends IndexedResourceCompiler {
-        public Compiler(File sourceDirectory, File buildDirectory, File[] resourcesToProcess) {
-            super(sourceDirectory, buildDirectory, resourcesToProcess);
+        public Compiler(File[] resourcesToProcess) {
+            super(javaDirectoryFile, outputDirectoryFile, resourcesToProcess);
         }
 
         /**

Modified: sis/branches/JDK7/sis-build-helper/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-build-helper/src/site/apt/index.apt?rev=1405270&r1=1405269&r2=1405270&view=diff
==============================================================================
--- sis/branches/JDK7/sis-build-helper/src/site/apt/index.apt (original)
+++ sis/branches/JDK7/sis-build-helper/src/site/apt/index.apt Sat Nov  3 02:55:39 2012
@@ -50,7 +50,7 @@ Building Apache SIS
 
   The resource compiler is executed at Maven build time if the <<<pom.xml>>> file
   contains the following declaration. Note that current implementation looks only for resources
-  in the <<<org.apache.sis.util.resources>>> package; all other packages are ignored.
+  in any package ending with the <<<resources>>> name; all other packages are ignored.
 
 +-----------------------------------------------------
 <build>