AMP dependency checking on the tool side.

This is work in progress and the repo is not currently double checking the runtime dependencies.

To declare a dependency, add the following to your module.properties:
   module.depends.ABC=ABCfromVersion - ABCtoVersion
Wildcard * can be used in place of fromVersion or toVersion, as well as just a single version.
The most common usage will be:
   module.depends.ABC=1.0-*
i.e. this module depends on ABC version 1.0 or later being present.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5601 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2007-05-02 20:28:20 +00:00
parent a6531ab4de
commit 8307ba5ba9
9 changed files with 430 additions and 87 deletions

View File

@@ -24,9 +24,11 @@
*/
package org.alfresco.repo.module;
import java.util.List;
import java.util.Properties;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.service.cmr.module.ModuleDependency;
import org.alfresco.service.cmr.module.ModuleDetails;
import org.alfresco.service.cmr.module.ModuleInstallState;
import org.alfresco.util.VersionNumber;
@@ -53,6 +55,14 @@ public class ModuleDetailsImplTest extends TestCase
defaultProperties.setProperty(ModuleDetails.PROP_VERSION, "1.0.0");
defaultProperties.setProperty(ModuleDetails.PROP_REPO_VERSION_MIN, new VersionNumber("1.2").toString());
defaultProperties.setProperty(ModuleDetails.PROP_REPO_VERSION_MAX, new VersionNumber("1.4.3").toString());
defaultProperties.setProperty(ModuleDetails.PROP_DEPENDS_PREFIX + "a", "1.2.3");
defaultProperties.setProperty(ModuleDetails.PROP_DEPENDS_PREFIX + "b", "*");
defaultProperties.setProperty(ModuleDetails.PROP_DEPENDS_PREFIX + "c", "- 1.2");
defaultProperties.setProperty(ModuleDetails.PROP_DEPENDS_PREFIX + "d", "1.2 -");
defaultProperties.setProperty(ModuleDetails.PROP_DEPENDS_PREFIX + "e", "* - 1.2");
defaultProperties.setProperty(ModuleDetails.PROP_DEPENDS_PREFIX + "f", "1.2 - *");
defaultProperties.setProperty(ModuleDetails.PROP_DEPENDS_PREFIX + "g", "0.5, 0.6");
defaultProperties.setProperty(ModuleDetails.PROP_DEPENDS_PREFIX + "h", "0.5 - 0.6, 0.9 - *");
defaultProperties.setProperty(ModuleDetails.PROP_INSTALL_STATE, ModuleInstallState.INSTALLED.toString());
}
@@ -71,6 +81,29 @@ public class ModuleDetailsImplTest extends TestCase
assertEquals("The properties are different", defaultProperties, processedProperties);
}
public void testDependencyChecks()
{
ModuleDetails details = new ModuleDetailsImpl(defaultProperties);
Properties tempProperties = new Properties();
tempProperties.setProperty(ModuleDetails.PROP_ID, "a");
tempProperties.setProperty(ModuleDetails.PROP_TITLE, "A");
tempProperties.setProperty(ModuleDetails.PROP_DESCRIPTION, "A description");
tempProperties.setProperty(ModuleDetails.PROP_VERSION, "1.0.0");
ModuleDetails tempDetails = new ModuleDetailsImpl(tempProperties);
List<ModuleDependency> dependencies = details.getDependencies();
assertEquals("Incorrect number of dependencies", 8, dependencies.size());
for (ModuleDependency dependency : dependencies)
{
if (dependency.getDependencyId().equals(tempDetails.getId()))
{
// It should not match
assertFalse("No match expected", dependency.isValidDependency(tempDetails));
}
}
}
public void testTrimming() throws Exception
{
defaultProperties.setProperty(ModuleDetails.PROP_INSTALL_STATE, " ");