[izpack-changes] r1442 - in izpack-src/branches/branch-3-8-automation-fixes/src: . lib/com/izforge/izpack/installer lib/com/izforge/izpack/panels
noreply at berlios.de
noreply at berlios.de
Fri Jun 9 17:34:31 CEST 2006
Author: tschwarze
Date: 2006-06-09 17:34:29 +0200 (Fri, 09 Jun 2006)
New Revision: 1442
Modified:
izpack-src/branches/branch-3-8-automation-fixes/src/build.xml
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/AutomatedInstaller.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/Installer.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/PanelAutomation.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/ProcessPanelWorker.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/Unpacker.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/CompilePanelAutomationHelper.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/ImgPacksPanelAutomationHelper.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/InstallPanelAutomationHelper.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/PacksPanelAutomationHelper.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/ProcessPanelAutomationHelper.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/TargetPanelAutomationHelper.java
izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/UserInputPanelAutomationHelper.java
Log:
automation fixes:
- PacksPanel was broken
- ProcessPanelAutomationHelper was not added to installer (typo in build.xml)
- pass a useful exit code when installation failed
- make installation fail on certain errors (compilation fails, process execution fails etc.)
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/build.xml
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/build.xml 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/build.xml 2006-06-09 15:34:29 UTC (rev 1442)
@@ -555,6 +555,7 @@
<include name="com/izforge/izpack/panels/PacksModel.java" />
<include name="com/izforge/izpack/panels/PacksPanelBase.java" />
<include name="com/izforge/izpack/panels/PacksPanelInterface.java" />
+ <include name="com/izforge/izpack/panels/PacksPanelAutomationHelper.java" />
</build-panel>
<build-panel name="HTMLLicencePanel">
<include name="com/izforge/izpack/panels/HTMLLicencePanel.java" />
@@ -607,7 +608,7 @@
</build-panel>
<build-panel name="ProcessPanel">
<include name="com/izforge/izpack/panels/ProcessPanel.java" />
- <include name="com/izforge/izpack/panels/ProcessPanelAutomationPanel.java" />
+ <include name="com/izforge/izpack/panels/ProcessPanelAutomationHelper.java" />
</build-panel>
<build-panel name="SudoPanel">
<include name="com/izforge/izpack/panels/SudoPanel.java" />
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/AutomatedInstaller.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/AutomatedInstaller.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/AutomatedInstaller.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -64,6 +64,9 @@
/** The automated installation data. */
private AutomatedInstallData idata = new AutomatedInstallData();
+ /** The result of the installation. */
+ private boolean result = false;
+
/**
* Constructing an instance triggers the install.
*
@@ -77,26 +80,24 @@
File input = new File(inputFilename);
// Loads the installation data
- loadInstallData(idata);
+ loadInstallData(this.idata);
// Loads the xml data
- idata.xmlData = getXMLData(input);
+ this.idata.xmlData = getXMLData(input);
// Loads the langpack
- idata.localeISO3 = idata.xmlData.getAttribute("langpack", "eng");
- InputStream in = getClass().getResourceAsStream("/langpacks/" + idata.localeISO3 + ".xml");
- idata.langpack = new LocaleDatabase(in);
- idata.setVariable(ScriptParser.ISO3_LANG, idata.localeISO3);
+ this.idata.localeISO3 = this.idata.xmlData.getAttribute("langpack", "eng");
+ InputStream in = getClass().getResourceAsStream("/langpacks/" + this.idata.localeISO3 + ".xml");
+ this.idata.langpack = new LocaleDatabase(in);
+ this.idata.setVariable(ScriptParser.ISO3_LANG, this.idata.localeISO3);
// create the resource manager singleton
- ResourceManager.create(idata);
+ ResourceManager.create(this.idata);
// Load custom langpack if exist.
- addCustomLangpack(idata);
+ addCustomLangpack(this.idata);
this.panelInstanceCount = new TreeMap();
-
- doInstall(idata);
}
/**
@@ -107,23 +108,24 @@
*
* TODO: We should try to fix this in the future.
*/
- private void writeUninstallData()
+ private boolean writeUninstallData()
{
try
{
// We get the data
UninstallData udata = UninstallData.getInstance();
List files = udata.getFilesList();
- ZipOutputStream outJar = idata.uninstallOutJar;
+ ZipOutputStream outJar = this.idata.uninstallOutJar;
- if (outJar == null) return;
+ if (outJar == null)
+ return true; // it is allowed not to have an installer
System.out.println("[ Writing the uninstaller data ... ]");
// We write the files log
outJar.putNextEntry(new ZipEntry("install.log"));
BufferedWriter logWriter = new BufferedWriter(new OutputStreamWriter(outJar));
- logWriter.write(idata.getInstallPath());
+ logWriter.write(this.idata.getInstallPath());
logWriter.newLine();
Iterator iter = files.iterator();
while (iter.hasNext())
@@ -159,113 +161,141 @@
// Cleanup
outJar.flush();
outJar.close();
+ return true;
}
catch (Exception err)
{
err.printStackTrace();
+ return false;
}
}
/**
* Runs the automated installation logic for each panel in turn.
*
- * @param installdata the installation data.
* @throws Exception
*/
- private void doInstall(AutomatedInstallData installdata) throws Exception
+ protected void doInstall() throws Exception
{
// TODO: i18n
System.out.println("[ Starting automated installation ]");
- // walk the panels in order
- Iterator panelsIterator = installdata.panelsOrder.iterator();
- while (panelsIterator.hasNext())
+ try
{
- Panel p = (Panel) panelsIterator.next();
- String praefix = "com.izforge.izpack.panels.";
- if (p.className.compareTo(".") > -1)
- // Full qualified class name
- praefix = "";
- if (!OsConstraint.oneMatchesCurrentSystem(p.osConstraints)) continue;
-
- String panelClassName = p.className;
- String automationHelperClassName = praefix + panelClassName + "AutomationHelper";
- Class automationHelperClass = null;
- // determine if the panel supports automated install
- try
+ // assume that installation will succeed
+ this.result = true;
+
+ // walk the panels in order
+ Iterator panelsIterator = this.idata.panelsOrder.iterator();
+ while (panelsIterator.hasNext())
{
- automationHelperClass = Class.forName(automationHelperClassName);
- }
- catch (ClassNotFoundException e)
- {
- // this is OK - not all panels have/need automation support.
- continue;
- }
-
- // instantiate the automation logic for the panel
- PanelAutomation automationHelperInstance = null;
- if (automationHelperClass != null)
- {
+ Panel p = (Panel) panelsIterator.next();
+ String praefix = "com.izforge.izpack.panels.";
+ if (p.className.compareTo(".") > -1)
+ // Full qualified class name
+ praefix = "";
+ if (!OsConstraint.oneMatchesCurrentSystem(p.osConstraints)) continue;
+
+ String panelClassName = p.className;
+ String automationHelperClassName = praefix + panelClassName + "AutomationHelper";
+ Class automationHelperClass = null;
+ // determine if the panel supports automated install
try
{
- automationHelperInstance = (PanelAutomation) automationHelperClass
- .newInstance();
+ automationHelperClass = Class.forName(automationHelperClassName);
}
- catch (Exception e)
+ catch (ClassNotFoundException e)
{
- System.err.println("ERROR: no default constructor for "
- + automationHelperClassName + ", skipping...");
+ // this is OK - not all panels have/need automation support.
continue;
}
- }
-
- // We get the panels root xml markup
- Vector panelRoots = installdata.xmlData.getChildrenNamed(panelClassName);
- int panelRootNo = 0;
-
- if (this.panelInstanceCount.containsKey(panelClassName))
- {
- // get number of panel instance to process
- panelRootNo = ((Integer) this.panelInstanceCount.get(panelClassName)).intValue();
- }
-
- XMLElement panelRoot = (XMLElement) panelRoots.elementAt(panelRootNo);
-
- this.panelInstanceCount.put(panelClassName, new Integer(panelRootNo + 1));
-
- // execute the installation logic for the current panel, if it has
- // any:
- if (automationHelperInstance != null)
- {
- try
+
+ // instantiate the automation logic for the panel
+ PanelAutomation automationHelperInstance = null;
+ if (automationHelperClass != null)
{
- automationHelperInstance.runAutomated(installdata, panelRoot);
+ try
+ {
+ automationHelperInstance = (PanelAutomation) automationHelperClass
+ .newInstance();
+ }
+ catch (Exception e)
+ {
+ System.err.println("ERROR: no default constructor for "
+ + automationHelperClassName + ", skipping...");
+ continue;
+ }
}
- catch (Exception e)
+
+ // We get the panels root xml markup
+ Vector panelRoots = this.idata.xmlData.getChildrenNamed(panelClassName);
+ int panelRootNo = 0;
+
+ if (this.panelInstanceCount.containsKey(panelClassName))
{
- System.err.println("ERROR: automated installation failed for panel "
- + panelClassName);
- e.printStackTrace();
- continue;
+ // get number of panel instance to process
+ panelRootNo = ((Integer) this.panelInstanceCount.get(panelClassName)).intValue();
}
-
+
+ XMLElement panelRoot = (XMLElement) panelRoots.elementAt(panelRootNo);
+
+ this.panelInstanceCount.put(panelClassName, new Integer(panelRootNo + 1));
+
+ // execute the installation logic for the current panel, if it has
+ // any:
+ if (automationHelperInstance != null)
+ {
+ try
+ {
+ if (! automationHelperInstance.runAutomated(this.idata, panelRoot))
+ {
+ // make installation fail instantly
+ this.result = false;
+ return;
+ }
+ }
+ catch (Exception e)
+ {
+ System.err.println("ERROR: automated installation failed for panel "
+ + panelClassName);
+ e.printStackTrace();
+ this.result = false;
+ continue;
+ }
+
+ }
+
}
-
+
+ // this does nothing if the uninstaller was not included
+ writeUninstallData();
+
+ if (this.result)
+ System.out.println("[ Automated installation done ]");
+ else
+ System.out.println("[ Automated installation FAILED! ]");
}
-
- // this does nothing if the uninstaller was not included
- writeUninstallData();
-
- System.out.println("[ Automated installation done ]");
-
- // Bye
- Housekeeper.getInstance().shutDown(0);
+ catch (Exception e)
+ {
+ this.result = false;
+ System.err.println(e.toString());
+ e.printStackTrace();
+ System.out.println("[ Automated installation FAILED! ]");
+ }
+ finally
+ {
+ // Bye
+ Housekeeper.getInstance().shutDown(this.result ? 0 : 1);
+ }
}
/**
* Loads the xml data for the automated mode.
*
* @param input The file containing the installation data.
+ *
+ * @return The root of the XML file.
+ *
* @exception Exception thrown if there are problems reading the file.
*/
public XMLElement getXMLData(File input) throws Exception
@@ -283,4 +313,14 @@
return rtn;
}
+
+ /**
+ * Get the result of the installation.
+ *
+ * @return True if the installation was successful.
+ */
+ public boolean getResult()
+ {
+ return this.result;
+ }
}
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/Installer.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/Installer.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/Installer.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -63,17 +63,18 @@
}
else
{
- new AutomatedInstaller(args[0]);
+ AutomatedInstaller ai = new AutomatedInstaller(args[0]);
+ // this method will also exit!
+ ai.doInstall();
}
}
catch (Exception e)
{
- System.err.println("- Error -");
+ System.err.println("- ERROR -");
System.err.println(e.toString());
e.printStackTrace();
- System.exit(0);
+ System.exit(1);
}
}
-
}
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/PanelAutomation.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/PanelAutomation.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/PanelAutomation.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -52,6 +52,8 @@
*
* @param installData The installation data
* @param panelRoot The XML root element of the panels blackbox tree.
+ *
+ * @return true if the automated work was performed successful, false if it failed critically.
*/
- public void runAutomated(AutomatedInstallData installData, XMLElement panelRoot);
+ public boolean runAutomated(AutomatedInstallData installData, XMLElement panelRoot);
}
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/ProcessPanelWorker.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/ProcessPanelWorker.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/ProcessPanelWorker.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -78,6 +78,8 @@
private Thread processingThread = null;
+ private boolean result = true;
+
private static PrintWriter logfile = null;
private String logfiledir = null;
@@ -284,11 +286,11 @@
this.handler.startProcess(pj.name);
- boolean result = pj.run(this.handler, this.vs);
+ this.result = pj.run(this.handler, this.vs);
this.handler.finishProcess();
- if (!result) break;
+ if (!this.result) break;
}
this.handler.finishProcessing();
@@ -303,6 +305,16 @@
this.processingThread.start();
}
+ /**
+ * Return the result of the process execution.
+ *
+ * @return true if all processes succeeded, false otherwise.
+ */
+ public boolean getResult()
+ {
+ return this.result;
+ }
+
interface Processable
{
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/Unpacker.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/Unpacker.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/installer/Unpacker.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -107,6 +107,9 @@
public static final String INTERRUPTED = "interruppted";
+ /** The result of the operation. */
+ private boolean result = true;
+
/**
* The constructor.
*
@@ -247,6 +250,7 @@
if (doIt != null && (doIt.equals(INTERRUPT) || doIt.equals(INTERRUPTED)))
{
instances.put(this, INTERRUPTED);
+ this.result = false;
return (true);
}
return (false);
@@ -348,6 +352,7 @@
handler.emitError("Error creating directories",
"Could not create directory\n" + dest.getPath());
handler.stopAction();
+ this.result = false;
return;
}
}
@@ -451,7 +456,7 @@
int maxBytes = (int) Math.min(pf.length() - bytesCopied, buffer.length);
int bytesInBuffer = pis.read(buffer, 0, maxBytes);
if (bytesInBuffer == -1)
- throw new IOException("Unexpected end of stream");
+ throw new IOException("Unexpected end of stream (installer corrupted?)");
out.write(buffer, 0, bytesInBuffer);
@@ -541,7 +546,10 @@
// We use the file executor
FileExecutor executor = new FileExecutor(executables);
if (executor.executeFiles(ExecutableFile.POSTINSTALL, handler) != 0)
+ {
handler.emitError("File execution failed", "The installation was not completed");
+ this.result = false;
+ }
if (performInterrupted())
{ // Interrupt was initiated; perform it.
@@ -575,6 +583,7 @@
handler.stopAction();
handler.emitError("An error occured", err.toString());
err.printStackTrace();
+ this.result = false;
}
finally
{
@@ -583,6 +592,16 @@
}
/**
+ * Return the state of the operation.
+ *
+ * @return true if the operation was successful, false otherwise.
+ */
+ public boolean getResult()
+ {
+ return this.result;
+ }
+
+ /**
* @param updatechecks
*/
private void performUpdateChecks(ArrayList updatechecks)
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/CompilePanelAutomationHelper.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/CompilePanelAutomationHelper.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/CompilePanelAutomationHelper.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -68,7 +68,7 @@
*
* @param panelRoot The panel XML tree root.
*/
- public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
+ public boolean runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
{
XMLElement compiler_xml = panelRoot.getFirstChildNamed("compiler");
@@ -79,7 +79,7 @@
if (compiler == null)
{
System.out.println("invalid automation data: could not find compiler");
- return;
+ return false;
}
XMLElement args_xml = panelRoot.getFirstChildNamed("arguments");
@@ -91,7 +91,7 @@
if (args_xml == null)
{
System.out.println("invalid automation data: could not find compiler arguments");
- return;
+ return false;
}
try
@@ -101,10 +101,13 @@
this.worker.setCompilerArguments(args);
this.worker.run();
+
+ return this.worker.getResult().isSuccess();
}
catch (IOException e)
{
e.printStackTrace();
+ return false;
}
}
@@ -135,8 +138,8 @@
System.err.println(error.getStdout());
System.err.println("stderr of compiler:");
System.err.println(error.getStderr());
- // do not abort compilation, just continue
- error.setAction(CompileResult.ACTION_CONTINUE);
+ // abort instantly and make installation fail
+ error.setAction(CompileResult.ACTION_ABORT);
}
/**
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/ImgPacksPanelAutomationHelper.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/ImgPacksPanelAutomationHelper.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/ImgPacksPanelAutomationHelper.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -21,72 +21,14 @@
package com.izforge.izpack.panels;
-import java.util.Vector;
-import net.n3.nanoxml.XMLElement;
-
-import com.izforge.izpack.Pack;
-import com.izforge.izpack.installer.AutomatedInstallData;
-import com.izforge.izpack.installer.PanelAutomation;
-
/**
* Functions to support automated usage of the ImgPacksPanel
*
* @author Jonathan Halliday
* @author Julien Ponge
*/
-public class ImgPacksPanelAutomationHelper implements PanelAutomation
+public class ImgPacksPanelAutomationHelper extends PacksPanelAutomationHelper
{
-
- /**
- * Asks to make the XML panel data.
- *
- * @param idata The installation data.
- * @param panelRoot The XML root to write the data in.
- */
- public void makeXMLData(AutomatedInstallData idata, XMLElement panelRoot)
- {
- // Selected packs markup
- XMLElement sel = new XMLElement("selected");
-
- // We add each selected pack to sel
- int size = idata.selectedPacks.size();
- for (int i = 0; i < size; i++)
- {
- XMLElement el = new XMLElement("pack");
- Pack pack = (Pack) idata.selectedPacks.get(i);
- Integer integer = new Integer(idata.availablePacks.indexOf(pack));
- el.setAttribute("index", integer.toString());
- sel.addChild(el);
- }
-
- // Joining
- panelRoot.addChild(sel);
- }
-
- /**
- * Asks to run in the automated mode.
- *
- * @param idata The installation data.
- * @param panelRoot The root of the panel data.
- */
- public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
- {
- // We get the selected markup
- XMLElement sel = panelRoot.getFirstChildNamed("selected");
-
- // We get the packs markups
- Vector pm = sel.getChildrenNamed("pack");
-
- // We select each of them
- int size = pm.size();
- idata.selectedPacks.clear();
- for (int i = 0; i < size; i++)
- {
- XMLElement el = (XMLElement) pm.get(i);
- Integer integer = new Integer(el.getAttribute("index"));
- int index = integer.intValue();
- idata.selectedPacks.add(idata.availablePacks.get(index));
- }
- }
+ // simply inherit everything from PacksPanelAutomationHelper
}
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/InstallPanelAutomationHelper.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/InstallPanelAutomationHelper.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/InstallPanelAutomationHelper.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -58,8 +58,10 @@
* Perform the installation actions.
*
* @param panelRoot The panel XML tree root.
+ *
+ * @return true if the installation was successful.
*/
- public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
+ public boolean runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
{
Unpacker unpacker = new Unpacker(idata, this);
unpacker.start();
@@ -75,6 +77,7 @@
// ignore it, we're waiting for the unpacker to finish...
}
}
+ return unpacker.getResult();
}
/**
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/PacksPanelAutomationHelper.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/PacksPanelAutomationHelper.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/PacksPanelAutomationHelper.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -66,14 +66,16 @@
*
* @param idata The installation data.
* @param panelRoot The root of the panel data.
+ *
+ * @return true if all packs were found and selected, false if something was wrong.
*/
- public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
+ public boolean runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
{
- // We first get the <selected> child (new from version 3.7.0).
- XMLElement selectedPacks = panelRoot.getFirstChildNamed("selected");
// We get the packs markups
- Vector pm = selectedPacks.getChildrenNamed("pack");
+ Vector pm = panelRoot.getChildrenNamed("pack");
+ boolean result = true;
+
// We figure out the selected ones
int size = pm.size();
idata.selectedPacks.clear();
@@ -88,8 +90,7 @@
// be liberal in what we accept
// (For example, this allows auto-installer files to be fitted
- // to automatically
- // generated installers, yes I need this! tisc.)
+ // to automatically generated installers, yes I need this! tschwarze.)
if (index_str != null)
{
try
@@ -103,12 +104,14 @@
{
System.err.println("Invalid pack index \"" + index_str + "\" in line "
+ el.getLineNr());
+ result = false;
}
}
catch (NumberFormatException e)
{
System.err.println("Invalid pack index \"" + index_str + "\" in line "
+ el.getLineNr());
+ result = false;
}
}
else
@@ -138,6 +141,7 @@
{
System.err.println("Could not find selected pack named \"" + name
+ "\" in line " + el.getLineNr());
+ result = false;
}
}
@@ -148,6 +152,7 @@
}
+ return result;
}
}
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/ProcessPanelAutomationHelper.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/ProcessPanelAutomationHelper.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/ProcessPanelAutomationHelper.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -63,18 +63,23 @@
* Perform the installation actions.
*
* @param panelRoot The panel XML tree root.
+ *
+ * @return true if processes were run successfully.
*/
- public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
+ public boolean runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
{
try
{
this.worker = new ProcessPanelWorker(idata, this);
this.worker.run();
+
+ return this.worker.getResult();
}
catch (IOException e)
{
e.printStackTrace();
+ return false;
}
}
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/TargetPanelAutomationHelper.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/TargetPanelAutomationHelper.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/TargetPanelAutomationHelper.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -61,11 +61,14 @@
*
* @param idata The installation data.
* @param panelRoot The XML tree to read the data from.
+ *
+ * @return always true.
*/
- public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
+ public boolean runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
{
// We set the installation path
XMLElement ipath = panelRoot.getFirstChildNamed("installpath");
idata.setInstallPath(ipath.getContent());
+ return true;
}
}
Modified: izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/UserInputPanelAutomationHelper.java
===================================================================
--- izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/UserInputPanelAutomationHelper.java 2006-06-09 15:31:29 UTC (rev 1441)
+++ izpack-src/branches/branch-3-8-automation-fixes/src/lib/com/izforge/izpack/panels/UserInputPanelAutomationHelper.java 2006-06-09 15:34:29 UTC (rev 1442)
@@ -60,6 +60,9 @@
// ------------------------------------------------------
private Map entries;
+ /**
+ * Default constructor, used during automated installation.
+ */
public UserInputPanelAutomationHelper()
{
this.entries = null;
@@ -94,11 +97,11 @@
// ----------------------------------------------------
// add all entries
// ----------------------------------------------------
- Iterator keys = entries.keySet().iterator();
+ Iterator keys = this.entries.keySet().iterator();
while (keys.hasNext())
{
String key = (String) keys.next();
- String value = (String) entries.get(key);
+ String value = (String) this.entries.get(key);
dataElement = new XMLElement(AUTO_KEY_ENTRY);
dataElement.setAttribute(AUTO_ATTRIBUTE_KEY, key);
@@ -113,8 +116,10 @@
*
* @param idata The installation data.
* @param panelRoot The XML root element of the panels blackbox tree.
+ *
+ * @return true if the variables were found and set.
*/
- public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
+ public boolean runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
{
XMLElement userInput;
XMLElement dataElement;
@@ -126,11 +131,11 @@
// ----------------------------------------------------
userInput = panelRoot.getFirstChildNamed(AUTO_KEY_USER_INPUT);
- if (userInput == null) { return; }
+ if (userInput == null) { return false; }
Vector userEntries = userInput.getChildrenNamed(AUTO_KEY_ENTRY);
- if (userEntries == null) { return; }
+ if (userEntries == null) { return false; }
// ----------------------------------------------------
// retieve each entry and substitute the associated
@@ -145,5 +150,7 @@
Debug.trace("UserInputPanel: setting variable " + variable + " to " + value);
idata.setVariable(variable, value);
}
+
+ return true;
}
}
More information about the izpack-changes
mailing list