You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2006/06/05 00:32:45 UTC

svn commit: r411612 - in /geronimo/sandbox/gshell/trunk: gshell-api/src/main/java/org/apache/geronimo/gshell/command/ gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/ gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/

Author: jdillon
Date: Sun Jun  4 15:32:44 2006
New Revision: 411612

URL: http://svn.apache.org/viewvc?rev=411612&view=rev
Log:
Force name of variables to be proper java identifiers

Added:
    geronimo/sandbox/gshell/trunk/gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/SetCommandTest.java   (with props)
Modified:
    geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java
    geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandManager.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java

Modified: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java?rev=411612&r1=411611&r2=411612&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java Sun Jun  4 15:32:44 2006
@@ -35,6 +35,8 @@
 
     private final boolean enabled;
 
+    private final String category;
+
     public CommandDefinition(final Properties props) throws InvalidDefinitionException {
         if (props == null) {
             throw new IllegalArgumentException("Properties is null");
@@ -53,6 +55,19 @@
         this.aliases = loadAliasesFrom(props);
 
         this.enabled = Boolean.getBoolean(props.getProperty("enable"));
+
+        this.category = props.getProperty("category");
+        if (category == null) {
+            throw new MissingPropertyException("category", props);
+        }
+    }
+
+    public String toString() {
+        return getName() + "=" + getClassName() +
+                "{ aliases=" + Arguments.asString(getAliases()) +
+                ", enabled=" + enabled +
+                ", category=" + category +
+                " }";
     }
 
     //
@@ -91,10 +106,8 @@
         return enabled;
     }
 
-    public String toString() {
-        return getName() + "=" + getClassName() + "{ aliases=" +
-                Arguments.asString(getAliases()) +
-                " }";
+    public String getCategory() {
+        return category;
     }
 
     public Class loadClass() throws ClassNotFoundException {

Modified: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandManager.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandManager.java?rev=411612&r1=411611&r2=411612&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandManager.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandManager.java Sun Jun  4 15:32:44 2006
@@ -20,8 +20,8 @@
 import java.util.Collection;
 
 /**
- * Interface for manager of command definitions and provides access to command instances.
- *
+ * Interface for manager of command definitions.
+ * 
  * @version $Id$
  */
 public interface CommandManager

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java?rev=411612&r1=411611&r2=411612&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java Sun Jun  4 15:32:44 2006
@@ -55,7 +55,7 @@
     public void setCommandManager(final CommandManager commandManager) {
         this.commandManager = commandManager;
     }
-    
+
     */
 
     private CommandManager getCommandManager() {
@@ -163,6 +163,7 @@
             //
 
             io.err.println("Pending... sorry");
+            io.err.println();
         }
 
         return Command.SUCCESS;

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java?rev=411612&r1=411611&r2=411612&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java Sun Jun  4 15:32:44 2006
@@ -176,11 +176,39 @@
         return nv;
     }
 
+    private boolean isIdentifier(final String name) {
+        if (name == null || name.length() == 0) {
+            return false;
+        }
+
+        char[] chars = name.toCharArray();
+
+        if (!Character.isJavaIdentifierStart(chars[0])) {
+            return false;
+        }
+
+        for (int i=1; i<chars.length; i++) {
+            if (!Character.isJavaIdentifierPart(chars[i])) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    private void ensureIsIdentifier(final String name) {
+        if (!isIdentifier(name)) {
+            throw new RuntimeException("Invalid identifer name: " + name);
+        }
+    }
+
     private void setProperty(final String namevalue) {
         NameValue nv = parse(namevalue);
 
         log.info("Setting system property: " + nv.name + "=" + nv.value);
 
+        ensureIsIdentifier(nv.name);
+        
         System.setProperty(nv.name, nv.value);
     }
 
@@ -188,6 +216,8 @@
         NameValue nv = parse(namevalue);
 
         log.info("Setting variable: " + nv.name + "=" + nv.value);
+
+        ensureIsIdentifier(nv.name);
 
         // Command vars always has a parent, set only makes sence when setting in parent's scope
         Variables vars = this.getVariables().parent();

Added: geronimo/sandbox/gshell/trunk/gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/SetCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/SetCommandTest.java?rev=411612&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/SetCommandTest.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/SetCommandTest.java Sun Jun  4 15:32:44 2006
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.gshell.testsuite;
+
+import junit.framework.TestCase;
+import org.apache.geronimo.gshell.Shell;
+import org.apache.geronimo.gshell.console.IO;
+
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public class SetCommandTest
+    extends TestCase
+{
+    public void testSimple() throws Exception {
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        IO io = new IO(System.in, out);
+
+        Shell shell = new Shell(io);
+        shell.execute("set", "a=b");
+
+        assertEquals("b", shell.getVariables().get("a"));
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/SetCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/SetCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/gshell/trunk/gshell-testsuite/src/test/java/org/apache/geronimo/gshell/testsuite/SetCommandTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain