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