You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by de...@apache.org on 2017/09/17 12:29:56 UTC

[myfaces-trinidad] 15/30: Checkpoint: more skin pregen code cleanup

This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch andys-skin-pregen
in repository https://gitbox.apache.org/repos/asf/myfaces-trinidad.git

commit fafbaabb893461db3784a4b3e9ae1ddf4b68fef0
Author: Andy Schwartz <an...@apache.org>
AuthorDate: Tue Mar 13 20:42:23 2012 +0000

    Checkpoint:  more skin pregen code cleanup
    
    Only interesting change: updated NameUtils.getPlatformName() to give TrinidadAgent.OS_UNKNOWN a name that we can use for a) sorting b) logging and c) file names.  Previously NameUtils.getPlatformName(OS_UNKNOWN) returned null.
---
 .../skin/pregen/config/PregenConfig.java           | 12 ++++++++++
 .../pregen/variant/PlatformVariantExtractor.java   | 26 ++++++++++++++++++++--
 .../trinidadinternal/style/util/NameUtils.java     |  4 +++-
 3 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java
index 4db7692..67c2b6a 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java
@@ -41,6 +41,18 @@ import org.apache.myfaces.trinidadinternal.util.nls.LocaleUtils;
 
 /**
  * Specifies configuration constraints for skin pregeneration.
+ * 
+ * For the moment, only two types of configurations are supported:
+ * 
+ * - all: All possible variants are pregenerated
+ * - common: Only the most common variants are pregenerated
+ * 
+ * The "variants" request parameter specifies which of these two
+ * configurations to use.
+ * 
+ * In the future, we can consider supporting finer-grained configuration
+ * specification - eg. we could allow specific platforms/agents/locales
+ * to be specified via an XML configuration file.
  */
 abstract public class PregenConfig
 {
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/PlatformVariantExtractor.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/PlatformVariantExtractor.java
index ef18f3f..7d0a04f 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/PlatformVariantExtractor.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/PlatformVariantExtractor.java
@@ -22,10 +22,12 @@ import java.util.ArrayList;
 import java.util.Collection;
 
 import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
 import java.util.List;
-import java.util.TreeSet;
 
 import org.apache.myfaces.trinidadinternal.agent.TrinidadAgent;
+import org.apache.myfaces.trinidadinternal.style.util.NameUtils;
 import org.apache.myfaces.trinidadinternal.style.xml.parse.StyleSheetNode;
 
  /**
@@ -35,7 +37,7 @@ final class PlatformVariantExtractor implements SkinVariantExtractor<Integer>
 {
    public PlatformVariantExtractor()
    {
-     _platforms = new TreeSet<Integer>();
+     _platforms = new HashSet<Integer>();
    }
 
    @Override
@@ -66,8 +68,28 @@ final class PlatformVariantExtractor implements SkinVariantExtractor<Integer>
     
     platforms.addAll(_platforms);
 
+    // Sort by name to make logger output/progress easier to monitor    
+    _sortByPlatformName(platforms);
+
     return Collections.unmodifiableList(platforms);
   }
+  
+  private static void _sortByPlatformName(List<Integer> platforms)
+  {
+    Collections.sort(platforms,
+      new Comparator<Integer>() {
+        @Override
+        public int compare(Integer platform1, Integer platform2)
+        {
+          String name1 = NameUtils.getPlatformName(platform1);
+          String name2 = NameUtils.getPlatformName(platform2);
+          assert(name1 != null);
+          assert(name2 != null);
+          
+          return name1.compareTo(name2);
+        }
+      });
+  }
 
   private final Collection<Integer> _platforms;
 }
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/NameUtils.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/NameUtils.java
index d2dc1ae..c3fe5ab 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/NameUtils.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/NameUtils.java
@@ -206,7 +206,7 @@ public class NameUtils
       name = _PLATFORM_ANDROID;
       break;
     case TrinidadAgent.OS_UNKNOWN:
-      // This case is only here to avoid the default assertion
+      name = _PLATFORM_UNKNOWN;
       break;
     default:
       // New or invalid os id
@@ -705,6 +705,8 @@ public class NameUtils
   
   private static final String _PLATFORM_ANDROID = "android";
 
+  private static final String _PLATFORM_UNKNOWN = "unknown";
+
   // Accessibility constants
   private static final String _ACC_HIGH_CONTRAST = "hc";
 

-- 
To stop receiving notification emails like this one, please contact
"commits@myfaces.apache.org" <co...@myfaces.apache.org>.