You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by an...@apache.org on 2012/03/12 22:04:39 UTC

svn commit: r1299866 - in /myfaces/trinidad/branches/andys-skin-pregen: trinidad-api/ trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/ trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/ trinidad-impl/ trinidad-impl/src/main/...

Author: andys
Date: Mon Mar 12 21:04:38 2012
New Revision: 1299866

URL: http://svn.apache.org/viewvc?rev=1299866&view=rev
Log:
Checkpoint: concrete Version cleanup

Replaced new Version.toConcreteVersion() with more specific toMinimumVersion() and toMaximumVersion(), since the difference between these two different ways of producing concrete versions is significant.

toMinimumVersion() will drop the trailing wildcard segment if it is present.  (toConcreteVersion() should have done this, but didn't.)

Version.MAX_VERSION now uses Integer.MAX_VALUE for its padding.

Added the magic:

    <jdev.project.has.tests>true</jdev.project.has.tests>

Property to the api/impl poms to force JDev projects to be generated for the corresponding unit tests.  (Why isn't this already specified?)

Modified:
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/pom.xml
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/pom.xml
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/pom.xml?rev=1299866&r1=1299865&r2=1299866&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/pom.xml (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/pom.xml Mon Mar 12 21:04:38 2012
@@ -32,6 +32,10 @@
 
   <artifactId>trinidad-api</artifactId>
   <packaging>jar</packaging>
+
+  <properties>
+    <jdev.project.has.tests>true</jdev.project.has.tests>
+  </properties>
   
   <dependencies>
 

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java?rev=1299866&r1=1299865&r2=1299866&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java Mon Mar 12 21:04:38 2012
@@ -135,30 +135,47 @@ public final class Version implements Co
     // equivalent
     return 0;
   }
-  
+
   /**
-   * Converts this Version to an equivalent instance with wildcard segements replaced
-   * by some concrete (non-wildcard) value.
-   *
-   * @return this, if no wildcards are present. Otherwise, a new Version instance
-   *         with wildcard segments replaced by some concrete value is returned.
+   * Converts this Version to an equivalent "minimum" instance.
+   * 
+   * Interior wildcard segements are replaced with "0".
+   * The trailing wildcard segment (if present) is dropped.
+   * Wildcard version padding is replaced with null padding.
+   * 
+   * If no wilcards are present, returns this Version instance.
+   */
+  public Version toMinimumVersion()
+  {
+    if (!_containsWildcard() && !_isWildcard(_versionPadding))
+    {
+      return this;
+    }
+    
+    return new Version(_toString("0", true));
+  }
+
+  /**
+   * Converts this Version to an equivalent "maximum" instance.
+   * 
+   * Both wildcard segements and wilcard padding are replaced with
+   * Integer.MAX_VALUE.
+   * If no wilcards are present, returns this Version instance.
    */
-  public Version toConcreteVersion()
+  public Version toMaximumVersion()
   {
     if (!_containsWildcard() && !_isWildcard(_versionPadding))
     {
       return this;
     }
     
-    // We don't make any guarantee about what value we'll use
-    // when replacing wildcards.  Zero is as good as any.
-    return new Version(_toString("0"));
+    return new Version(_toString(_MAX_STRING, false), _MAX_STRING);
   }
 
   @Override
   public String toString()
   {
-    return _toString(_WILDCARD);
+    return _toString(_WILDCARD, false);
   }
   
   @Override
@@ -264,9 +281,19 @@ public final class Version implements Co
     return (ourIntVersion < otherIntVersion) ? -1 : (ourIntVersion > otherIntVersion ? 1 : 0);
   }
 
-  // Returns the string representation of the this Version, replacing
-  // wildcards with the specified value.
-  private String _toString(String wildcardReplacement)
+  /**
+   * Returns the string representation of the this Version, replacing
+   * wildcards with the specified value.
+   *
+   * @param wildcardReplacement non-null String to substitute for wildcard
+   *   version segments.
+   * @param dropTrailingWildcard flag indicating whether trailing wildcards
+   *   should be dropped in the returned string.
+   */
+  private String _toString(
+    String  wildcardReplacement,
+    boolean dropTrailingWildcard
+    )
   {
     assert(wildcardReplacement != null);
 
@@ -287,7 +314,14 @@ public final class Version implements Co
       i++;
       
       if (i != versionCount)
+      {
+        if (dropTrailingWildcard && (i == versionCount - 1) && _isWildcard(_versions[i]))
+        {
+          break;
+        }
+
         versionBuilder.append('.');
+      }
       else
         break;
     }
@@ -360,6 +394,7 @@ public final class Version implements Co
   // Placeholder used by _intVersions[] for non-numeric/non-int segments.
   private static final int _NON_INT_VERSION = -1;
   
+  private static final String _MAX_STRING = Integer.toString(Integer.MAX_VALUE);
   /**
    * A constant value holding the minimum value a version can have: 0.
    */
@@ -374,5 +409,6 @@ public final class Version implements Co
    * a range of versions.  Version.MAX_VERSION specifies the Integer.MAX_VALUE
    * version for this purpose.
    */
-  public static final Version MAX_VERSION = new Version(Integer.toString(Integer.MAX_VALUE));
+  public static final Version MAX_VERSION =
+    new Version(_MAX_STRING, _MAX_STRING);
 }

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java?rev=1299866&r1=1299865&r2=1299866&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java Mon Mar 12 21:04:38 2012
@@ -63,13 +63,44 @@ public class VersionTest extends TestCas
     assertTrue("v10 > v9.*", v10.compareTo(v9x) > 0);
   }
   
-  public void testConcreteVersion()
+  public void testMinimumVersion()
   {
     Version v9 = new Version("9");
     Version v9x = new Version("9.*");
 
-    assertTrue("non-wildcard concrete version identity", v9.toConcreteVersion() == v9);
-    assertTrue("wildcard present", v9x.toString().contains("*"));
-    assertFalse("wildcard removed", v9x.toConcreteVersion().toString().contains("*"));
+    assertTrue("trailing wildcard removal", v9x.toMinimumVersion().equals(v9));
+
+    Version v900 = new Version("9.0.0");
+    Version v9x0 = new Version("9.*.0");
+
+    assertTrue("interior wildcard removal", v9x0.toMinimumVersion().equals(v900));
+    
+    Version v9padded = new Version("9", "*");
+    assertTrue("wildcard padding match", v9padded.compareTo(v900) == 0);
+    
+    Version v9paddedMin = v9padded.toMinimumVersion();
+    assertTrue("wildcard padding removed", v9paddedMin.compareTo(v900) != 0);
+    assertTrue("wildcard padding removed equality ", v9paddedMin.equals(v9));
+  }
+  
+  public void testMaximumVersion()
+  {
+    String intMax = Integer.toString(Integer.MAX_VALUE);
+  
+    Version v9max = new Version("9." + intMax, intMax);
+    Version v9x = new Version("9.*");
+
+    assertTrue("trailing wildcard removal", v9x.toMaximumVersion().equals(v9max));
+
+    Version v9max0 = new Version("9." + intMax + ".0", intMax);
+    Version v9x0 = new Version("9.*.0");
+
+    assertTrue("interior wildcard removal", v9x0.toMaximumVersion().equals(v9max0));
+    
+    Version v9padded = new Version("9", "*");
+    Version v9paddedMax = v9padded.toMaximumVersion();    
+    assertTrue("wildcard padding match", v9padded.compareTo(v9max0) == 0);
+    assertTrue("wildcard padding removed non-match", v9paddedMax.compareTo(v9max0) != 0);
+    assertTrue("wildcard padding removed equality ", v9paddedMax.equals(new Version("9", intMax)));
   }
 }

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/pom.xml?rev=1299866&r1=1299865&r2=1299866&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/pom.xml (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/pom.xml Mon Mar 12 21:04:38 2012
@@ -33,6 +33,10 @@
   <artifactId>trinidad-impl</artifactId>
   <packaging>jar</packaging>
 
+  <properties>
+    <jdev.project.has.tests>true</jdev.project.has.tests>
+  </properties>
+
   <dependencies>
 
     <dependency>

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java?rev=1299866&r1=1299865&r2=1299866&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java Mon Mar 12 21:04:38 2012
@@ -648,20 +648,17 @@ public final class AgentAtRuleMatcher
       Version start = Version.MIN_VERSION;
       Version end = Version.MAX_VERSION;
       
-      // doc: concrete version
-      Version version = _version.toConcreteVersion();
-      
       switch (_comparison)
       {
         case MIN:
-          start = version;
+          start = _version.toMinimumVersion();
           break;
         case MAX:
-          end = version;
+          end = _version.toMaximumVersion();
           break;
         case EQUALS:
-          start = version;
-          end = version;
+          start = _version.toMinimumVersion();;
+          end = _version.toMaximumVersion();;
           break;
       }
       

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java?rev=1299866&r1=1299865&r2=1299866&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java Mon Mar 12 21:04:38 2012
@@ -181,8 +181,8 @@ final class AgentVariantExtractor implem
       // Version's wildcard-sensitive natural ordering (ie.
       // a Set.add() might fail because a matching/wildcarded
       // version is already present.)
-      versions.add(versionRange.getStart().toConcreteVersion());
-      versions.add(versionRange.getEnd().toConcreteVersion());
+      versions.add(versionRange.getStart().toMinimumVersion());
+      versions.add(versionRange.getEnd().toMaximumVersion());
     }
   }
 
@@ -213,6 +213,7 @@ final class AgentVariantExtractor implem
   // Only extract version information for these applications.
   private final Collection<TrinidadAgent.Application> _supportedApplications;
 
+  // todo: doc
   private static final Version _UNKNOWN_VERSION = new Version("unknown");
   
 }

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java?rev=1299866&r1=1299865&r2=1299866&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java Mon Mar 12 21:04:38 2012
@@ -40,7 +40,7 @@ public final class ApplicationAndVersion
   public static final ApplicationAndVersion UNKNOWN = 
     new ApplicationAndVersion(
       TrinidadAgent.Application.UNKNOWN,
-      new Version("0"));
+      Version.MIN_VERSION);
   
   /**
    * Creates an AppplicationAndVersion instance for the
@@ -61,7 +61,9 @@ public final class ApplicationAndVersion
     assert(version != null);
 
     this.application = application;
-    this.version = version.toConcreteVersion();
+    
+    // Any concrete version will do, we'll go with the min.
+    this.version = version.toMinimumVersion();
   }
   
   @Override

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java?rev=1299866&r1=1299865&r2=1299866&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java Mon Mar 12 21:04:38 2012
@@ -550,15 +550,9 @@ public final class StableNameUtils
         builder.append(startVersion);
         builder.append("p");
       }
-      else if (startVersion.equals(endVersion))
-      {
-        builder.append(startVersion);
-      }
       else
       {
         builder.append(startVersion);
-        builder.append("x");
-        builder.append(endVersion);
       }
     }