Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)

84969: Merged PLATFORM1 (5.0/Cloud) to HEAD-BUG-FIX (5.0/Cloud)
      83756: ACE-2269	 - Allow AMPs to include literals in version number (e.g. -SNAPSHOT)


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@85284 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mark Rogers
2014-09-20 09:56:48 +00:00
parent 57da7bc775
commit 6bba4fe0e8
14 changed files with 458 additions and 77 deletions

View File

@@ -25,6 +25,7 @@ import java.util.List;
import java.util.Map;
import org.alfresco.repo.admin.registry.RegistryService;
import org.alfresco.repo.module.tool.ModuleManagementToolException;
import org.alfresco.repo.tenant.TenantAdminService;
import org.alfresco.service.cmr.module.ModuleDetails;
import org.alfresco.service.cmr.module.ModuleService;
@@ -134,7 +135,7 @@ public class ModuleComponentHelperTest extends BaseAlfrescoTestCase
// See that it all starts OK
}
private void startComponents(VersionNumber moduleVersion)
private void startComponents(ModuleVersionNumber moduleVersion)
{
int expectedCount = (Integer) EXECUTION_COUNT_BY_VERSION.get(moduleVersion);
// Set the current version number for all modules
@@ -149,7 +150,7 @@ public class ModuleComponentHelperTest extends BaseAlfrescoTestCase
// tenantCount = tenantDeployerService.getTenants(true).size();
// }
// // Check
// assertEquals(
// assertEquals(ModuleVersionNumber
// "Incorrent number of executions (version " + moduleVersion + ")",
// expectedCount + (expectedCount * tenantCount),
// executed);
@@ -159,48 +160,68 @@ public class ModuleComponentHelperTest extends BaseAlfrescoTestCase
public void testStartComponentsV00()
{
VersionNumber moduleVersion = new VersionNumber("0.0");
ModuleVersionNumber moduleVersion = new ModuleVersionNumber("0.0");
startComponents(moduleVersion);
}
public void testStartComponentsV05()
{
VersionNumber moduleVersion = new VersionNumber("0.5");
ModuleVersionNumber moduleVersion = new ModuleVersionNumber("0.5");
startComponents(moduleVersion);
}
public void testStartComponentsV10()
{
VersionNumber moduleVersion = new VersionNumber("1.0");
ModuleVersionNumber moduleVersion = new ModuleVersionNumber("1.0");
startComponents(moduleVersion);
}
public void testStartComponentsV15()
{
VersionNumber moduleVersion = new VersionNumber("1.5");
ModuleVersionNumber moduleVersion = new ModuleVersionNumber("1.5");
startComponents(moduleVersion);
}
public void testStartComponentsV30()
{
VersionNumber moduleVersion = new VersionNumber("3.0");
ModuleVersionNumber moduleVersion = new ModuleVersionNumber("3.0");
startComponents(moduleVersion);
}
public void testStartComponentsV35()
{
VersionNumber moduleVersion = new VersionNumber("3.5");
ModuleVersionNumber moduleVersion = new ModuleVersionNumber("3.5");
startComponents(moduleVersion);
}
public void testgetModuleVersionNumber() {
ModuleVersionNumber moduleVersion = new ModuleVersionNumber("3.5");
VersionNumber versNumber = new VersionNumber("3.5");
assertEquals(moduleVersion, helper.getModuleVersionNumber(moduleVersion));
assertEquals(moduleVersion, helper.getModuleVersionNumber(versNumber));
try {
helper.getModuleVersionNumber(null);
assertTrue(false); //should never get here
} catch (ModuleManagementToolException e) {
//should get here
}
try {
helper.getModuleVersionNumber("any object");
assertTrue(false); //should never get here
} catch (ModuleManagementToolException e) {
//should get here
}
assertTrue(true);
}
/**
* Helper bean to simulate module presences under controlled conditions.
*/
private class DummyModuleService implements ModuleService
{
private VersionNumber currentVersion;
private ModuleVersionNumber currentVersion;
/** Set the current version of all the modules */
public void setCurrentVersion(VersionNumber currentVersion)
public void setCurrentVersion(ModuleVersionNumber currentVersion)
{
this.currentVersion = currentVersion;
}

View File

@@ -0,0 +1,224 @@
package org.alfresco.repo.module;
/*
* Copyright (C) 2005-2014 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import junit.framework.TestCase;
/**
* I took the existing @see VersionNumberTest class and added some
* additional tests for ModuleVersionNumber.
*
* @author Gethin James
*/
public class ModuleVersionNumberTest extends TestCase
{
public void testCreate()
{
ModuleVersionNumber version0 = ModuleVersionNumber.VERSION_ZERO;
assertNotNull(version0);
ModuleVersionNumber versionBig = ModuleVersionNumber.VERSION_BIG;
assertNotNull(versionBig);
ModuleVersionNumber version1 = new ModuleVersionNumber("1");
assertNotNull(version1);
ModuleVersionNumber version2 = new ModuleVersionNumber("1.2");
assertNotNull(version2);
ModuleVersionNumber version3 = new ModuleVersionNumber("1.2.3");
assertNotNull(version3);
ModuleVersionNumber versiona = new ModuleVersionNumber("1.2.3a");
assertNotNull(versiona);
ModuleVersionNumber versionSnap = new ModuleVersionNumber("1.2.3-SNAPSHOT");
assertNotNull(versionSnap);
ModuleVersionNumber versionFinal = new ModuleVersionNumber("1.2.3-final");
assertNotNull(versionFinal);
ModuleVersionNumber versionMixed = new ModuleVersionNumber("0.1-incubating-unreleased");
assertNotNull(versionMixed);
versionMixed = new ModuleVersionNumber("3.2.6-alfresco-patched");
assertNotNull(versionMixed);
versionMixed = new ModuleVersionNumber("0.2-20120518");
assertNotNull(versionMixed);
ModuleVersionNumber version1s = new ModuleVersionNumber("4.2.0-SNAPSHOT");
assertNotNull(version1s);
ModuleVersionNumber version4c = new ModuleVersionNumber("4.2.0-C");
assertNotNull(version4c);
ModuleVersionNumber version16 = new ModuleVersionNumber("4.0.1.16");
assertNotNull(version16);
ModuleVersionNumber versionn1 = new ModuleVersionNumber("4.0.16.1.7");
assertNotNull(versionn1);
ModuleVersionNumber versionn2 = new ModuleVersionNumber("4.0.1.2.8.9");
assertNotNull(versionn2);
ModuleVersionNumber versionc = new ModuleVersionNumber("4.2.c");
assertNotNull(versionc);
ModuleVersionNumber versionb = new ModuleVersionNumber("1.0.b");
assertNotNull(versionb);
ModuleVersionNumber versionsnap = new ModuleVersionNumber("1.0-SNAPSHOT");
assertNotNull(versionsnap);
}
public void testEquals()
{
ModuleVersionNumber version0 = new ModuleVersionNumber("1");
ModuleVersionNumber version1 = new ModuleVersionNumber("1.2");
ModuleVersionNumber version2 = new ModuleVersionNumber("1.2");
ModuleVersionNumber version3 = new ModuleVersionNumber("1.2.3");
ModuleVersionNumber version4 = new ModuleVersionNumber("1.2.3");
ModuleVersionNumber version5 = new ModuleVersionNumber("1.3.3");
ModuleVersionNumber version6 = new ModuleVersionNumber("1.0");
ModuleVersionNumber versiona = new ModuleVersionNumber("1.0.a");
ModuleVersionNumber versionb = new ModuleVersionNumber("1.0.b");
ModuleVersionNumber versionsnap = new ModuleVersionNumber("1.0-SNAPSHOT");
assertFalse(version0.equals(version1));
assertTrue(version1.equals(version2));
assertFalse(version2.equals(version3));
assertTrue(version3.equals(version4));
assertFalse(version4.equals(version5));
assertTrue(version0.equals(version6));
assertFalse(versiona.equals(version0));
assertFalse(versiona.equals(versionb));
assertFalse(versionsnap.equals(version6));
assertFalse(versionsnap.equals(versiona));
assertFalse(versionsnap.equals(versionb));
}
public void testCompare()
{
ModuleVersionNumber version0 = new ModuleVersionNumber("1");
ModuleVersionNumber version1 = new ModuleVersionNumber("1.2");
ModuleVersionNumber version2 = new ModuleVersionNumber("1.2");
ModuleVersionNumber version3 = new ModuleVersionNumber("1.2.3");
ModuleVersionNumber version4 = new ModuleVersionNumber("1.11");
ModuleVersionNumber version5 = new ModuleVersionNumber("1.3.3");
ModuleVersionNumber version6 = new ModuleVersionNumber("2.0");
ModuleVersionNumber version7 = new ModuleVersionNumber("2.0.1");
ModuleVersionNumber version8 = new ModuleVersionNumber("10.0");
ModuleVersionNumber version9 = new ModuleVersionNumber("10.3");
ModuleVersionNumber version10 = new ModuleVersionNumber("11.1");
assertEquals(-1, version0.compareTo(version1));
assertEquals(1, version1.compareTo(version0));
assertEquals(0, version1.compareTo(version2));
assertEquals(-1, version2.compareTo(version3));
assertEquals(-1, version2.compareTo(version4));
assertEquals(-1, version3.compareTo(version5));
assertEquals(1, version6.compareTo(version5));
assertEquals(-1, version6.compareTo(version7));
assertEquals(-1, version1.compareTo(version8));
assertEquals(-1, version8.compareTo(version9));
assertEquals(-1, version9.compareTo(version10));
ModuleVersionNumber version1point4 = new ModuleVersionNumber("1.4");
ModuleVersionNumber version1point4a = new ModuleVersionNumber("1.4.a");
ModuleVersionNumber version1point4b = new ModuleVersionNumber("1.4.b");
ModuleVersionNumber version1point4c = new ModuleVersionNumber("1.4.c");
ModuleVersionNumber version1point4d = new ModuleVersionNumber("1.4.d");
ModuleVersionNumber version1point4snapshot = new ModuleVersionNumber("1.4-SNAPSHOT");
ModuleVersionNumber version1point40 = new ModuleVersionNumber("1.4.0");
assertEquals(1, ModuleVersionNumber.VERSION_BIG.compareTo(version1));
assertEquals(1, ModuleVersionNumber.VERSION_BIG.compareTo(version0));
assertEquals(1, ModuleVersionNumber.VERSION_BIG.compareTo(version8));
assertEquals(1, ModuleVersionNumber.VERSION_BIG.compareTo(version1point4b));
assertEquals(1, ModuleVersionNumber.VERSION_BIG.compareTo(version1point4snapshot));
assertEquals(0, version1point4.compareTo(new ModuleVersionNumber("1.4")));
assertTrue(version1point4.compareTo(version1point4a) < 1);
assertTrue(version1point4.compareTo(version1point4snapshot) > 0);
assertTrue(version1point4b.compareTo(version1point4a) > 0);
assertTrue(version1point4b.compareTo(version1point4snapshot) > 0);
assertTrue(version1point4c.compareTo(version1point4b) > 0);
assertTrue(version1point4c.compareTo(version1point4d) < 0);
assertTrue(version1point4d.compareTo(version1point4c) > 0);
assertTrue(version1point40.compareTo(version1point4) == 0);// the same
ModuleVersionNumber versionBase = new ModuleVersionNumber("0.1");
ModuleVersionNumber versionMixed = new ModuleVersionNumber("0.1-incubating-unreleased");
assertTrue(versionMixed.compareTo(versionBase) > 0);
versionBase = new ModuleVersionNumber("3.2.6");
versionMixed = new ModuleVersionNumber("3.2.6-alfresco-patched");
assertTrue(versionMixed.compareTo(versionBase) > 0);
versionBase = new ModuleVersionNumber("0.2");
versionMixed = new ModuleVersionNumber("0.2-20120518");
assertTrue(versionMixed.compareTo(versionBase) > 0);
}
public void testSerialize() throws IOException, ClassNotFoundException
{
ModuleVersionNumber version0Before = new ModuleVersionNumber("1");
ModuleVersionNumber version6Before = new ModuleVersionNumber("1.0");
ModuleVersionNumber versionaBefore = new ModuleVersionNumber("1.0.a");
ModuleVersionNumber versionbBefore = new ModuleVersionNumber("1.0.b");
ModuleVersionNumber versionsnapBefore = new ModuleVersionNumber("1.0-SNAPSHOT");
//read and write versions then check they are the same.
ModuleVersionNumber version0 = writeAndRead(version0Before);
ModuleVersionNumber version6 = writeAndRead(version6Before);
ModuleVersionNumber versiona = writeAndRead(versionaBefore);
ModuleVersionNumber versionb = writeAndRead(versionbBefore);
ModuleVersionNumber versionsnap = writeAndRead(versionsnapBefore);
assertTrue(version0.equals(version0Before));
assertTrue(version6.equals(version6Before));
assertTrue(versiona.equals(versionaBefore));
assertTrue(versionb.equals(versionbBefore));
assertTrue(versionsnap.equals(versionsnapBefore));
assertTrue(version0.equals(version6));
assertFalse(versiona.equals(version0));
assertFalse(versiona.equals(versionb));
assertFalse(versionsnap.equals(version6));
assertFalse(versionsnap.equals(versiona));
assertFalse(versionsnap.equals(versionb));
}
private ModuleVersionNumber writeAndRead(ModuleVersionNumber versionNumber) throws IOException, ClassNotFoundException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(versionNumber);
oos.flush();
oos.close();
ObjectInputStream objectInputStream = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
return (ModuleVersionNumber) objectInputStream.readObject();
}
}

View File

@@ -6,7 +6,6 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -14,6 +13,7 @@ import java.io.OutputStream;
import java.util.Properties;
import org.alfresco.repo.module.ModuleDetailsImpl;
import org.alfresco.repo.module.ModuleVersionNumber;
import org.alfresco.service.cmr.module.ModuleDetails;
import org.alfresco.util.TempFileProvider;
import org.alfresco.util.VersionNumber;
@@ -23,7 +23,6 @@ import org.springframework.util.FileCopyUtils;
import de.schlichtherle.truezip.file.TArchiveDetector;
import de.schlichtherle.truezip.file.TConfig;
import de.schlichtherle.truezip.file.TFile;
import de.schlichtherle.truezip.file.TFileInputStream;
import de.schlichtherle.truezip.fs.archive.zip.ZipDriver;
import de.schlichtherle.truezip.socket.sl.IOPoolLocator;
@@ -76,7 +75,7 @@ public class WarHelperImplTest extends WarHelperImpl
{
TFile theWar = getFile(".war", "module/test.war"); //Version 4.1.0
ModuleDetails installingModuleDetails = new ModuleDetailsImpl("test_it", new VersionNumber("9999"), "Test Mod", "Testing module");
ModuleDetails installingModuleDetails = new ModuleDetailsImpl("test_it", new ModuleVersionNumber("9999"), "Test Mod", "Testing module");
installingModuleDetails.setRepoVersionMin(new VersionNumber("10.1"));
try
{
@@ -131,7 +130,7 @@ public class WarHelperImplTest extends WarHelperImpl
{
//Now check the compatible versions using the manifest
TFile theWar = getFile(".war", "module/share-3.4.11.war");
ModuleDetails installingModuleDetails = new ModuleDetailsImpl("test_it", new VersionNumber("9999"), "Test Mod", "Testing module");
ModuleDetails installingModuleDetails = new ModuleDetailsImpl("test_it", new ModuleVersionNumber("9999"), "Test Mod", "Testing module");
installingModuleDetails.setRepoVersionMin(new VersionNumber("10.1"));
try
{
@@ -181,7 +180,7 @@ public class WarHelperImplTest extends WarHelperImpl
}
theWar = getFile(".war", "module/share-4.2.a.war");
installingModuleDetails = new ModuleDetailsImpl("test_it", new VersionNumber("9999"), "Test Mod", "Testing module");
installingModuleDetails = new ModuleDetailsImpl("test_it", new ModuleVersionNumber("9999"), "Test Mod", "Testing module");
installingModuleDetails.setRepoVersionMin(new VersionNumber("101.1"));
//this should fail BUT we are using a non-numeric version number so instead it passes without validation
this.checkCompatibleVersionUsingManifest(theWar, installingModuleDetails);
@@ -312,7 +311,7 @@ public class WarHelperImplTest extends WarHelperImpl
{
TFile theWar = getFile(".war", "module/empty.war");
ModuleDetails installingModuleDetails = new ModuleDetailsImpl("test_it", new VersionNumber("9999"), "Test Mod", "Testing module");
ModuleDetails installingModuleDetails = new ModuleDetailsImpl("test_it", new ModuleVersionNumber("9999"), "Test Mod", "Testing module");
installingModuleDetails.setRepoVersionMin(new VersionNumber("10.1"));
this.checkCompatibleVersion(theWar, installingModuleDetails); //does not throw exception
this.checkCompatibleEdition(theWar, installingModuleDetails); //does not throw exception