diff --git a/doc/XServices_V1.0-User_Guide.odt b/doc/XServices_V1.0-User_Guide.odt new file mode 100644 index 0000000..a2ea2e7 Binary files /dev/null and b/doc/XServices_V1.0-User_Guide.odt differ diff --git a/src/java/net/brutex/xservices/util/RunTask.java b/src/java/net/brutex/xservices/util/RunTask.java index 87e0526..7612acc 100644 --- a/src/java/net/brutex/xservices/util/RunTask.java +++ b/src/java/net/brutex/xservices/util/RunTask.java @@ -16,16 +16,18 @@ package net.brutex.xservices.util; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; import java.util.Iterator; import java.util.Map; import java.util.Vector; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildListener; import org.apache.tools.ant.BuildLogger; -import org.apache.tools.ant.DefaultLogger; import org.apache.tools.ant.Project; import org.apache.tools.ant.Target; import org.apache.tools.ant.Task; +import org.apache.tools.ant.listener.TimestampedLogger; import org.apache.tools.ant.taskdefs.Echo; /** @@ -38,27 +40,22 @@ public class RunTask { Target anttarget; Task anttask; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ByteArrayOutputStream err = new ByteArrayOutputStream(); + TimestampedLogger log = null; + public RunTask(Task anttask) { antproject = new Project(); antproject.init(); antproject.setBasedir(System.getProperty("java.io.tmpdir")); - DefaultLogger log = new DefaultLogger(); - log.setErrorPrintStream(System.err); - log.setOutputPrintStream(System.out); + log = new TimestampedLogger(); + log.setOutputPrintStream(new PrintStream(out)); + log.setErrorPrintStream(new PrintStream(err)); + log.setMessageOutputLevel(Echo.EchoLevel.VERBOSE.getLevel()); + antproject.addBuildListener(log); - Vector listeners = antproject.getBuildListeners(); - for (Iterator i = listeners.iterator(); i.hasNext(); ) { - BuildListener listener = (BuildListener) i.next(); - - if (listener instanceof BuildLogger) { - BuildLogger logger = (BuildLogger) listener; - logger.setMessageOutputLevel(Echo.EchoLevel.VERBOSE.getLevel()); - logger.setOutputPrintStream(System.out); - logger.setErrorPrintStream(System.err); - } - } - + anttarget = new Target(); anttarget.setName("XBridgeNGDynamicTarget"); anttarget.setProject(antproject); @@ -82,10 +79,14 @@ public class RunTask { { try { antproject.executeTarget(anttarget.getName()); - //anttask.execute(); - return antproject.getProperties(); } catch (Exception ex) { - throw new BuildException(ex); + new PrintStream(err).println(ex.getMessage()); } + Map map = antproject.getProperties(); + map.put("System.stdOut", out.toString()); + map.put("System.stdErr", err.toString()); + //anttask.execute(); + return map; + } } diff --git a/src/java/net/brutex/xservices/ws/ArchiveService.java b/src/java/net/brutex/xservices/ws/ArchiveService.java index 563459e..54293ea 100644 --- a/src/java/net/brutex/xservices/ws/ArchiveService.java +++ b/src/java/net/brutex/xservices/ws/ArchiveService.java @@ -196,7 +196,7 @@ public class ArchiveService { bzip.setDestfile(dst); Map result = runner.postTask(); - return new ReturnCode(0,"complete",""); + return new ReturnCode(0,result.get("System.stdOut"),result.get("System.stdErr")); } @WebMethod(exclude = true)