From 05d2cd1b288a12949d82e5d019eea84a5d76572f Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Mon, 29 Jan 2007 14:02:14 +0000 Subject: [PATCH] Merged DEV\EXTENSIONS to HEAD svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/DEV/EXTENSIONS@4832 svn://svn.alfresco.com:3691/alfresco/BRANCHES/DEV/EXTENSIONS@4833 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/DEV/EXTENSIONS@4862 svn://svn.alfresco.com:3691/alfresco/BRANCHES/DEV/EXTENSIONS@4863 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/DEV/EXTENSIONS@4866 svn://svn.alfresco.com:3691/alfresco/BRANCHES/DEV/EXTENSIONS@4867 . svn rm --force root\projects\repository\source\java\org\alfresco\repo\extension svn rm --force root\projects\repository\source\java\org\alfresco\service\cmr\extension git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4954 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/application-context.xml | 4 + .../repo/module/ModuleManagementTool.java | 430 ++++++++++++++++++ .../module/ModuleManagementToolException.java | 52 +++ .../repo/module/ModuleManagementToolTest.java | 108 +++++ .../module/default-file-mapping.properties | 8 + .../service/cmr/module/ModuleDetails.java | 60 +++ .../service/cmr/module/ModuleService.java | 32 ++ source/test-resources/module/test.amp | Bin 0 -> 58458 bytes source/test-resources/module/test.war | Bin 0 -> 8498 bytes 9 files changed, 694 insertions(+) create mode 100644 source/java/org/alfresco/repo/module/ModuleManagementTool.java create mode 100644 source/java/org/alfresco/repo/module/ModuleManagementToolException.java create mode 100644 source/java/org/alfresco/repo/module/ModuleManagementToolTest.java create mode 100644 source/java/org/alfresco/repo/module/default-file-mapping.properties create mode 100644 source/java/org/alfresco/service/cmr/module/ModuleDetails.java create mode 100644 source/java/org/alfresco/service/cmr/module/ModuleService.java create mode 100644 source/test-resources/module/test.amp create mode 100644 source/test-resources/module/test.war diff --git a/config/alfresco/application-context.xml b/config/alfresco/application-context.xml index b4377cf42e..5ca124e1c2 100644 --- a/config/alfresco/application-context.xml +++ b/config/alfresco/application-context.xml @@ -43,5 +43,9 @@ --> + + + + diff --git a/source/java/org/alfresco/repo/module/ModuleManagementTool.java b/source/java/org/alfresco/repo/module/ModuleManagementTool.java new file mode 100644 index 0000000000..c1d8134330 --- /dev/null +++ b/source/java/org/alfresco/repo/module/ModuleManagementTool.java @@ -0,0 +1,430 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.repo.module; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +import org.alfresco.error.AlfrescoRuntimeException; +import org.alfresco.util.VersionNumber; +import org.apache.log4j.Logger; + +import de.schlichtherle.io.DefaultRaesZipDetector; +import de.schlichtherle.io.File; +import de.schlichtherle.io.FileInputStream; +import de.schlichtherle.io.FileOutputStream; +import de.schlichtherle.io.ZipControllerException; +import de.schlichtherle.io.ZipDetector; +import de.schlichtherle.io.ZipWarningException; + +/** + * @author Roy Wetherall + */ +public class ModuleManagementTool +{ + public static Logger logger = Logger.getLogger("org.alfresco.repo.extension.ModuleManagementTool"); + + private static final String DEFAULT_FILE_MAPPING_PROPERTIES = "org/alfresco/repo/module/default-file-mapping.properties"; + private static final String MODULE_DIR = "/WEB-INF/classes/alfresco/module"; + + private static final String DELIMITER = ":"; + + private static final String PROP_ID = "module.id"; + private static final String PROP_TITLE = "module.title"; + private static final String PROP_DESCRIPTION = "module.description"; + private static final String PROP_VERSION = "module.version"; + + private static final String MOD_ADD_FILE = "add"; + private static final String MOD_UPDATE_FILE = "update"; + private static final String MOD_MK_DIR = "mkdir"; + + private static final String OP_INSTALL = "install"; + + private ZipDetector defaultDetector; + + private Properties fileMappingProperties; + + private boolean verbose = false; + + public ModuleManagementTool() + { + // Create the default zip detector + this.defaultDetector = new DefaultRaesZipDetector("amp|war"); + + // Load the default file mapping properties + this.fileMappingProperties = new Properties(); + InputStream is = this.getClass().getClassLoader().getResourceAsStream(DEFAULT_FILE_MAPPING_PROPERTIES); + try + { + this.fileMappingProperties.load(is); + } + catch (IOException exception) + { + throw new ModuleManagementToolException("Unable to load default extension file mapping properties.", exception); + } + } + + public boolean isVerbose() + { + return verbose; + } + + public void setVerbose(boolean verbose) + { + this.verbose = verbose; + } + + public void installModule(String ampFileLocation, String warFileLocation) + { + try + { + // Load the extension properties + File installingPropertiesFile = new File(ampFileLocation + "/module.properties", this.defaultDetector); + if (installingPropertiesFile.exists() == false) + { + throw new ModuleManagementToolException("Extension properties are not present in the AMP. Check that a valid module.properties file is present."); + } + Properties installingProperties = new Properties(); + installingProperties.load(new FileInputStream(installingPropertiesFile)); + + // Get the intalling extension version + String installingVersionString = installingProperties.getProperty(PROP_VERSION); + if (installingVersionString == null || installingVersionString.length() == 0) + { + throw new ModuleManagementToolException("The version number has not been specified in the module properties found in the AMP."); + } + VersionNumber installingVersion = new VersionNumber(installingVersionString); + + // Get the installed directory + File installDir = getInstalledDir(warFileLocation); + + // Look for a previously installed version of this extension + File installedExtensionPropertiesFile = new File(installDir.getPath() + "/" + getModuleDetailsFileName(installingProperties.getProperty(PROP_ID)), this.defaultDetector); + if (installedExtensionPropertiesFile.exists() == true) + { + Properties installedExtensionProperties = new Properties(); + InputStream is = new FileInputStream(installedExtensionPropertiesFile); + installedExtensionProperties.load(is); + + // Get the installed version + VersionNumber installedVersion = new VersionNumber(installedExtensionProperties.getProperty(PROP_VERSION)); + int compareValue = installedVersion.compareTo(installingVersion); + if (compareValue == -1) + { + // Trying to update the extension, old files need to cleaned before we proceed + cleanWAR(warFileLocation, installedExtensionProperties); + } + else if (compareValue == 0) + { + // Trying to install the same extension version again + verboseMessage("WARNING: This version of this module is already installed in the WAR"); + throw new ModuleManagementToolException("This version of this module is alreay installed. Use the 'force' parameter if you want to overwrite the current installation."); + } + else if (compareValue == 1) + { + // Trying to install an earlier version of the extension + verboseMessage("WARNING: A later version of this module is already installed in the WAR"); + throw new ModuleManagementToolException("An earlier version of this module is already installed. You must first unistall the current version before installing this version of the module."); + } + + } + + // TODO check for any additional file mapping propeties supplied in the AEP file + + // Copy the files from the AEP file into the WAR file + Map modifications = new HashMap(50); + for (Map.Entry entry : this.fileMappingProperties.entrySet()) + { + modifications.putAll(copyToWar(ampFileLocation, warFileLocation, (String)entry.getKey(), (String)entry.getValue())); + } + + // Copy the properties file into the war + if (installedExtensionPropertiesFile.exists() == false) + { + installedExtensionPropertiesFile.createNewFile(); + } + InputStream is = new FileInputStream(installingPropertiesFile); + try + { + installedExtensionPropertiesFile.catFrom(is); + } + finally + { + is.close(); + } + + // Create and add the modifications file to the war + writeModificationToFile(installDir.getPath() + "/" + getModuleModificationFileName(installingProperties.getProperty(PROP_ID)), modifications); + + // Update the zip file's + File.update(); + } + catch (ZipWarningException ignore) + { + // Only instances of the class ZipWarningException exist in the chain of + // exceptions. We choose to ignore this. + } + catch (ZipControllerException exception) + { + // At least one exception occured which is not just a ZipWarningException. + // This is a severe situation that needs to be handled. + throw new ModuleManagementToolException("A Zip error was encountered during deployment of the AEP into the WAR", exception); + } + catch (IOException exception) + { + throw new ModuleManagementToolException("An IO error was encountered during deployment of the AEP into the WAR", exception); + } + } + + private void cleanWAR(String warFileLocation, Properties installedExtensionProperties) + { + // Get the currently installed modifications + Map modifications = readModificationsFromFile(warFileLocation + "/" + getModuleModificationFileName(installedExtensionProperties.getProperty(PROP_ID))); + + for (Map.Entry modification : modifications.entrySet()) + { + String modType = modification.getValue(); + if (MOD_ADD_FILE.equals(modType) == true) + { + // Remove file + } + else if (MOD_UPDATE_FILE.equals(modType) == true) + { + // Remove file + // Replace with back-up + } + else if (MOD_MK_DIR.equals(modType) == true) + { + // Add to list of dir's to remove at the end + } + } + } + + private Map copyToWar(String aepFileLocation, String warFileLocation, String sourceDir, String destinationDir) + throws IOException + { + Map result = new HashMap(10); + + String sourceLocation = aepFileLocation + sourceDir; + File aepConfig = new File(sourceLocation, this.defaultDetector); + + for (java.io.File sourceChild : aepConfig.listFiles()) + { + String destinationFileLocation = warFileLocation + destinationDir + "/" + sourceChild.getName(); + File destinationChild = new File(destinationFileLocation, this.defaultDetector); + if (sourceChild.isFile() == true) + { + boolean createFile = false; + if (destinationChild.exists() == false) + { + destinationChild.createNewFile(); + createFile = true; + } + FileInputStream fis = new FileInputStream(sourceChild); + try + { + destinationChild.catFrom(fis); + } + finally + { + fis.close(); + } + + if (createFile == true) + { + result.put(destinationDir + "/" + sourceChild.getName(), MOD_ADD_FILE); + this.verboseMessage("File added: " + destinationDir + "/" + sourceChild.getName()); + } + else + { + result.put(destinationDir + "/" + sourceChild.getName(), MOD_UPDATE_FILE); + this.verboseMessage("File updated:" + destinationDir + "/" + sourceChild.getName()); + } + } + else + { + boolean mkdir = false; + if (destinationChild.exists() == false) + { + destinationChild.mkdir(); + mkdir = true; + } + + Map subResult = copyToWar(aepFileLocation, warFileLocation, sourceDir + "/" + sourceChild.getName(), + destinationDir + "/" + sourceChild.getName()); + result.putAll(subResult); + + if (mkdir == true) + { + result.put(destinationDir + "/" + sourceChild.getName(), MOD_MK_DIR); + this.verboseMessage("Directory added: " + destinationDir + "/" + sourceChild.getName()); + } + } + } + + return result; + } + + private File getInstalledDir(String warFileLocation) + { + // Check for the installed directory in the WAR file + File installedDir = new File(warFileLocation + MODULE_DIR, this.defaultDetector); + if (installedDir.exists() == false) + { + installedDir.mkdir(); + } + return installedDir; + } + + public void disableModule(String moduleId, String warLocation) + { + System.out.println("Currently unsupported ..."); + } + + public void enableModule(String moduleId, String warLocation) + { + System.out.println("Currently unsupported ..."); + } + + public void uninstallModule(String moduleId, String warLocation) + { + System.out.println("Currently unsupported ..."); + } + + public void listModules(String warLocation) + { + System.out.println("Currently unsupported ..."); + } + + private void verboseMessage(String message) + { + if (this.verbose == true) + { + System.out.println(message); + } + } + + private void writeModificationToFile(String fileLocation, Map modifications) + throws IOException + { + File file = new File(fileLocation, this.defaultDetector); + if (file.exists() == false) + { + file.createNewFile(); + } + FileOutputStream os = new FileOutputStream(file); + try + { + for (Map.Entry mod : modifications.entrySet()) + { + String output = mod.getValue() + DELIMITER + mod.getKey() + "\n"; + os.write(output.getBytes()); + } + } + finally + { + os.close(); + } + } + + private Map readModificationsFromFile(String fileLocation) + { + Map modifications = new HashMap(50); + + File file = new File(fileLocation, this.defaultDetector); + try + { + BufferedReader reader = new BufferedReader(new FileReader(file)); + try + { + String line = reader.readLine(); + while (line != null) + { + line = reader.readLine(); + String[] modification = line.split(DELIMITER); + modifications.put(modification[1], modification[0]); + } + } + finally + { + reader.close(); + } + } + catch(FileNotFoundException exception) + { + throw new ModuleManagementToolException("The module file install file '" + fileLocation + "' does not exist"); + } + catch(IOException exception) + { + throw new ModuleManagementToolException("Error whilst reading file '" + fileLocation); + } + + return modifications; + } + + private String getModuleDetailsFileName(String moduleId) + { + return "module-" + moduleId + ".install"; + } + + private String getModuleModificationFileName(String moduleId) + { + return "module-" + moduleId + "-modifications.install"; + } + + /** + * @param args + */ + public static void main(String[] args) + { + if (args.length >= 1) + { + ModuleManagementTool manager = new ModuleManagementTool(); + + String operation = args[0]; + if (operation.equals(OP_INSTALL) == true && args.length >= 3) + { + String aepFileLocation = args[1]; + String warFileLocation = args[2]; + + manager.installModule(aepFileLocation, warFileLocation); + } + else + { + outputUsage(); + } + } + else + { + outputUsage(); + } + } + + private static void outputUsage() + { + System.out.println("output useage ..."); + } + +} diff --git a/source/java/org/alfresco/repo/module/ModuleManagementToolException.java b/source/java/org/alfresco/repo/module/ModuleManagementToolException.java new file mode 100644 index 0000000000..59edd6b7cb --- /dev/null +++ b/source/java/org/alfresco/repo/module/ModuleManagementToolException.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.repo.module; + +import org.alfresco.error.AlfrescoRuntimeException; + +/** + * Module Management Tool Exception class + * + * @author Roy Wetherall + */ +public class ModuleManagementToolException extends AlfrescoRuntimeException +{ + /** + * Serial version UID + */ + private static final long serialVersionUID = -4329693103965834085L; + + public ModuleManagementToolException(String msgId) + { + super(msgId); + } + + public ModuleManagementToolException(String msgId, Object[] msgParams) + { + super(msgId, msgParams); + } + + public ModuleManagementToolException(String msgId, Object[] msgParams, Throwable cause) + { + super(msgId, msgParams, cause); + } + + public ModuleManagementToolException(String msgId, Throwable cause) + { + super(msgId, cause); + } +} diff --git a/source/java/org/alfresco/repo/module/ModuleManagementToolTest.java b/source/java/org/alfresco/repo/module/ModuleManagementToolTest.java new file mode 100644 index 0000000000..f942bfc6f5 --- /dev/null +++ b/source/java/org/alfresco/repo/module/ModuleManagementToolTest.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.repo.module; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import org.springframework.util.FileCopyUtils; + +import de.schlichtherle.io.DefaultRaesZipDetector; +import de.schlichtherle.io.FileOutputStream; +import de.schlichtherle.io.ZipDetector; + +/** + * @author Roy Wetherall + */ +public class ModuleManagementToolTest extends TestCase +{ + private ModuleManagementTool manager = new ModuleManagementTool(); + + ZipDetector defaultDetector = new DefaultRaesZipDetector("amp|war"); + + public void testBasicInstall() + throws Exception + { + manager.setVerbose(true); + + String warLocation = getFileLocation(".war", "module/test.war"); + String ampLocation = getFileLocation(".amp", "module/test.amp"); + + System.out.println(warLocation); + + // Initial install of module + this.manager.installModule(ampLocation, warLocation); + + // Check that the war has been modified correctly + List files = new ArrayList(10); + files.add("/WEB-INF/classes/alfresco/module/module-test.install"); + files.add("/WEB-INF/classes/alfresco/module/module-test-modifications.install"); + files.add("/WEB-INF/lib/test.jar"); + files.add("/WEB-INF/classes/alfresco/module/test/module-context.xml"); + files.add("/WEB-INF/classes/alfresco/module/test"); + files.add("/WEB-INF/licenses/license.txt"); + files.add("/scripts/test.js"); + files.add("/images/test.jpg"); + files.add("/jsp/test.jsp"); + files.add("/css/test.css"); + checkForFileExistance(warLocation, files); + + // Try and install same version + try + { + this.manager.installModule(ampLocation, warLocation); + fail("The module is already installed so an exception should have been raised since we are not forcing an overwite"); + } + catch(ModuleManagementToolException exception) + { + // Pass + } + + // Install a later version + // TODO + + // Try and install and earlier version + // TODO + + + } + + private String getFileLocation(String extension, String location) + throws IOException + { + File file = File.createTempFile("moduleManagementToolTest-", extension); + InputStream is = this.getClass().getClassLoader().getResourceAsStream(location); + OutputStream os = new FileOutputStream(file); + FileCopyUtils.copy(is, os); + return file.getPath(); + } + + private void checkForFileExistance(String warLocation, List files) + { + for (String file : files) + { + File file0 = new de.schlichtherle.io.File(warLocation + file, this.defaultDetector); + assertTrue("The file/dir " + file + " does not exist in the WAR.", file0.exists()); + } + } +} diff --git a/source/java/org/alfresco/repo/module/default-file-mapping.properties b/source/java/org/alfresco/repo/module/default-file-mapping.properties new file mode 100644 index 0000000000..785ecceb06 --- /dev/null +++ b/source/java/org/alfresco/repo/module/default-file-mapping.properties @@ -0,0 +1,8 @@ +# The default AEP => WAR file mappings +/config=/WEB-INF/classes +/lib=/WEB-INF/lib +/licenses=/WEB-INF/licenses +/web/jsp=/jsp +/web/css=/css +/web/images=/images +/web/scripts=/scripts \ No newline at end of file diff --git a/source/java/org/alfresco/service/cmr/module/ModuleDetails.java b/source/java/org/alfresco/service/cmr/module/ModuleDetails.java new file mode 100644 index 0000000000..363c55c8b0 --- /dev/null +++ b/source/java/org/alfresco/service/cmr/module/ModuleDetails.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.service.cmr.module; + +import org.alfresco.util.VersionNumber; + +/** + * Module details, contains the details of an installed alfresco + * module. + * + * @author Roy Wetherall + */ +public class ModuleDetails +{ + private String id; + private VersionNumber version; + private String title; + private String description; + + public ModuleDetails(String id, VersionNumber version, String title, String description) + { + this.id = id; + this.version = version; + this.title = title; + } + + public String getId() + { + return id; + } + + public VersionNumber getVersion() + { + return version; + } + + public String getTitle() + { + return title; + } + + public String getDescription() + { + return description; + } +} diff --git a/source/java/org/alfresco/service/cmr/module/ModuleService.java b/source/java/org/alfresco/service/cmr/module/ModuleService.java new file mode 100644 index 0000000000..c7d3b177dc --- /dev/null +++ b/source/java/org/alfresco/service/cmr/module/ModuleService.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.service.cmr.module; + +import java.util.List; + +/** + * Module service. Provides information about the currently installed alfresco + * modules. + * + * @author Roy Wetherall + */ +public interface ModuleService +{ + public ModuleDetails getModule(String moduleId); + + public List getAllModules(); +} diff --git a/source/test-resources/module/test.amp b/source/test-resources/module/test.amp new file mode 100644 index 0000000000000000000000000000000000000000..d9915a26910caaa9816d59598305f6afe719ea7c GIT binary patch literal 58458 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 z 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 literal 0 HcmV?d00001