[jboss-cvs] repository.jboss.com/beanshell/1.3.0-brew/src ...

Vivek Lakshmanan vivekl at redhat.com
Fri Feb 23 01:05:16 EST 2007


  User: vivekl  
  Date: 07/02/23 01:05:16

  Added:       beanshell/1.3.0-brew/src    bsh-1.3.0-src.tar.bz2
                        bsh-build.patch bsh-readline.patch
  Log:
  - Address the following JIRA tasks:
    JBAS-3994
    JBAS-4132
    JBAS-4137
    JBAS-4138
    JBAS-4139
    JBAS-4141
  - Add brew-built binaries for thirdparty dependencies for AS 4.2
  
  Revision  Changes    Path
  1.1      date: 2007/02/23 06:05:15;  author: vivekl;  state: Exp;repository.jboss.com/beanshell/1.3.0-brew/src/bsh-1.3.0-src.tar.bz2
  
  	<<Binary file>>
  
  
  1.1      date: 2007/02/23 06:05:15;  author: vivekl;  state: Exp;repository.jboss.com/beanshell/1.3.0-brew/src/bsh-build.patch
  
  Index: bsh-build.patch
  ===================================================================
  --- BeanShell/build.xml.orig	2004-01-20 19:12:20.888557245 -0500
  +++ BeanShell/build.xml	2004-01-20 19:13:36.150184282 -0500
  @@ -103,50 +103,7 @@
   		value="docs/manual/bshcommands-bshdoc.xml"/>
   
   <!-- Begin Targets -->
  -
  -	<!-- The javacc targets could be smarter... -->
  -	<target name="checkjjt">
  -		<uptodate property="jjtree.notRequired" 
  -				targetfile="${src-dir}/bsh/bsh.jj"
  -		>
  -			<srcfiles dir="${src-dir}/bsh" includes="bsh.jjt"/>
  -		</uptodate>
  -	</target>
  -	<target name="checkjj">
  -		<uptodate property="javacc.notRequired" 
  -				targetfile="${src-dir}/bsh/Parser.java"
  -		>
  -			<srcfiles dir="${src-dir}/bsh" includes="bsh.jj"/>
  -		</uptodate>
  -	</target>
  -
  -	<!-- Create bsh.jj when bsh.jjt changes. -->
  -	<target name="jjtree" unless="jjtree.notRequired" depends="checkjjt">
  -		<java classname="jjtree"
  -			fork="yes"
  -			failonerror="yes" >
  -			<arg 
  -				line="-OUTPUT_DIRECTORY=${src-dir}/bsh ${src-dir}/bsh/bsh.jjt"/>
  -			<classpath>
  -				<fileset refid="lib-fileset"/>
  -			</classpath>
  -		</java>
  -	</target>
  -
  -	<!-- Create Parser.java when bsh.jj changes. -->
  -	<target name="javacc" unless="javacc.notRequired" depends="checkjj">
  -		<java classname="javacc"
  -			fork="yes"
  -			failonerror="yes" >
  -			<!-- classpath="${javacc-lib}" -->
  -			<arg line="-OUTPUT_DIRECTORY=${src-dir}/bsh ${src-dir}/bsh/bsh.jj"/>
  -			<classpath>
  -				<fileset refid="lib-fileset"/>
  -			</classpath>
  -		</java>
  -	</target>
  -
  -	<target name="compile" depends="jjtree,javacc,builddir">
  +	<target name="compile" depends="builddir">
   		<!-- exclude the ${excludes} as well as anything under a "bak" dir -->
   		<!--compiler="${build-compiler}"-->
   		<javac srcdir="${src-dir}:${test-src-dir}:${bsf-src-dir}"
  
  
  
  1.1      date: 2007/02/23 06:05:16;  author: vivekl;  state: Exp;repository.jboss.com/beanshell/1.3.0-brew/src/bsh-readline.patch
  
  Index: bsh-readline.patch
  ===================================================================
  --- BeanShell/src/bsh/Interpreter.java~	2003-09-03 19:56:58.000000000 -0400
  +++ BeanShell/src/bsh/Interpreter.java	2004-01-25 09:59:41.730059108 -0500
  @@ -38,6 +38,13 @@
   import java.lang.reflect.Method;
   import java.lang.reflect.InvocationTargetException;
   
  +import bsh.util.BshCompleter;
  +import bsh.util.NameCompletionTable;
  +import bsh.classpath.ClassManagerImpl;
  +import org.gnu.readline.Readline;
  +import org.gnu.readline.ReadlineLibrary;
  +import org.gnu.readline.ReadlineReader;
  +
   /**
   	The BeanShell script interpreter.
   
  @@ -394,10 +401,59 @@
   			else
   				src = System.in;
   
  -            Reader in = new CommandLineReader( new InputStreamReader(src));
  -            Interpreter interpreter = 
  -				new Interpreter( in, System.out, System.err, true );
  -        	interpreter.run();
  +            Reader in = null;
  +            boolean usingReadline = false;
  +            String backingLib = System.getProperty("bsh.console.readlinelib");
  +            if (backingLib != null) {
  +                try {
  +                    File history = new File(System.getProperty("user.home") +
  +                                            File.separator + ".bsh_history");
  +                    if (!history.exists()) {
  +                        try {
  +                            history.createNewFile();
  +                        } catch(IOException ioe) {
  +                            debug("Unable to create history  " + history.getAbsolutePath());
  +                        }
  +                    }
  +                    ReadlineLibrary lib = ReadlineLibrary.byName(backingLib);
  +                    // should I wrap CommandLineReader around it?
  +                    if (history.canWrite() && history.canRead()) {
  +                        in = new ReadlineReader("bsh % ", history,lib);
  +                    } else {
  +                        in = new ReadlineReader("bsh % ",lib);
  +                        debug("Unable to read/write history  " + history.getAbsolutePath());
  +                    }
  +                } catch (IOException ioe) {
  +                    System.err.println("Unable to invoke ReadlineReader " +
  +                                       "due to: " + ioe);
  +                }
  +            }
  +            if (in == null)
  +                in = new CommandLineReader( new InputStreamReader(src));
  +            else
  +                usingReadline = true;
  +            Interpreter interpreter =
  +                new Interpreter( in, System.out, System.err, true );
  +            if (usingReadline) {
  +                NameCompletionTable nct = new NameCompletionTable();
  +                nct.add(interpreter.getNameSpace());
  +
  +                /** ClassManager does a lot of chatting to the stdout,
  +                 *  so this has been commented out for the time being
  +                 **/
  +
  +//              try {
  +//                  BshClassManager bcm = BshClassManager.getClassManager();
  +//                      if (bcm != null) {
  +//                          nct.add(((ClassManagerImpl)bcm).getClassPath());
  +//                      }
  +//                  } catch(ClassPathException cpe) {
  +//                      debug("classpath exception in name compl:" + cpe);
  +//                  }
  +
  +                Readline.setCompleter(new BshCompleter(nct));
  +            }
  +            interpreter.run();
           }
       }
   
  @@ -445,7 +501,7 @@
                   System.err.flush();
                   Thread.yield();  // this helps a little
   
  -                if ( interactive )
  +                if ( interactive && !(in instanceof ReadlineReader))
                       print( getBshPrompt() );
   
                   eof = Line();
  @@ -548,10 +604,17 @@
               }
           }
   
  -		if ( interactive && exitOnEOF )
  -			System.exit(0);
  +        if ( interactive && exitOnEOF ) {
  +            /* should be done for all streams in general, but this
  +             * ensures that the history for readline is flushed */
  +            try {
  +                in.close();
  +            } catch (IOException ioe) {
  +            }
  +	
  +            System.exit(0);
       }
  -
  +   }
   	// begin source and eval
   
   	/**
  --- /dev/null	2003-10-19 02:52:03.000000000 -0400
  +++ BeanShell/src/bsh/util/BshCompleter.java	2004-01-25 10:14:10.184458217 -0500
  @@ -0,0 +1,38 @@
  +package bsh.util;
  +
  +import org.gnu.readline.ReadlineCompleter;
  +
  +/**
  + * An adapter for org.gnu.readline's ReadlineCompleter interface to map to
  + * BeanShell's NameCompleter interface.
  + *
  + * @see org.gnu.readline.ReadlineReader
  + * @version $Revision: 1.1 $
  + * @author Shane Celis <shane at terraspring.com>
  + **/
  +public class BshCompleter implements ReadlineCompleter {
  +
  +    private NameCompletion completer;
  +
  +    /**
  +     * Constructs a <code>ReadlineCompleter</code> out of a
  +     * <code>NameCompleter</code> object.
  +     **/
  +    public BshCompleter(NameCompletion completer) {
  +        this.completer = completer;
  +    }
  +
  +    /**
  +     * Returns String of completion if unambiguous, otherwise null
  +     **/
  +    public String completer(String text, int state) {
  +        // Not sure what state is used for in ReadlineCompleter
  +        String[] completions = completer.completeName(text);
  +        if (completions.length == 1 && state == 0) {
  +            return completions[0];
  +        } else {
  +            return null;        // ambiguous result
  +        }
  +    }
  +
  +}
  
  
  



More information about the jboss-cvs-commits mailing list