Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/DeployToolConfig.java =================================================================== diff -u -r5de58095d1e02a1410299d4aae62576302c579cc -r2fe3031016f4bc473032ce3f6f08d9ea4ab641e3 --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/DeployToolConfig.java (.../DeployToolConfig.java) (revision 5de58095d1e02a1410299d4aae62576302c579cc) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/DeployToolConfig.java (.../DeployToolConfig.java) (revision 2fe3031016f4bc473032ce3f6f08d9ea4ab641e3) @@ -175,6 +175,8 @@ copyProperties(config); //printObjectProperties(); //for testing purposes } + + /** Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/RemoveModuleFromApplicationXmlTask.java =================================================================== diff -u --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/RemoveModuleFromApplicationXmlTask.java (revision 0) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/RemoveModuleFromApplicationXmlTask.java (revision 2fe3031016f4bc473032ce3f6f08d9ea4ab641e3) @@ -0,0 +1,66 @@ +package org.lamsfoundation.lams.tool.deploy; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + + +/** + * Removes a module entry from the LAMS Application XML. Throws an exception + * if the element is not found. + * + * @author Luke Foxton + */ +public class RemoveModuleFromApplicationXmlTask extends UpdateApplicationXmlTask{ + + + /** + * @param args the command line arguments + */ + public static void main(String[] args) throws Exception + { + + if ((args.length < 1) || (args[0] == null)) + { + throw new IllegalArgumentException("Usage: RemoveModuleFromApplicationXmlTask "); + } + try + { + System.out.println("Attempting to update " + args[0] + "\\META-INF\\application.xml"); + RemoveModuleFromApplicationXmlTask remModAppTask = new RemoveModuleFromApplicationXmlTask(); + remModAppTask.setLamsEarPath(args[0]); + remModAppTask.setModule("ehcache-1.1.jar"); + remModAppTask.execute(); + System.out.println("application.xml update completed"); + } + catch (Exception ex) + { + System.out.println("Application.xml update failed: " + ex.getMessage()); + ex.printStackTrace(); + } + } + /** Creates a new instance of RemoveWebAppFromApplicationXmlTask */ + public RemoveModuleFromApplicationXmlTask() + { + } + + + /** + * Removes the module and context root from the application xml + */ + protected void updateApplicationXml(Document doc) throws DeployException + { + Element moduleElement = findElementWithModule(doc); + if (moduleElement == null) + { + System.out.println("No element found with text matching: " + module); + System.out.println("application.xml update completed"); + System.exit(0); + //throw new DeployException("No element found with text matching \""+doc.getElementsByTagName("java")+"\""); + } else { + System.out.println("Doc: " + moduleElement.compareDocumentPosition(doc)); + System.out.println("Doc: " + doc.getDocumentElement().toString()); + System.out.println("Module: " + moduleElement.getNodeName()); + doc.getDocumentElement().removeChild(moduleElement); + } + } +} Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/RemoveWebAppFromApplicationXmlTask.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r2fe3031016f4bc473032ce3f6f08d9ea4ab641e3 --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/RemoveWebAppFromApplicationXmlTask.java (.../RemoveWebAppFromApplicationXmlTask.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/RemoveWebAppFromApplicationXmlTask.java (.../RemoveWebAppFromApplicationXmlTask.java) (revision 2fe3031016f4bc473032ce3f6f08d9ea4ab641e3) @@ -30,12 +30,11 @@ * Removes a web app entry from the LAMS Application XML. Throws an exception * if the element is not found. * - * @author Chris Perfect, with modifications by Fiona Malikoff + * @author Chris Perfect, with modifications by Fiona Malikoff, Luke Foxton */ public class RemoveWebAppFromApplicationXmlTask extends UpdateApplicationXmlTask { - - + /** Creates a new instance of RemoveWebAppFromApplicationXmlTask */ public RemoveWebAppFromApplicationXmlTask() { Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateApplicationXmlTask.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r2fe3031016f4bc473032ce3f6f08d9ea4ab641e3 --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateApplicationXmlTask.java (.../UpdateApplicationXmlTask.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateApplicationXmlTask.java (.../UpdateApplicationXmlTask.java) (revision 2fe3031016f4bc473032ce3f6f08d9ea4ab641e3) @@ -62,6 +62,11 @@ protected String webUri; /** + * The value of the module element + */ + protected String module; + + /** * The value of the context root element. */ protected String contextRoot; @@ -95,6 +100,15 @@ } /** + * Sets the value of the module to be added + * @param module New value of the property module + */ + public void setModule(final java.lang.String module) + { + this.module = module; + } + + /** * Sets the context root of the web app to be added. * @param contextroot New value of property contextroot. */ @@ -247,6 +261,17 @@ return null; } } + + /** Find a matching web element - useful for updating or deleting an existing element */ + protected Element findElementWithModule(Document doc) { + NodeList moduleNodeList = doc.getElementsByTagName("java"); + Element matchingModuleElement = findElementWithMatchingText(module, moduleNodeList); + if ( matchingModuleElement != null ) { + return (Element) matchingModuleElement.getParentNode(); + } else { + return null; + } + } /** * Modifies the application Xml in the required manner. Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateWarTask.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r2fe3031016f4bc473032ce3f6f08d9ea4ab641e3 --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateWarTask.java (.../UpdateWarTask.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateWarTask.java (.../UpdateWarTask.java) (revision 2fe3031016f4bc473032ce3f6f08d9ea4ab641e3) @@ -61,7 +61,7 @@ /** * Base class of ant tasks that changes a jar file or a war file - * @author Fiona Malikoff + * @author Fiona Malikoff modified by Luke Foxton */ public abstract class UpdateWarTask implements Task {