Author: taylor
Date: Wed Mar 16 22:53:47 2016
New Revision: 1735336

URL: http://svn.apache.org/viewvc?rev=1735336&view=rev
Log:
JS2-1354: Improve VersionedPortletApplicationManager to support dot (numeric) 
versions

Added:
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/NumericVersionTest.java
Modified:
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java
    
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java?rev=1735336&r1=1735335&r2=1735336&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java
 Wed Mar 16 22:53:47 2016
@@ -16,11 +16,6 @@
  */
 package org.apache.jetspeed.tools.pamanager;
 
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
 import org.apache.jetspeed.components.portletregistry.RegistryException;
 import org.apache.jetspeed.descriptor.JetspeedDescriptorService;
@@ -35,6 +30,11 @@ import org.apache.jetspeed.util.descript
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -57,7 +57,9 @@ import org.slf4j.LoggerFactory;
 public class VersionedPortletApplicationManager extends 
PortletApplicationManager
 {
     private static final Logger    log = LoggerFactory.getLogger("deployment");
-        
+
+    private Boolean useNumericVersions = true;
+
     public VersionedPortletApplicationManager(PortletFactory portletFactory, 
PortletRegistry registry,
             PermissionManager permissionManager, SearchEngine searchEngine,  
RoleManager roleManager,
             List<String> permissionRoles, /* node manager, */ String appRoot, 
JetspeedDescriptorService descriptorService)
@@ -66,7 +68,15 @@ public class VersionedPortletApplication
                 searchEngine, roleManager, permissionRoles, null, appRoot, 
descriptorService); 
                
     }
-    
+
+    public Boolean getUseNumericVersions() {
+        return useNumericVersions;
+    }
+
+    public void setUseNumericVersions(Boolean useNumericVersions) {
+        this.useNumericVersions = useNumericVersions;
+    }
+
     public boolean isStarted()
     {
         return started;
@@ -140,14 +150,14 @@ public class VersionedPortletApplication
                 {
                     System.out.println(" - New Version was NOT provided: 
registration not required ... " + contextName);                                 
      
                 }
-                else if (newVersion.compareTo(regVersion) > 0)
+                else if (compareVersions(newVersion, regVersion, 
useNumericVersions) > 0)
                 {
                     System.out.println(" - **** New Version is greater: 
registration required... " + contextName);
                     regPA = registerPortletApplication(paWar, regPA, paType, 
paClassLoader, silent);                    
                 }
                 else
                 {
-                    System.out.println(" - New Version is NOT greater: 
registration not required ... " + contextName);                    
+                    System.out.println(" - New Version is NOT greater: 
registration not required ... " + contextName);
                 }
             }
             if (portletFactory.isPortletApplicationRegistered(regPA))
@@ -182,4 +192,35 @@ public class VersionedPortletApplication
         }
         return version;
     }
+
+    public static int compareVersions(String newVersion, String regVersion, 
boolean useNumericVersions) throws NumberFormatException {
+        if (!useNumericVersions) {
+            return newVersion.compareTo(regVersion);
+        }
+        String[] v1 = newVersion.split("\\.");
+        String[] v2 = regVersion.split("\\.");
+
+        int ix = 0;
+        while(ix < v1.length || ix < v2.length){
+            if(ix < v1.length && ix < v2.length){
+                if(Integer.parseInt(v1[ix]) < Integer.parseInt(v2[ix])){
+                    return -1;
+                }else if(Integer.parseInt(v1[ix]) > Integer.parseInt(v2[ix])){
+                    return 1;
+                }
+            } else if(ix < v1.length){
+                if(Integer.parseInt(v1[ix]) != 0){
+                    return 1;
+                }
+            } else if(ix < v2.length){
+                if(Integer.parseInt(v2[ix]) != 0){
+                    return -1;
+                }
+            }
+
+            ix++;
+        }
+        return 0;
+    }
+
 }
\ No newline at end of file

Added: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/NumericVersionTest.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/NumericVersionTest.java?rev=1735336&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/NumericVersionTest.java
 (added)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/NumericVersionTest.java
 Wed Mar 16 22:53:47 2016
@@ -0,0 +1,32 @@
+package org.apache.jetspeed.tools.pamanager;
+
+import junit.framework.TestCase;
+
+public class NumericVersionTest extends TestCase {
+
+    public void testDotCompare() throws Exception {
+        assert(VersionedPortletApplicationManager.compareVersions("2.9.8", 
"2.10.0", true) == -1);
+        
assert(VersionedPortletApplicationManager.compareVersions("2.9.5.4.3.2.1", 
"2.9.5.4.3.2.1", true) == 0);
+        
assert(VersionedPortletApplicationManager.compareVersions("2.9.5.4.3.2.2", 
"2.9.5.4.3.2.1", true) == 1);
+        
assert(VersionedPortletApplicationManager.compareVersions("2.9.5.4.3.2.1", 
"2.9.5.4.3.2.2", true) == -1);
+        assert(VersionedPortletApplicationManager.compareVersions("2.9", 
"2.9.5", true) == -1);
+        assert(VersionedPortletApplicationManager.compareVersions("2.9.5", 
"2.9", true) == 1);
+        assert(VersionedPortletApplicationManager.compareVersions("2", "3", 
true) == -1);
+        assert(VersionedPortletApplicationManager.compareVersions("3", "2", 
true) == 1);
+        assert(VersionedPortletApplicationManager.compareVersions("3.4.3", 
"3.4.2", true) == 1);
+        assert(VersionedPortletApplicationManager.compareVersions("3.4.2", 
"3.4.3", true) == -1);
+
+        assert (VersionedPortletApplicationManager.compareVersions("a.b.c", 
"a.b.d", false) == -1);
+        assert (VersionedPortletApplicationManager.compareVersions("aaaa", 
"bbb", false) == -1);
+        assert (VersionedPortletApplicationManager.compareVersions("big", 
"Big", false) > 0);
+        boolean error = false;
+        try {
+            assert 
(VersionedPortletApplicationManager.compareVersions("a.b.c", "a.b.d", true) == 
-1);
+        }
+        catch (NumberFormatException e)  {
+            error = true;
+        }
+        assert(error);
+    }
+
+}

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml?rev=1735336&r1=1735335&r2=1735336&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml
 Wed Mar 16 22:53:47 2016
@@ -66,6 +66,11 @@
          locking by setting value to "false":
       <property name="lockRegistryAccess"><value>false</value></property>
     -->
+    <!-- optional use numeric version numbers such as 2.9.0.11. Do not allow 
numbers
+         this feature is enabled by default. To use lexical comparisions, set 
this property to false
+      <property name="useNumericVersions" value="false" />
+    -->
+
   </bean>
 
 </beans>



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscr...@portals.apache.org
For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org

Reply via email to