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:46 UTC

[myfaces-trinidad] 05/30: Checkpoint: concrete Version 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 9e5053806f42c3fb0e2559fa8fb93853539cb412
Author: Andy Schwartz <an...@apache.org>
AuthorDate: Mon Mar 12 21:04:38 2012 +0000

    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?)
---
 trinidad-api/pom.xml                               |  4 ++
 .../apache/myfaces/trinidad/context/Version.java   | 66 +++++++++++++++++-----
 .../myfaces/trinidad/context/VersionTest.java      | 39 +++++++++++--
 trinidad-impl/pom.xml                              |  4 ++
 .../trinidadinternal/skin/AgentAtRuleMatcher.java  | 11 ++--
 .../skin/pregen/variant/AgentVariantExtractor.java |  5 +-
 .../skin/pregen/variant/ApplicationAndVersion.java |  6 +-
 .../style/util/StableNameUtils.java                |  6 --
 8 files changed, 105 insertions(+), 36 deletions(-)

diff --git a/trinidad-api/pom.xml b/trinidad-api/pom.xml
index 3e81854..e90bc33 100644
--- a/trinidad-api/pom.xml
+++ b/trinidad-api/pom.xml
@@ -32,6 +32,10 @@
 
   <artifactId>trinidad-api</artifactId>
   <packaging>jar</packaging>
+
+  <properties>
+    <jdev.project.has.tests>true</jdev.project.has.tests>
+  </properties>
   
   <dependencies>
 
diff --git a/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java b/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java
index dd607f5..bb9defb 100644
--- a/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java
+++ b/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Version.java
@@ -135,30 +135,47 @@ public final class Version implements Comparable<Version>
     // 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 Comparable<Version>
     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 Comparable<Version>
       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 Comparable<Version>
   // 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 Comparable<Version>
    * 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);
 }
diff --git a/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java b/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java
index 22b9df4..fe15654 100644
--- a/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java
+++ b/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/VersionTest.java
@@ -63,13 +63,44 @@ public class VersionTest extends TestCase
     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)));
   }
 }
diff --git a/trinidad-impl/pom.xml b/trinidad-impl/pom.xml
index 3406407..426c3cb 100644
--- a/trinidad-impl/pom.xml
+++ b/trinidad-impl/pom.xml
@@ -33,6 +33,10 @@
   <artifactId>trinidad-impl</artifactId>
   <packaging>jar</packaging>
 
+  <properties>
+    <jdev.project.has.tests>true</jdev.project.has.tests>
+  </properties>
+
   <dependencies>
 
     <dependency>
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java
index 07e197e..f320021 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/AgentAtRuleMatcher.java
@@ -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;
       }
       
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java
index b601a4a..9943052 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/AgentVariantExtractor.java
@@ -181,8 +181,8 @@ final class AgentVariantExtractor implements SkinVariantExtractor<ApplicationAnd
       // 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 implements SkinVariantExtractor<ApplicationAnd
   // Only extract version information for these applications.
   private final Collection<TrinidadAgent.Application> _supportedApplications;
 
+  // todo: doc
   private static final Version _UNKNOWN_VERSION = new Version("unknown");
   
 }
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java
index d61cdf8..996ea59 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/variant/ApplicationAndVersion.java
@@ -40,7 +40,7 @@ public final class ApplicationAndVersion implements Comparable<ApplicationAndVer
   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 implements Comparable<ApplicationAndVer
     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
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java
index 68c99be..ed03c88 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/util/StableNameUtils.java
@@ -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);
       }
     }
 

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