You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Richard S. Hall" <he...@ungoverned.org> on 2009/07/23 18:37:32 UTC

Re: svn commit: r797111 - in /felix/trunk/gogo/runtime/src: main/java/org/apache/felix/gogo/runtime/shell/Closure.java main/java/org/apache/felix/gogo/runtime/shell/Pipe.java test/java/org/apache/felix/gogo/runtime/shell/TestParser.java


On 7/23/09 8:46 AM, dbaum@apache.org 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: derek.baum@paremus.com
> +		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();
>
>
>