You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2013/08/24 17:21:09 UTC

svn commit: r1517146 - in /myfaces/tobago/trunk: tobago-theme/ tobago-theme/tobago-theme-scarborough/ tobago-theme/tobago-theme-standard/ tobago-tool/tobago-theme-plugin/ tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plu...

Author: bommel
Date: Sat Aug 24 15:21:09 2013
New Revision: 1517146

URL: http://svn.apache.org/r1517146
Log:
(TOBAGO-1302)
Add support for a theme resources index file per theme

Added:
    myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/IndexThemeMojo.java   (with props)
Modified:
    myfaces/tobago/trunk/tobago-theme/pom.xml
    myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/pom.xml
    myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/pom.xml
    myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/pom.xml
    myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/AbstractThemeMojo.java

Modified: myfaces/tobago/trunk/tobago-theme/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/pom.xml?rev=1517146&r1=1517145&r2=1517146&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/pom.xml (original)
+++ myfaces/tobago/trunk/tobago-theme/pom.xml Sat Aug 24 15:21:09 2013
@@ -28,7 +28,17 @@
 
   <build>
     <plugins>
-
+      <plugin>
+        <groupId>org.apache.myfaces.tobago</groupId>
+        <artifactId>tobago-theme-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>index</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 

Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/pom.xml?rev=1517146&r1=1517145&r2=1517146&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/pom.xml (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/pom.xml Sat Aug 24 15:21:09 2013
@@ -51,7 +51,7 @@
             <phase>compile</phase>
             <configuration>
               <target>
-                <concat destfile="${project.build.directory}/javascript-min/scarborough/script/tobago.min.js">
+                <concat destfile="${project.build.directory}/javascript-min/scarborough/script/tobago.min.js" force="no">
                   <filelist dir="${basedir}/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/script" files="tobago.js" />
                 </concat>
                 <replaceregexp match="^.*//.*@DEV_ONLY.*$" replace="" byline="true">

Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/pom.xml?rev=1517146&r1=1517145&r2=1517146&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/pom.xml (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/pom.xml Sat Aug 24 15:21:09 2013
@@ -59,10 +59,10 @@
             <phase>compile</phase>
             <configuration>
               <target>
-                <concat destfile="${project.build.directory}/javascript-min/standard/script/tobago.min.js">
+                <concat destfile="${project.build.directory}/javascript-min/standard/script/tobago.min.js" force="no">
                   <filelist dir="${basedir}/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script" files="tobago.js,tobago-calendar.js,tobago-converter.js,tobago-in.js,tobago-menu.js,tobago-overlay.js,tobago-popup.js,tobago-sheet.js,tobago-suggest.js,tobago-tree.js,tobago-utils.js" />
                 </concat>
-                <concat destfile="${project.build.directory}/javascript-min/msie_6_0/script/tobago.min.js">
+                <concat destfile="${project.build.directory}/javascript-min/msie_6_0/script/tobago.min.js" force="no">
                   <filelist dir="${basedir}/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/msie_6_0/script" files="tobago.js" />
                 </concat>
                 <replaceregexp match="^.*//.*@DEV_ONLY.*$" replace="" byline="true">

Modified: myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/pom.xml?rev=1517146&r1=1517145&r2=1517146&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/pom.xml (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/pom.xml Sat Aug 24 15:21:09 2013
@@ -36,12 +36,17 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.2.1</version>
+      <version>${mavenVersion}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-project</artifactId>
-      <version>2.2.1</version>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+    <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>${mavenVersion}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
@@ -51,12 +56,17 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>2.0.5</version>
+      <version>2.0.6</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.2.1</version>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-compiler-api</artifactId>
+      <version>1.5.3</version>
     </dependency>
   </dependencies>
   <build>
@@ -78,4 +88,7 @@
       </plugins>
     </pluginManagement>
   </build>
+  <properties>
+     <mavenVersion>2.2.1</mavenVersion>
+  </properties>
 </project>

Modified: myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/AbstractThemeMojo.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/AbstractThemeMojo.java?rev=1517146&r1=1517145&r2=1517146&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/AbstractThemeMojo.java (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/AbstractThemeMojo.java Sat Aug 24 15:21:09 2013
@@ -35,6 +35,10 @@ public abstract class AbstractThemeMojo 
    */
   private MavenProject project;
 
+  private String[] includes = new String[]{"**"};
+  private String[] excludes = new String[]{"META-INF/**/*",
+      "**/*.properties", "**/*.xml", "**/*.class"};
+
   public MavenProject getProject() {
     return project;
   }
@@ -42,10 +46,19 @@ public abstract class AbstractThemeMojo 
   protected String[] getThemeFiles(File sourceDir) {
     DirectoryScanner scanner = new DirectoryScanner();
     scanner.setBasedir(sourceDir);
-    scanner.setIncludes(new String[]{"**"});
-    scanner.setExcludes(new String [] {"META-INF/**/*",
-        "**/*.properties", "**/*.xml", "**/*.class"});
+    scanner.setIncludes(includes);
+    scanner.setExcludes(excludes);
     scanner.scan();
     return scanner.getIncludedFiles();
   }
+
+  public String[] getIncludes() {
+    return includes;
+  }
+
+  public String[] getExcludes() {
+    return excludes;
+  }
+
+
 }

Added: myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/IndexThemeMojo.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/IndexThemeMojo.java?rev=1517146&view=auto
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/IndexThemeMojo.java (added)
+++ myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/IndexThemeMojo.java Sat Aug 24 15:21:09 2013
@@ -0,0 +1,123 @@
+/*
+ * 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.myfaces.tobago.maven.plugin;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.codehaus.plexus.util.DirectoryScanner;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+
+/**
+ * @goal index
+ * @phase prepare-package
+ */
+public class IndexThemeMojo extends AbstractThemeMojo {
+
+  /**
+   * Directory containing the resource files that should be listed into the tobago-resources.properties.
+   *
+   * @parameter default-value="${project.build.outputDirectory}"
+   * @required
+   */
+  private File outputDirectory;
+
+  /**
+   * @parameter default-value="${project.build.outputDirectory}/META-INF/tobago-resources.properties"
+   * @required
+   */
+  private File tobagoResourcesFile;
+
+  public void execute() throws MojoExecutionException, MojoFailureException {
+    if ("pom".equalsIgnoreCase(getProject().getPackaging())) {
+      getLog().info("Not creating tobago-resources.properties as the project is a pom package");
+      return;
+    }
+    if (getLog().isDebugEnabled()) {
+      getLog().debug("Scanning resource: " + outputDirectory.getName());
+    }
+
+    if (!outputDirectory.isAbsolute()) {
+      outputDirectory = new File(getProject().getBasedir(), outputDirectory.getPath());
+    }
+    StaleCheckDirectoryScanner scanner = new StaleCheckDirectoryScanner(tobagoResourcesFile.lastModified());
+    scanner.setBasedir(outputDirectory);
+    scanner.setIncludes(getIncludes());
+    scanner.setExcludes(getExcludes());
+    scanner.scan();
+
+    String[] fileNames = scanner.getIncludedFiles();
+    if (fileNames != null && fileNames.length == 0) {
+      getLog().info("Skipping create resource file " + tobagoResourcesFile.getName() + ". No resources found");
+      return;
+    }
+
+    if (scanner.isUp2date) {
+    //tobagoResourcesFile.lastModified() == 0L || scanner.maxLastModified > tobagoResourcesFile.lastModified()) {
+      File metaInf = tobagoResourcesFile.getParentFile();
+      if (!metaInf.exists()) {
+        if (!metaInf.mkdirs()) {
+          getLog().error("Error creating directory " + metaInf.getName());
+        }
+      }
+      BufferedWriter bufferedWriter = null;
+      try {
+        StringWriter stringWriter = new StringWriter();
+        bufferedWriter = new BufferedWriter(stringWriter);
+        for (String file : scanner.getIncludedFiles()) {
+          bufferedWriter.append(file);
+          bufferedWriter.newLine();
+        }
+        bufferedWriter.flush();
+        // TODO encoding
+        FileUtils.fileWrite(tobagoResourcesFile, stringWriter.toString());
+      } catch (IOException e) {
+        getLog().error("Error creating resource file " + tobagoResourcesFile.getName(), e);
+      } finally {
+        IOUtil.close(bufferedWriter);
+      }
+    } else {
+      getLog().info("Skipping create resource file " + tobagoResourcesFile.getName());
+    }
+  }
+
+  private static class StaleCheckDirectoryScanner extends DirectoryScanner {
+    private long lastModified;
+    private boolean isUp2date = true;
+
+    private StaleCheckDirectoryScanner(long lastModified) {
+      this.lastModified = lastModified;
+    }
+
+    @Override
+    protected boolean isSelected(String name, File file) {
+      long lastModified = file.lastModified();
+      if (lastModified > this.lastModified) {
+        isUp2date = false;
+      }
+      return super.isSelected(name, file);
+    }
+  }
+}

Propchange: myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/IndexThemeMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/tobago/trunk/tobago-tool/tobago-theme-plugin/src/main/java/org/apache/myfaces/tobago/maven/plugin/IndexThemeMojo.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL