Author: aheritier
Date: Thu Sep 15 06:46:37 2005
New Revision: 289231

URL: http://svn.apache.org/viewcvs?rev=289231&view=rev
Log:
remove the use of the jelly's tag util:replace with a string to keep the 
compatibility with maven 1.0

Modified:
    maven/maven-1/plugins/trunk/plugin/plugin.jelly
    maven/maven-1/plugins/trunk/plugin/xdocs/changes.xml
    maven/maven-1/plugins/trunk/plugin/xdocs/tags.xml

Modified: maven/maven-1/plugins/trunk/plugin/plugin.jelly
URL: 
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/plugin/plugin.jelly?rev=289231&r1=289230&r2=289231&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/plugin/plugin.jelly (original)
+++ maven/maven-1/plugins/trunk/plugin/plugin.jelly Thu Sep 15 06:46:37 2005
@@ -375,63 +375,99 @@
     <maven:param-check value="${groupId}" fail="true" message="'groupId' must 
be specified"/>
     <maven:param-check value="${artifactId}" fail="true" message="'artifactId' 
must be specified"/>
     <maven:param-check value="${minRelease}" fail="true" message="'minRelease' 
must be specified"/>
+    <maven:param-check value="${neededBy}" fail="true" message="'neededBy' 
must be specified"/>
     
     <j:set var="pluginToTest" value="${artifactId}"/>
-    <j:set var="minReleaseToHave" value="${minRelease}"/>
+
+    <!-- Remove SNAPSHOT -->
+    <j:choose>
+      <j:when test="${minRelease.endsWith('-SNAPSHOT')}">
+        <j:set var="minReleaseToHave" 
value="${minRelease.substring(0,minRelease.length()-9)}"/>
+      </j:when>
+      <j:otherwise>
+        <j:set var="minReleaseToHave" value="${minRelease}"/>
+      </j:otherwise>
+    </j:choose>
 
     <maven:get plugin="${pluginToTest}" property="plugin" 
var="installedPlugin" />
     <!-- Check if the plugin is installed -->
     <j:choose>
       <j:when test="${!empty(installedPlugin)}">
-        <j:set var="installedRelease" 
value="${installedPlugin.currentVersion}"/>
         <!-- Remove SNAPSHOT -->
-        <u:replace var="installedRelease" escapeText="true" old="-SNAPSHOT" 
new="">${installedRelease}</u:replace>
-        <u:replace var="minReleaseToHave" escapeText="true" old="-SNAPSHOT" 
new="">${minReleaseToHave}</u:replace>
-        <!-- Tokenify -->
-        <u:tokenize var="installedReleaseTokens" delim="." 
escapeText="true">${installedRelease}</u:tokenize>
-        <u:tokenize var="minReleaseToHaveTokens" delim="." 
escapeText="true">${minReleaseToHave}</u:tokenize>
-        <j:set var="minReleaseToHaveTokensIter" 
value="${minReleaseToHaveTokens.iterator()}"/>
-        
-        <j:forEach var="numberInstalled" items="${installedReleaseTokens}">
-          <j:if test="${!minReleaseToHaveTokens.iterator().hasNext()}">
-            <j:set var="testFailed" value="true"/>
-            <j:break/>
-          </j:if>
-          <j:set var="numberToHave" 
value="${minReleaseToHaveTokensIter.next()}"/>
-          <j:invokeStatic  var="numberInstalledInteger" 
className="java.lang.Integer" method="valueOf">
-            <j:arg value="${numberInstalled}"/>
-          </j:invokeStatic>
-          <j:invokeStatic  var="numberToHaveInteger" 
className="java.lang.Integer" method="valueOf">
-            <j:arg value="${numberToHave}"/>
-          </j:invokeStatic>
-          <j:choose>
-              <j:when 
test="${numberInstalledInteger.compareTo(numberToHaveInteger) lt 0}">
-                <!--<echo>${numberInstalledInteger} is less than 
${numberToHaveInteger}</echo>-->
+        <j:choose>
+          <j:when 
test="${installedPlugin.currentVersion.endsWith('-SNAPSHOT')}">
+            <j:set var="installedRelease" 
value="${installedPlugin.currentVersion.substring(0,installedPlugin.currentVersion.length()-9)}"/>
+          </j:when>
+          <j:otherwise>
+            <j:set var="installedRelease" 
value="${installedPlugin.currentVersion}"/>
+          </j:otherwise>
+        </j:choose>
+
+        <j:set var="testOk" value="false"/>
+        <j:set var="testFailed" value="false"/>
+
+        <!-- Test strings comparaison -->
+        <j:choose>
+          <j:when test="${!installedRelease.equals(minReleaseToHave)}">
+            <!-- If not equals we use a more complex algorithm -->
+            
+            <!-- Tokenify -->
+            <u:tokenize var="installedReleaseTokens" delim="." 
escapeText="true">${installedRelease}</u:tokenize>
+            <u:tokenize var="minReleaseToHaveTokens" delim="." 
escapeText="true">${minReleaseToHave}</u:tokenize>
+            <j:set var="minReleaseToHaveTokensIter" 
value="${minReleaseToHaveTokens.iterator()}"/>
+            
+            <j:forEach var="numberInstalled" items="${installedReleaseTokens}">
+              <j:if test="${!minReleaseToHaveTokens.iterator().hasNext()}">
                 <j:set var="testFailed" value="true"/>
                 <j:break/>
-              </j:when>
-              <j:when 
test="${numberInstalledInteger.compareTo(numberToHaveInteger) eq 0}">
-              <!--<echo>${numberInstalledInteger} is equal than 
${numberToHaveInteger}</echo>-->
-              </j:when>
-              <j:when 
test="${numberInstalledInteger.compareTo(numberToHaveInteger) gt 0}">
-              <!--<echo>${numberInstalledInteger} is greater than 
${numberToHaveInteger}</echo>-->
-                <j:break/>
-              </j:when>              
-          </j:choose>
-        </j:forEach> 
+              </j:if>
+              <j:set var="numberToHave" 
value="${minReleaseToHaveTokensIter.next()}"/>
+              <j:invokeStatic  var="numberInstalledInteger" 
className="java.lang.Integer" method="valueOf">
+                <j:arg value="${numberInstalled}"/>
+              </j:invokeStatic>
+              <j:invokeStatic  var="numberToHaveInteger" 
className="java.lang.Integer" method="valueOf">
+                <j:arg value="${numberToHave}"/>
+              </j:invokeStatic>
+              <j:choose>
+                  <j:when 
test="${numberInstalledInteger.compareTo(numberToHaveInteger) lt 0}">
+                    <j:set var="errorSentence" value="Actually the plugin 
${pluginToTest} v${installedRelease} is installed."/>
+                    <j:set var="testFailed" value="true"/>
+                    <j:break/>
+                  </j:when>
+                  <j:when 
test="${numberInstalledInteger.compareTo(numberToHaveInteger) eq 0}">
+                  </j:when>
+                  <j:when 
test="${numberInstalledInteger.compareTo(numberToHaveInteger) gt 0}">
+                    <j:set var="testOk" value="true"/>
+                    <j:break/>
+                  </j:when>              
+              </j:choose>
+            </j:forEach> 
+          </j:when>
+          <j:otherwise>
+            <j:set var="testOk" value="true"/>
+          </j:otherwise>
+        </j:choose>
       </j:when>
       <j:otherwise>
+        <j:set var="errorSentence" value="Actually the plugin ${pluginToTest} 
isn't installed."/>
         <j:set var="testFailed" value="true"/>
       </j:otherwise>    
     </j:choose>
 
+    <j:if test="${!testFailed and !testOk and 
minReleaseToHaveTokens.iterator().hasNext()}">
+      <!-- A minor release is missing. For example : 1.10 < 1.10.2 -->
+      <j:set var="errorSentence" value="Actually the plugin ${pluginToTest} 
v${installedRelease} is installed."/>
+      <j:set var="testFailed" value="true"/>    
+    </j:if>
+
     <j:if test="${testFailed}">
       <ant:fail>
-      -
-      
=======================================================================================
-      Must have ${pluginToTest} plugin v${minReleaseToHave} installed to use 
this version of the plugin.
-      Try: maven plugin:download -DgroupId=maven -DartifactId=${pluginToTest} 
-Dversion=${minReleaseToHave}
-      
=======================================================================================
+-
+===============================================================================
+Must have the plugin ${pluginToTest} v${minReleaseToHave} installed to use 
this version of ${neededBy}.
+${errorSentence}
+Try: maven plugin:download -DgroupId=maven -DartifactId=${pluginToTest} 
-Dversion=${minReleaseToHave}
+===============================================================================
       </ant:fail>
     </j:if>
   </define:tag>    

Modified: maven/maven-1/plugins/trunk/plugin/xdocs/changes.xml
URL: 
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/plugin/xdocs/changes.xml?rev=289231&r1=289230&r2=289231&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/plugin/xdocs/changes.xml (original)
+++ maven/maven-1/plugins/trunk/plugin/xdocs/changes.xml Thu Sep 15 06:46:37 
2005
@@ -24,7 +24,7 @@
   </properties>
   <body>
     <release version="1.7-SNAPSHOT" date="In SVN">
-      <action dev="aheritier" type="add">new plugin:available tag to check if 
a minimal release of a plugin is present. (for maven 1.1 only)</action>
+      <action dev="aheritier" type="add">new plugin:available tag to check if 
a minimal release of a plugin is present.</action>
     </release>
     <release version="1.6" date="2005-06-03">
       <action dev="vmassol" type="add">Added new

Modified: maven/maven-1/plugins/trunk/plugin/xdocs/tags.xml
URL: 
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/plugin/xdocs/tags.xml?rev=289231&r1=289230&r2=289231&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/plugin/xdocs/tags.xml (original)
+++ maven/maven-1/plugins/trunk/plugin/xdocs/tags.xml Thu Sep 15 06:46:37 2005
@@ -73,7 +73,6 @@
       </subsection>
       <subsection name='available Tag'>
         <p>Fails the build if the given plugin does not exist or hasn't the 
minimal release number. Otherwise no effect.</p>
-        <p><b>Works only with maven 1.1.</b></p>
         <table>
           <tr><th>Attribute</th><th>Optional?</th><th>Description</th></tr>
           <tr>
@@ -90,6 +89,11 @@
             <td>minRelease</td>
             <td>No</td>
             <td>The minimum plugin's release</td>
+          </tr>
+          <tr>
+            <td>neededBy</td>
+            <td>No</td>
+            <td>The name of the plugin or project using this tag. It is used 
when the tag displays the error for the user.</td>
           </tr>
         </table>
       </subsection>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to