You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2012/07/13 17:20:44 UTC

svn commit: r1361269 - in /karaf/trunk: ./ assemblies/features/framework/ assemblies/features/framework/src/main/filtered-resources/resources/bin/ client/ shell/commands/ shell/console/ shell/console/src/main/java/org/apache/karaf/shell/console/ shell/...

Author: cschneider
Date: Fri Jul 13 15:20:43 2012
New Revision: 1361269

URL: http://svn.apache.org/viewvc?rev=1361269&view=rev
Log:
KARAF-1641 Use jline as bundle and remove special Activator for gogo

Removed:
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/Activator.java
Modified:
    karaf/trunk/assemblies/features/framework/pom.xml
    karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell
    karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell.bat
    karaf/trunk/client/pom.xml
    karaf/trunk/pom.xml
    karaf/trunk/shell/commands/pom.xml
    karaf/trunk/shell/console/pom.xml
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/ConsoleFactory.java
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleFactoryService.java
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleImpl.java
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/StreamWrapUtil.java
    karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java
    karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java

Modified: karaf/trunk/assemblies/features/framework/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/framework/pom.xml?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/assemblies/features/framework/pom.xml (original)
+++ karaf/trunk/assemblies/features/framework/pom.xml Fri Jul 13 15:20:43 2012
@@ -74,12 +74,6 @@
         <dependency>
             <groupId>jline</groupId>
             <artifactId>jline</artifactId>
-            <scope>runtime</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <scope>runtime</scope>
         </dependency>
 
         <!-- listed in source feature.xml with explicit startlevel -->

Modified: karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell (original)
+++ karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell Fri Jul 13 15:20:43 2012
@@ -265,6 +265,7 @@ setupDefaults() {
     # Setup classpath
     CLASSPATH="$KARAF_HOME/system/org/apache/karaf/shell/org.apache.karaf.shell.console/${project.version}/org.apache.karaf.shell.console-${project.version}.jar"
     CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/ops4j/pax/logging/pax-logging-api/${pax.logging.version}/pax-logging-api-${pax.logging.version}.jar"
+    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/jline/jline/${jline.version}/jline-${jline.version}.jar"
 
     DEFAULT_JAVA_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
 

Modified: karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell.bat
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell.bat?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell.bat (original)
+++ karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/bin/shell.bat Fri Jul 13 15:20:43 2012
@@ -113,6 +113,7 @@ if "%KARAF_DEBUG%" == "" goto :KARAF_DEB
 
 set CLASSPATH=%KARAF_HOME%\system\org\apache\karaf\shell\org.apache.karaf.shell.console\${project.version}\org.apache.karaf.shell.console-${project.version}.jar
 set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\ops4j\pax\logging\pax-logging-api\${pax.logging.version}\pax-logging-api-${pax.logging.version}.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\jline\jline\${jline.version}\jline-${jline.version}.jar
 
 :EXECUTE
     if "%SHIFT%" == "true" SET ARGS=%2 %3 %4 %5 %6 %7 %8

Modified: karaf/trunk/client/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/client/pom.xml?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/client/pom.xml (original)
+++ karaf/trunk/client/pom.xml Fri Jul 13 15:20:43 2012
@@ -52,4 +52,29 @@
         </dependency>
     </dependencies>
 
+	<build>
+		<plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>target/classes/karaf.key</file>
+                                    <type>key</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>

Modified: karaf/trunk/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/pom.xml?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/pom.xml (original)
+++ karaf/trunk/pom.xml Fri Jul 13 15:20:43 2012
@@ -184,7 +184,7 @@
 
         <gemini.blueprint.version>1.0.0.RELEASE</gemini.blueprint.version>
         <jansi.version>1.9</jansi.version>
-        <jline.version>2.7</jline.version>
+        <jline.version>2.8-SNAPSHOT</jline.version>
         <jsw.version>3.2.3</jsw.version>
         <log4j.version>1.2.16</log4j.version>
         <maven.version>2.0.9</maven.version>

Modified: karaf/trunk/shell/commands/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/commands/pom.xml?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/shell/commands/pom.xml (original)
+++ karaf/trunk/shell/commands/pom.xml Fri Jul 13 15:20:43 2012
@@ -39,20 +39,10 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.fusesource.jansi</groupId>
-            <artifactId>jansi</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.console</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.runtime</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.karaf</groupId>
             <artifactId>org.apache.karaf.util</artifactId>
             <scope>provided</scope>

Modified: karaf/trunk/shell/console/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/pom.xml?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/shell/console/pom.xml (original)
+++ karaf/trunk/shell/console/pom.xml Fri Jul 13 15:20:43 2012
@@ -40,24 +40,12 @@
     <dependencies>
         <dependency>
             <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.fusesource.jansi</groupId>
-            <artifactId>jansi</artifactId>
+            <artifactId>slf4j-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>jline</groupId>
             <artifactId>jline</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.fusesource.jansi</groupId>
-                    <artifactId>jansi</artifactId>
-                </exclusion>
-            </exclusions>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.karaf</groupId>
@@ -141,6 +129,7 @@
                             *
                         </Import-Package>
                         <Export-Package>
+                        	org.apache.felix.gogo.commands,
                         	org.apache.karaf.shell.commands*,
                         	org.apache.karaf.shell.console,
                         	org.apache.karaf.shell.console.commands,
@@ -149,23 +138,13 @@
                             org.apache.felix.gogo*;version=${felix.gogo.version},
                             org.apache.felix.service.command;version=${felix.gogo.version};status=provisional;mandatory:=status,
                             org.apache.felix.service.threadio;version=${felix.gogo.version};status=provisional;mandatory:=status,
-                            org.fusesource.jansi;version=${jansi.version};-split-package:=first,
-                            jline*;version=${jline.version},
-                            org.fusesource.hawtjni*;version=1.0;-split-package:=first
                         </Export-Package>
                         <Private-Package>
                         	org.apache.karaf.shell.console.impl*,
-                            org.fusesource.jansi.internal;-split-package:=first,
-                            org.apache.felix.gogo.runtime*;-split-package:=first,
-                            META-INF.native.*;-split-package:=first
+                        	org.apache.felix.gogo.runtime*;-split-package:=first
                         </Private-Package>
-                        <Bundle-NativeCode>
-                            META-INF/native/windows32/jansi.dll;osname=Win32;processor=x86,
-                            META-INF/native/windows64/jansi.dll;osname=Win32;processor=x86-64,
-                            *
-                        </Bundle-NativeCode>
                         <Bundle-Activator>
-                            org.apache.karaf.shell.console.impl.jline.Activator
+                            org.apache.felix.gogo.runtime.activator.Activator
                         </Bundle-Activator>
                         <Main-Class>
                             org.apache.karaf.shell.console.impl.Main

Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/ConsoleFactory.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/ConsoleFactory.java?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/ConsoleFactory.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/ConsoleFactory.java Fri Jul 13 15:20:43 2012
@@ -28,14 +28,7 @@ import jline.Terminal;
 import org.apache.felix.service.command.CommandProcessor;
 
 public interface ConsoleFactory {
-    Console createAndStart(Subject user,
-            CommandProcessor processor,
-            InputStream in,
-            PrintStream out,
-            PrintStream err,
-            final Terminal term,
-            Runnable closeCallback) throws Exception;
-
-    Console createLocalAndStart(Subject user, CommandProcessor processor, Terminal terminal, Runnable closeCallback)
-            throws Exception;
+    Console create(CommandProcessor processor, InputStream in, PrintStream out, PrintStream err, final Terminal term, Runnable closeCallback);
+    Console createLocal(CommandProcessor processor, Terminal terminal, Runnable closeCallback);
+    void startConsoleAs(Console console, Subject subject);
 }

Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleFactoryService.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleFactoryService.java?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleFactoryService.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleFactoryService.java Fri Jul 13 15:20:43 2012
@@ -24,6 +24,7 @@ import java.security.Principal;
 import java.security.PrivilegedAction;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Properties;
 import java.util.Set;
 
 import javax.security.auth.Subject;
@@ -39,10 +40,8 @@ import org.apache.karaf.shell.console.Co
 public class ConsoleFactoryService implements ConsoleFactory {
     
     @Override
-    public Console createLocalAndStart(Subject user, CommandProcessor processor, final Terminal terminal,
-            Runnable closeCallback) throws Exception {
-        return createAndStart(user, 
-                processor, 
+    public Console createLocal(CommandProcessor processor, final Terminal terminal, Runnable closeCallback) {
+        return create(processor, 
                 StreamWrapUtil.reWrapIn(terminal, System.in), 
                 StreamWrapUtil.reWrap(System.out), 
                 StreamWrapUtil.reWrap(System.err), 
@@ -51,12 +50,10 @@ public class ConsoleFactoryService imple
     }
 
     @Override
-    public Console createAndStart(Subject subject, CommandProcessor processor, InputStream in, PrintStream out, PrintStream err, final Terminal terminal,
-            Runnable closeCallback) throws Exception {
+    public Console create(CommandProcessor processor, InputStream in, PrintStream out, PrintStream err, final Terminal terminal,
+            Runnable closeCallback) {
         ConsoleImpl console = new ConsoleImpl(processor, in, out, err, terminal, closeCallback);
         CommandSession session = console.getSession();
-        String userName = getFirstPrincipalName(subject);
-        session.put("USER", userName);
         session.put("APPLICATION", System.getProperty("karaf.name", "root"));
         session.put("#LINES", new Function() {
             public Object execute(CommandSession session, List<Object> arguments) throws Exception {
@@ -69,9 +66,18 @@ public class ConsoleFactoryService imple
             }
         });
         session.put(".jline.terminal", terminal);
-        startConsoleAs(console, subject);
+        addSystemProperties(session);
         return console;
     }
+
+    private void addSystemProperties(CommandSession session) {
+        Properties sysProps = System.getProperties();
+        Iterator<Object> it = sysProps.keySet().iterator();
+        while (it.hasNext()) {
+            String key = (String) it.next();
+            session.put(key, System.getProperty(key));
+        }
+    }
     
     private String getFirstPrincipalName(Subject user) {
         if (user != null) {
@@ -86,11 +92,15 @@ public class ConsoleFactoryService imple
         return null;
     }
 
-    private void startConsoleAs(final Console console, final Subject subject) {
+    @Override
+    public void startConsoleAs(final Console console, final Subject subject) {
         new Thread(console) {
             @Override
             public void run() {
                 if (subject != null) {
+                    CommandSession session = console.getSession();
+                    String userName = getFirstPrincipalName(subject);
+                    session.put("USER", userName);
                     Subject.doAs(subject, new PrivilegedAction<Object>() {
                         public Object run() {
                             doRun();

Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleImpl.java?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleImpl.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/ConsoleImpl.java Fri Jul 13 15:20:43 2012
@@ -84,7 +84,7 @@ public class ConsoleImpl implements Cons
                    PrintStream out,
                    PrintStream err,
                    Terminal term,
-                   Runnable closeCallback) throws Exception
+                   Runnable closeCallback)
     {
         this.in = in;
         this.out = out;
@@ -97,9 +97,13 @@ public class ConsoleImpl implements Cons
         this.session.put("SUBSHELL", "");
         this.closeCallback = closeCallback;
 
-        reader = new ConsoleReader(this.consoleInput,
-                                   this.out,
-                                   this.terminal);
+        try {
+            reader = new ConsoleReader(this.consoleInput,
+                                       this.out,
+                                       this.terminal);
+        } catch (IOException e) {
+            throw new RuntimeException("Error opening console reader", e);
+        }
 
 		final File file = getHistoryFile();
 		

Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java Fri Jul 13 15:20:43 2012
@@ -82,8 +82,9 @@ public class LocalConsoleManager {
             }
         };
         String agentId = startAgent("karaf");
-        this.console = consoleFactory.createLocalAndStart(subject, this.commandProcessor, terminal, callback);
+        this.console = consoleFactory.createLocal(this.commandProcessor, terminal, callback);
         this.console.getSession().put(SshAgent.SSH_AUTHSOCKET_ENV_NAME, agentId);
+        consoleFactory.startConsoleAs(console, subject);
     }
 
     protected String startAgent(String user) {

Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/StreamWrapUtil.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/StreamWrapUtil.java?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/StreamWrapUtil.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/StreamWrapUtil.java Fri Jul 13 15:20:43 2012
@@ -78,8 +78,12 @@ final class StreamWrapUtil {
         }
     }
 
-    static InputStream reWrapIn(Terminal terminal, InputStream stream) throws IOException {
-        return terminal.wrapInIfNeeded(unwrapBIS(stream));
+    static InputStream reWrapIn(Terminal terminal, InputStream stream) {
+        try {
+            return terminal.wrapInIfNeeded(unwrapBIS(stream));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     static PrintStream reWrap(PrintStream stream) {

Modified: karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java (original)
+++ karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java Fri Jul 13 15:20:43 2012
@@ -105,12 +105,13 @@ public class ShellFactoryImpl implements
                         destroy();
                     }
                 };
-                Console console = consoleFactory.createAndStart(subject, commandProcessor, in,
+                Console console = consoleFactory.create(commandProcessor, in,
                         lfToCrLfPrintStream(out), lfToCrLfPrintStream(err), terminal, destroyCallback);
                 final CommandSession session = console.getSession();
                 for (Map.Entry<String, String> e : env.getEnv().entrySet()) {
                     session.put(e.getKey(), e.getValue());
                 }
+                consoleFactory.startConsoleAs(console, subject);
             } catch (Exception e) {
                 throw (IOException) new IOException("Unable to start shell").initCause(e);
             }

Modified: karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java
URL: http://svn.apache.org/viewvc/karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java?rev=1361269&r1=1361268&r2=1361269&view=diff
==============================================================================
--- karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java (original)
+++ karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java Fri Jul 13 15:20:43 2012
@@ -40,7 +40,6 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.felix.service.command.CommandProcessor;
-import org.apache.felix.service.command.CommandSession;
 import org.apache.karaf.jaas.boot.principal.UserPrincipal;
 import org.apache.karaf.shell.console.Console;
 import org.apache.karaf.shell.console.ConsoleFactory;
@@ -217,12 +216,13 @@ public class GogoPlugin extends Abstract
                 
                 final Subject subject = new Subject();
                 subject.getPrincipals().add(new UserPrincipal("karaf"));
-                consoleFactory.createAndStart(subject, commandProcessor,
+                Console console = consoleFactory.create(commandProcessor,
                                       new PipedInputStream(in),
                                       pipedOut,
                                       pipedOut,
                                       new WebTerminal(TERM_WIDTH, TERM_HEIGHT),
                                       null);
+                consoleFactory.startConsoleAs(console, subject);
             } catch (IOException e) {
                 e.printStackTrace();
                 throw e;