On 7/23/09 8:46 AM, [email protected] wrote:
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
It is definitely a good idea to include the JIRA issue number in our
commit messages, since JIRA will link the commits up to the issue, but
it would be nice to have a little more description than this in the
commit message so the logs are more useful and we are not forced to go
to JIRA to have any idea of what is going on.
My $0.02. Thanks.
-> richard
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();