[maven-release-plugin]  copy for tag karaf-2.1.2

git-svn-id: https://svn.apache.org/repos/asf/karaf/tags/karaf-2.1.2@1037319 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index f32761b..3f90f7f 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -31,6 +31,9 @@
     * [KARAF-273] - java.lang.NullPointerException: Inflater has been closed
     * [KARAF-277] - The bin/client script does not work anymore
     * [KARAF-262] - The command admin create new instance cannot create good script in bash language on cygwin
+    * [KARAF-284] - Remove snapshot dependency on org.apache.karaf.shell.console in archetypes/command/src/main/resources/archetype-resources/pom.xml
+    * [KARAF-285] - The bin/shell script should not read the input stream when a command is passed
+    * [KARAF-286] - When running in the plain shell console (using bin/shell), tab completion prints lots of exceptions
 
 ** Task
     * [KARAF-276] - upgrade to pax-url 1.2.1
diff --git a/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java b/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
index c8edd50..1be67cf 100644
--- a/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
+++ b/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
@@ -170,7 +170,9 @@
         copyFilteredResourceToDir(karafBase, "etc/system.properties", props);
         copyFilteredResourceToDir(karafBase, "etc/org.apache.karaf.shell.cfg", props);
         // If we use batch files, use batch files, else use bash scripts (even on cygwin)
-        if( new File( System.getProperty("karaf.home"), "bin/admin.bat" ).exists() ) {
+        boolean windows = System.getProperty("os.name").startsWith("Win");
+        boolean cygwin = windows && new File( System.getProperty("karaf.home"), "bin/admin" ).exists();
+        if( windows && !cygwin ) {
             copyFilteredResourceToDir(karafBase, "bin/karaf.bat", props);
             copyFilteredResourceToDir(karafBase, "bin/start.bat", props);
             copyFilteredResourceToDir(karafBase, "bin/stop.bat", props);
@@ -178,9 +180,11 @@
             copyFilteredResourceToDir(karafBase, "bin/karaf", props);
             copyFilteredResourceToDir(karafBase, "bin/start", props);
             copyFilteredResourceToDir(karafBase, "bin/stop", props);
-            chmod(new File(karafBase, "bin/karaf"), "a+x");
-            chmod(new File(karafBase, "bin/start"), "a+x");
-            chmod(new File(karafBase, "bin/stop"), "a+x");
+            if ( !cygwin ) {
+                chmod(new File(karafBase, "bin/karaf"), "a+x");
+                chmod(new File(karafBase, "bin/start"), "a+x");
+                chmod(new File(karafBase, "bin/stop"), "a+x");
+            }
         }
         
         handleFeatures(new File(karafBase, FEATURES_CFG), settings);
diff --git a/archetypes/command/pom.xml b/archetypes/command/pom.xml
index 1d1be8e..2bbd0df 100644
--- a/archetypes/command/pom.xml
+++ b/archetypes/command/pom.xml
@@ -16,38 +16,59 @@
   limitations under the License.
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
+    <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.apache.karaf</groupId>
         <artifactId>archetypes</artifactId>
         <version>2.1.2</version>
     </parent>
-    
-  <groupId>org.apache.karaf.archetypes</groupId>
-  <artifactId>archetypes-command</artifactId>
-  <version>2.1.2</version>
 
-  <name>Apache Karaf :: Command Archetype</name>
+    <groupId>org.apache.karaf.archetypes</groupId>
+    <artifactId>archetypes-command</artifactId>
+    <version>2.1.2</version>
 
-  <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.archetype</groupId>
-        <artifactId>archetype-packaging</artifactId>
-        <version>2.0-alpha-5</version>
-      </extension>
-    </extensions>
+    <name>Apache Karaf :: Command Archetype</name>
 
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <artifactId>maven-archetype-plugin</artifactId>
-          <version>2.0-alpha-5</version>
-          <extensions>true</extensions>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
+    <build>
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/resources</directory>
+                <filtering>true</filtering>
+                <includes>
+                    <include>**/*</include>
+                </includes>
+            </resource>
+        </resources>
+
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.archetype</groupId>
+                <artifactId>archetype-packaging</artifactId>
+                <version>2.0-alpha-5</version>
+            </extension>
+        </extensions>
+
+        <plugins>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <delimiters>
+                        <delimiter>^*^</delimiter>
+                    </delimiters>
+                </configuration>
+            </plugin>
+        </plugins>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <artifactId>maven-archetype-plugin</artifactId>
+                    <version>2.0-alpha-5</version>
+                    <extensions>true</extensions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
 
 </project>
diff --git a/archetypes/command/src/main/resources/archetype-resources/pom.xml b/archetypes/command/src/main/resources/archetype-resources/pom.xml
index 494cc59..6425704 100644
--- a/archetypes/command/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/command/src/main/resources/archetype-resources/pom.xml
@@ -26,28 +26,29 @@
     <description>Provides the OSGi ${scope} commands</description>

 

     <properties>

-        <junit.version>4.7_1</junit.version>

-        <felix.osgi.version>1.4.0</felix.osgi.version>

+        <junit.version>^junit.bundle.version^</junit.version>

+        <osgi.version>4.2.0</osgi.version>

+        <karaf.version>^project.version^</karaf.version>

     </properties>

 

     <dependencies>

         <dependency>

             <groupId>org.apache.karaf.shell</groupId>

             <artifactId>org.apache.karaf.shell.console</artifactId>

-            <version>2.0.1-SNAPSHOT</version>

+            <version>${karaf.version}</version>

         </dependency>

 

         <dependency>

-            <groupId>org.apache.felix</groupId>

+            <groupId>org.osgi</groupId>

             <artifactId>org.osgi.core</artifactId>

-            <version>${felix.osgi.version}</version>

+            <version>${osgi.version}</version>

             <scope>provided</scope>

         </dependency>

 

         <dependency>

-            <groupId>org.apache.felix</groupId>

+            <groupId>org.osgi</groupId>

             <artifactId>org.osgi.compendium</artifactId>

-            <version>${felix.osgi.version}</version>

+            <version>${osgi.version}</version>

             <scope>provided</scope>

         </dependency>

 

diff --git a/pom.xml b/pom.xml
index e6949a8..a63c251 100644
--- a/pom.xml
+++ b/pom.xml
@@ -893,7 +893,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-resources-plugin</artifactId>
-                    <version>2.3</version>
+                    <version>2.4.3</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.servicemix.tooling</groupId>
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/CatAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/CatAction.java
index a3ffbb3..d85ba2e 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/CatAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/CatAction.java
@@ -18,17 +18,14 @@
 
 import java.io.IOException;
 import java.io.BufferedReader;
-import java.io.InputStream;
 import java.io.FileReader;
 import java.io.File;
 import java.io.InputStreamReader;
 import java.net.URL;
-import java.net.URI;
 import java.net.MalformedURLException;
 import java.util.List;
 
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Option;
 import org.apache.felix.gogo.commands.Command;
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/ClearAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/ClearAction.java
index d30f10c..c44bd7f 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/ClearAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/ClearAction.java
@@ -18,7 +18,6 @@
 
 import org.apache.felix.gogo.commands.Command;
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 
 /**
  * A command to clear the console buffer
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/EchoAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/EchoAction.java
index b198261..cbe9abf 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/EchoAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/EchoAction.java
@@ -22,7 +22,6 @@
 import org.apache.felix.gogo.commands.Option;
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 
 @Command(scope = "shell", name = "echo", description="Echoes or prints arguments to STDOUT")
 public class EchoAction extends AbstractAction
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java
index 518afac..8e4bd1c 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java
@@ -22,7 +22,6 @@
 import org.apache.felix.gogo.commands.Command;
 import org.apache.karaf.shell.commands.utils.PumpStreamHandler;
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 
 /**
  * Execute system processes.
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java
index aaf5857..6a8079c 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java
@@ -27,7 +27,6 @@
 import java.util.regex.Pattern;
 
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Option;
 import org.apache.felix.gogo.commands.Command;
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/JavaAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/JavaAction.java
index 8ea4fb4..7750182 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/JavaAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/JavaAction.java
@@ -23,7 +23,6 @@
 import org.apache.felix.gogo.commands.Command;
 import org.apache.felix.gogo.commands.Option;
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 
 /**
  * Execute a Java standard application.
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/LogoutAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/LogoutAction.java
index 5e7fc81..753d751 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/LogoutAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/LogoutAction.java
@@ -19,9 +19,6 @@
 import org.apache.felix.gogo.commands.Command;
 import org.apache.karaf.shell.console.AbstractAction;
 import org.apache.karaf.shell.console.CloseShellException;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @Command(scope = "shell", name = "logout", description = "Disconnect shell from current session")
 public class LogoutAction extends AbstractAction {
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java
index 3164ea4..a849761 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java
@@ -16,6 +16,13 @@
  */
 package org.apache.karaf.shell.commands;
 
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.converter.DefaultConverter;
+import org.apache.felix.gogo.commands.converter.ReifiedType;
+import org.apache.felix.gogo.commands.converter.GenericType;
+import org.apache.karaf.shell.console.AbstractAction;
+
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Type;
@@ -27,17 +34,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.felix.gogo.commands.Argument;
-import org.apache.felix.gogo.commands.Command;
-import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.apache.karaf.shell.console.commands.GenericType;
-import org.osgi.service.blueprint.container.ComponentDefinitionException;
-import org.osgi.service.blueprint.container.Converter;
-import org.osgi.service.blueprint.container.ReifiedType;
-
 /**
- * Execute a closure on a list of arguments.
+ * Instanciate a new object
  */
 @Command(scope = "shell", name = "new", description = "Creates a new java object.")
 public class NewAction extends AbstractAction {
@@ -50,11 +48,7 @@
 
     boolean reorderArguments;
 
-    protected Converter blueprintConverter;
-
-    public void setBlueprintConverter(Converter blueprintConverter) {
-        this.blueprintConverter = blueprintConverter;
-    }
+    protected DefaultConverter converter = new DefaultConverter(getClass().getClassLoader());
 
     @Override
     protected Object doExecute() throws Exception {
@@ -68,12 +62,12 @@
                 Map.Entry<Constructor, List<Object>> match = matches.entrySet().iterator().next();
                 return newInstance(match.getKey(), match.getValue().toArray());
             } catch (Throwable e) {
-                throw new ComponentDefinitionException("Error when instanciating object of class " + clazz.getName(), getRealCause(e));
+                throw new Exception("Error when instanciating object of class " + clazz.getName(), getRealCause(e));
             }
         } else if (matches.size() == 0) {
-            throw new ComponentDefinitionException("Unable to find a matching constructor on class " + clazz.getName() + " for arguments " + args + " when instanciating object.");
+            throw new Exception("Unable to find a matching constructor on class " + clazz.getName() + " for arguments " + args + " when instanciating object.");
         } else {
-            throw new ComponentDefinitionException("Multiple matching constructors found on class " + clazz.getName() + " for arguments " + args + " when instanciating object: " + matches.keySet());
+            throw new Exception("Multiple matching constructors found on class " + clazz.getName() + " for arguments " + args + " when instanciating object: " + matches.keySet());
         }
     }
 
@@ -188,11 +182,11 @@
     }
 
     protected Object convert(Object obj, Type type) throws Exception {
-        return blueprintConverter.convert(obj,  new GenericType(type));
+        return converter.convert(obj, new GenericType(type));
     }
 
     protected Object convert(Object obj, ReifiedType type) throws Exception {
-        return blueprintConverter.convert(obj,  type);
+        return converter.convert(obj, type);
     }
 
     public static boolean isAssignable(Object source, ReifiedType target) {
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/PrintfAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/PrintfAction.java
index bec02a1..d8c966f 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/PrintfAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/PrintfAction.java
@@ -19,7 +19,6 @@
 import java.util.Collection;
 
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Command;
 
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/SleepAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/SleepAction.java
index e9ad3ef..059d09c 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/SleepAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/SleepAction.java
@@ -17,7 +17,6 @@
 package org.apache.karaf.shell.commands;
 
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Command;
 
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/SortAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/SortAction.java
index 9da9525..fb0244c 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/SortAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/SortAction.java
@@ -38,7 +38,6 @@
 import org.apache.felix.gogo.commands.Command;
 import org.apache.felix.gogo.commands.Option;
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 
 /**
  * Sort lines of text
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/TacAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/TacAction.java
index 03078a7..b951b6d 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/TacAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/TacAction.java
@@ -28,7 +28,6 @@
 import java.io.Writer;
 
 import org.apache.karaf.shell.console.AbstractAction;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.apache.felix.gogo.commands.Command;
 import org.apache.felix.gogo.commands.Option;
 
diff --git a/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml b/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
index 1d07c13..b6d4a7b 100644
--- a/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
+++ b/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
@@ -56,9 +56,7 @@
         </command>
         -->
         <command name="shell/new">
-            <action class="org.apache.karaf.shell.commands.NewAction">
-                <property name="blueprintConverter" ref="blueprintConverter"/>
-            </action>
+            <action class="org.apache.karaf.shell.commands.NewAction"/>
         </command>
         <command name="shell/logout">
             <action class="org.apache.karaf.shell.commands.LogoutAction"/>
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java b/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java
index 5b16077..2c13e54 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java
@@ -133,16 +133,6 @@
     }
 
     private void run(final CommandShellImpl commandProcessor, String[] args, final InputStream in, final PrintStream out, final PrintStream err) throws Exception {
-        TerminalFactory terminalFactory = new TerminalFactory();
-        Terminal terminal = terminalFactory.getTerminal();
-        Console console = createConsole(commandProcessor, in, out, err, terminal);
-        CommandSession session = console.getSession();
-        session.put("USER", user);
-        session.put("APPLICATION", application);
-        session.put("LINES", Integer.toString(terminal.getTerminalHeight()));
-        session.put("COLUMNS", Integer.toString(terminal.getTerminalWidth()));
-        session.put(".jline.terminal", terminal);
-        session.put(NameScoping.MULTI_SCOPE_MODE_KEY, Boolean.toString(isMultiScopeMode()));
 
         if (args.length > 0) {
             StringBuilder sb = new StringBuilder();
@@ -152,6 +142,13 @@
                 }
                 sb.append(args[i]);
             }
+
+            // Shell is directly executing a sub/command, we don't setup a terminal and console
+            // in this case, this avoids us reading from stdin un-necessarily.
+            CommandSession session = commandProcessor.createSession(in,out, err);
+            session.put("USER", user);
+            session.put("APPLICATION", application);
+            session.put(NameScoping.MULTI_SCOPE_MODE_KEY, Boolean.toString(isMultiScopeMode()));
             try {
                 session.execute(sb);
             } catch (Throwable t) {
@@ -164,10 +161,22 @@
                 }
             }
         } else {
-            console.run();
-        }
 
-        terminalFactory.destroy();
+            // We are going into full blown interactive shell mode.
+            TerminalFactory terminalFactory = new TerminalFactory();
+            Terminal terminal = terminalFactory.getTerminal();
+            Console console = createConsole(commandProcessor, in, out, err, terminal);
+            CommandSession session = console.getSession();
+            session.put("LINES", Integer.toString(terminal.getTerminalHeight()));
+            session.put("COLUMNS", Integer.toString(terminal.getTerminalWidth()));
+            session.put(".jline.terminal", terminal);
+            session.put("USER", user);
+            session.put("APPLICATION", application);
+            session.put(NameScoping.MULTI_SCOPE_MODE_KEY, Boolean.toString(isMultiScopeMode()));
+
+            console.run();
+            terminalFactory.destroy();
+        }
     }
 
     /**