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 2008/10/24 15:53:57 UTC

svn commit: r707634 - in /geronimo/gshell/trunk: gshell-assembly/src/main/underlay/etc/ gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/ gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshel...

Author: jdillon
Date: Fri Oct 24 06:53:56 2008
New Revision: 707634

URL: http://svn.apache.org/viewvc?rev=707634&view=rev
Log:
Add a resolver to handle decoding the gshell.group muck

Added:
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/GroupDirectoryResolver.java   (with props)
Modified:
    geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/CommandsCompleter.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandResolverImpl.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml

Modified: geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml?rev=707634&r1=707633&r2=707634&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml (original)
+++ geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml Fri Oct 24 06:53:56 2008
@@ -47,9 +47,9 @@
                 </bean>
                 
                 <!--
-                <bean class="org.apache.geronimo.gshell.application.model.Artifact">
-                    <property name="groupId" value="org.apache.geronimo.gshell.support"/>
-                    <property name="artifactId" value="gshell-vfs-truezip"/>
+                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
+                    <property name="group" value="org.apache.geronimo.gshell.support"/>
+                    <property name="artifact" value="gshell-vfs-truezip"/>
                     <property name="version" value="1.0-alpha-2-SNAPSHOT"/>
                 </bean>
                 -->
@@ -64,43 +64,43 @@
                     <property name="version" value="1.0-alpha-2-SNAPSHOT"/>
                 </bean>
 
-                <!--
-                <bean class="org.apache.geronimo.gshell.application.model.Artifact">
-                    <property name="groupId" value="org.apache.geronimo.gshell.commands"/>
-                    <property name="artifactId" value="gshell-vfs"/>
+                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
+                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
+                    <property name="artifact" value="gshell-vfs"/>
                     <property name="version" value="1.0-alpha-2-SNAPSHOT"/>
                 </bean>
 
-                <bean class="org.apache.geronimo.gshell.application.model.Artifact">
-                    <property name="groupId" value="org.apache.geronimo.gshell.commands"/>
-                    <property name="artifactId" value="gshell-admin"/>
+                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
+                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
+                    <property name="artifact" value="gshell-admin"/>
                     <property name="version" value="1.0-alpha-2-SNAPSHOT"/>
                 </bean>
 
-                <bean class="org.apache.geronimo.gshell.application.model.Artifact">
-                    <property name="groupId" value="org.apache.geronimo.gshell.commands"/>
-                    <property name="artifactId" value="gshell-optional"/>
+                <!--
+                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
+                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
+                    <property name="artifact" value="gshell-optional"/>
                     <property name="version" value="1.0-alpha-2-SNAPSHOT"/>
                 </bean>
 
-                <bean class="org.apache.geronimo.gshell.application.model.Artifact">
-                    <property name="groupId" value="org.apache.geronimo.gshell.commands"/>
-                    <property name="artifactId" value="gshell-log4j"/>
+                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
+                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
+                    <property name="artifact" value="gshell-log4j"/>
                     <property name="version" value="1.0-alpha-2-SNAPSHOT"/>
                 </bean>
 
-                <bean class="org.apache.geronimo.gshell.application.model.Artifact">
-                    <property name="groupId" value="org.apache.geronimo.gshell.commands"/>
-                    <property name="artifactId" value="gshell-bsf"/>
+                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
+                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
+                    <property name="artifact" value="gshell-bsf"/>
                     <property name="version" value="1.0-alpha-2-SNAPSHOT"/>
                 </bean>
+                -->
 
-                <bean class="org.apache.geronimo.gshell.application.model.Artifact">
-                    <property name="groupId" value="org.apache.geronimo.gshell.commands"/>
-                    <property name="artifactId" value="gshell-remote"/>
+                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
+                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
+                    <property name="artifact" value="gshell-remote"/>
                     <property name="version" value="1.0-alpha-2-SNAPSHOT"/>
                 </bean>
-                -->
             </list>
         </property>
     </bean>

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/CommandsCompleter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/CommandsCompleter.java?rev=707634&r1=707633&r2=707634&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/CommandsCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/CommandsCompleter.java Fri Oct 24 06:53:56 2008
@@ -29,7 +29,6 @@
 import org.apache.geronimo.gshell.event.EventListener;
 import org.apache.geronimo.gshell.event.EventManager;
 import org.apache.geronimo.gshell.registry.CommandRegistry;
-import org.apache.geronimo.gshell.vfs.FileSystemAccess;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaDataRegisteredEvent;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaDataRemovedEvent;
 import org.apache.geronimo.gshell.wisdom.registry.CommandRegisteredEvent;
@@ -100,11 +99,11 @@
                 }
                 else if (event instanceof MetaDataRegisteredEvent) {
                     MetaDataRegisteredEvent targetEvent = (MetaDataRegisteredEvent)event;
-                    log.debug("{}", targetEvent.getName());
+                    log.debug("+ {}", targetEvent.getName());
                 }
                 else if (event instanceof MetaDataRemovedEvent) {
                     MetaDataRemovedEvent targetEvent = (MetaDataRemovedEvent)event;
-                    log.debug("{}", targetEvent.getName());
+                    log.debug("- {}", targetEvent.getName());
                 }
             }
         });

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java?rev=707634&r1=707633&r2=707634&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java Fri Oct 24 06:53:56 2008
@@ -26,6 +26,7 @@
 import org.apache.geronimo.gshell.event.EventListener;
 import org.apache.geronimo.gshell.event.EventManager;
 import org.apache.geronimo.gshell.registry.AliasRegistry;
+import org.apache.geronimo.gshell.registry.CommandResolver;
 import org.apache.geronimo.gshell.vfs.provider.meta.MetaFileNameParser;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaData;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaDataRegistry;
@@ -82,7 +83,7 @@
 
     private FileName createName(final String name) throws FileSystemException {
         assert name != null;
-        return nameParser.parseUri("/aliases/" + name);
+        return nameParser.parseUri(CommandResolver.ALIASES_ROOT + "/" + name);
     }
 
     private void add(final String name, final String alias) throws Exception {

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java?rev=707634&r1=707633&r2=707634&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java Fri Oct 24 06:53:56 2008
@@ -27,6 +27,7 @@
 import org.apache.geronimo.gshell.event.EventListener;
 import org.apache.geronimo.gshell.event.EventManager;
 import org.apache.geronimo.gshell.registry.CommandRegistry;
+import org.apache.geronimo.gshell.registry.CommandResolver;
 import org.apache.geronimo.gshell.vfs.provider.meta.MetaFileNameParser;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaData;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaDataRegistry;
@@ -83,7 +84,7 @@
 
     private FileName createName(final String name) throws FileSystemException {
         assert name != null;
-        return nameParser.parseUri("/commands/" + name);
+        return nameParser.parseUri(CommandResolver.COMMANDS_ROOT + "/" + name);
     }
 
     private void add(final String name, final Command command) throws Exception {

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandResolverImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandResolverImpl.java?rev=707634&r1=707633&r2=707634&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandResolverImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandResolverImpl.java Fri Oct 24 06:53:56 2008
@@ -53,6 +53,8 @@
 
     private final FileSystemAccess fileSystemAccess;
 
+    private final GroupDirectoryResolver groupDirResolver;
+
     //
     // TODO: Consider using FileSystemManager.createVirtualFileSystem() to chroot for resolving?
     //
@@ -63,9 +65,12 @@
 
     private BeanContainer container;
 
-    public CommandResolverImpl(final FileSystemAccess fileSystemAccess) {
+    public CommandResolverImpl(final FileSystemAccess fileSystemAccess, final GroupDirectoryResolver groupDirResolver) {
         assert fileSystemAccess != null;
         this.fileSystemAccess = fileSystemAccess;
+
+        assert groupDirResolver != null;
+        this.groupDirResolver = groupDirResolver;
     }
 
     public void setBeanContainer(final BeanContainer container) {
@@ -159,14 +164,14 @@
             return getCommandsDirectory();
         }
         else if (name.equals(".")) {
-            return getGroupDirectory(variables);
+            return groupDirResolver.getGroupDirectory(variables);
         }
         
         Collection<String> searchPath = getSearchPath(variables);
 
         log.trace("Search path: {}", searchPath);
 
-        FileObject groupDir = getGroupDirectory(variables);
+        FileObject groupDir = groupDirResolver.getGroupDirectory(variables);
 
         log.trace("Group dir: {}", groupDir);
 
@@ -300,37 +305,6 @@
         return aliasesDirectory;
     }
 
-    private FileObject getGroupDirectory(final Variables vars) throws FileSystemException {
-        assert vars != null;
-
-        FileObject dir;
-
-        Object tmp = vars.get(GROUP);
-
-        if (tmp == null) {
-            dir = getCommandsDirectory();
-        }
-        else if (tmp instanceof String) {
-            log.trace("Resolving group directory from string: {}", tmp);
-            dir = fileSystemAccess.resolveFile(null, (String)tmp);
-        }
-        else if (tmp instanceof FileObject) {
-            dir = (FileObject)tmp;
-        }
-        else {
-            // Complain, then use the default so commands still work
-            log.error("Invalid type for variable '" + GROUP + "'; expected String or FileObject; found: " + tmp.getClass());
-            dir = getCommandsDirectory();
-        }
-
-        if (!isMetaFile(dir)) {
-            log.error("Command group did not resolve to a meta-file: {}", dir);
-            dir = getCommandsDirectory();
-        }
-
-        return dir;
-    }
-
     private Command createCommand(final FileObject file) throws FileSystemException, CommandException {
         assert file != null;
 

Added: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/GroupDirectoryResolver.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/GroupDirectoryResolver.java?rev=707634&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/GroupDirectoryResolver.java (added)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/GroupDirectoryResolver.java Fri Oct 24 06:53:56 2008
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.wisdom.registry;
+
+import org.apache.commons.vfs.FileObject;
+import org.apache.commons.vfs.FileSystemException;
+import org.apache.geronimo.gshell.command.Variables;
+import org.apache.geronimo.gshell.registry.CommandResolver;
+import org.apache.geronimo.gshell.vfs.FileSystemAccess;
+import org.apache.geronimo.gshell.vfs.provider.meta.MetaFileName;
+import org.apache.geronimo.gshell.shell.ShellContextHolder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Resolves to location of <tt>gshell.group</tt>.
+ *
+ * @version $Rev$ $Date$
+ */
+public class GroupDirectoryResolver
+{
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
+    private final FileSystemAccess fileSystemAccess;
+
+    private FileObject commandsDirectory;
+
+    public GroupDirectoryResolver(final FileSystemAccess fileSystemAccess) {
+        assert fileSystemAccess != null;
+        this.fileSystemAccess = fileSystemAccess;
+    }
+
+    public FileObject getGroupDirectory(final Variables vars) throws FileSystemException {
+        assert vars != null;
+
+        FileObject dir;
+
+        Object tmp = vars.get(CommandResolver.GROUP);
+
+        if (tmp == null) {
+            dir = getCommandsDirectory();
+        }
+        else if (tmp instanceof String) {
+            log.trace("Resolving group directory from string: {}", tmp);
+            dir = fileSystemAccess.resolveFile(null, (String)tmp);
+        }
+        else if (tmp instanceof FileObject) {
+            dir = (FileObject)tmp;
+        }
+        else {
+            // Complain, then use the default so commands still work
+            log.error("Invalid type for variable '" + CommandResolver.GROUP + "'; expected String or FileObject; found: " + tmp.getClass());
+            dir = getCommandsDirectory();
+        }
+
+        if (!isMetaFile(dir)) {
+            log.error("Command group did not resolve to a meta-file: {}", dir);
+            dir = getCommandsDirectory();
+        }
+
+        return dir;
+    }
+
+    public FileObject getGroupDirectory() throws FileSystemException {
+        return getGroupDirectory(ShellContextHolder.get().getVariables());
+    }
+
+    private boolean isMetaFile(final FileObject file) {
+        assert file != null;
+
+        return MetaFileName.SCHEME.equals(file.getName().getScheme());
+    }
+
+    private FileObject getCommandsDirectory() throws FileSystemException {
+        if (commandsDirectory == null) {
+            commandsDirectory = fileSystemAccess.resolveFile(null, CommandResolver.COMMANDS_ROOT);
+        }
+
+        return commandsDirectory;
+    }
+
+}
\ No newline at end of file

Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/GroupDirectoryResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/GroupDirectoryResolver.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/GroupDirectoryResolver.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml?rev=707634&r1=707633&r2=707634&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml Fri Oct 24 06:53:56 2008
@@ -189,8 +189,13 @@
         <constructor-arg ref="commandRegistry"/>
     </bean>
 
+    <bean id="groupDirResolver" class="org.apache.geronimo.gshell.wisdom.registry.GroupDirectoryResolver">
+        <constructor-arg ref="fileSystemAccess"/>
+    </bean>
+
     <bean id="commandResolver" class="org.apache.geronimo.gshell.wisdom.registry.CommandResolverImpl">
         <constructor-arg ref="fileSystemAccess"/>
+        <constructor-arg ref="groupDirResolver"/>
     </bean>
 
     <bean class="org.apache.geronimo.gshell.wisdom.command.AliasCommand" scope="prototype">