Author: dbaum
Date: Thu Jul 23 15:46:05 2009
New Revision: 797111
URL: http://svn.apache.org/viewvc?rev=797111&view=rev
Log:
fix for FELIX-1403
Modified:
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Closure.java
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Pipe.java
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/shell/TestParser.java
Modified:
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Closure.java
URL:
http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Closure.java?rev=797111&r1=797110&r2=797111&view=diff
==============================================================================
---
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Closure.java
(original)
+++
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Closure.java
Thu Jul 23 15:46:05 2009
@@ -54,9 +54,12 @@
if (pipes.isEmpty())
{
- current.setIn(session.in);
- current.setOut(session.out);
- current.setErr(session.err); // XXX: [email protected]
+ if (current.out == null)
+ {
+ current.setIn(session.in);
+ current.setOut(session.out);
+ current.setErr(session.err);
+ }
}
else
{
Modified:
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Pipe.java
URL:
http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Pipe.java?rev=797111&r1=797110&r2=797111&view=diff
==============================================================================
---
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Pipe.java
(original)
+++
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/shell/Pipe.java
Thu Jul 23 15:46:05 2009
@@ -16,19 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-// DWB16: redirect System.err when creating pipe
package org.apache.felix.gogo.runtime.shell;
-import org.osgi.service.command.Converter;
-
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+import java.io.PrintStream;
import java.util.List;
+import org.osgi.service.command.Converter;
+
public class Pipe extends Thread
{
+ static final ThreadLocal<InputStream> tIn = new ThreadLocal<InputStream>();
+ static final ThreadLocal<PrintStream> tOut = new
ThreadLocal<PrintStream>();
+ static final ThreadLocal<PrintStream> tErr = new
ThreadLocal<PrintStream>();
InputStream in;
PrintStream out;
- PrintStream err; // derek
+ PrintStream err;
PipedOutputStream pout;
Closure closure;
Exception exception;
@@ -40,6 +46,10 @@
super("pipe-" + statements);
this.closure = closure;
this.statements = statements;
+
+ in = tIn.get();
+ out = tOut.get();
+ err = tErr.get();
}
public void setIn(InputStream in)
@@ -65,13 +75,15 @@
next.setIn(new PipedInputStream(pout));
out = new PrintStream(pout);
return next;
-
}
public void run()
{
- //closure.session.service.threadIO.setStreams(in, out, System.err);
- closure.session.service.threadIO.setStreams(in, out, err); // derek
+ tIn.set(in);
+ tOut.set(out);
+ tErr.set(err);
+ closure.session.service.threadIO.setStreams(in, out, err);
+
try
{
for (List<CharSequence> statement : statements)
@@ -91,6 +103,10 @@
{
out.flush();
closure.session.service.threadIO.close();
+ tIn.set(in);
+ tOut.set(out);
+ tErr.set(err);
+
try
{
if (in instanceof PipedInputStream)
Modified:
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/shell/TestParser.java
URL:
http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/shell/TestParser.java?rev=797111&r1=797110&r2=797111&view=diff
==============================================================================
---
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/shell/TestParser.java
(original)
+++
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/shell/TestParser.java
Thu Jul 23 15:46:05 2009
@@ -85,7 +85,11 @@
c.addCommand("echo", this);
c.addCommand("capture", this);
c.addCommand("grep", this);
+ c.addCommand("echoout", this);
+ c.execute("myecho = { echoout $args }");
assertEquals("def", c.execute("echo def|grep (d.*)|capture"));
+ assertEquals("def", c.execute("echoout def|grep (d.*)|capture"));
+ assertEquals("def", c.execute("myecho def|grep (d.*)|capture"));
assertEquals("def", c.execute("echo abc; echo def; echo ghi|grep
(d.*)|capture"));
assertEquals("hello world", c.execute("echo hello world|capture"));
assertEquals("defghi", c.execute("echo abc; echo def; echo ghi|grep
(def|ghi)|capture"));
@@ -241,6 +245,11 @@
return sb;
}
+ public void echoout(Object args[])
+ {
+ System.out.println(echo(args));
+ }
+
public void testContext() throws Exception
{
Context c = new Context();