On Nov 30, 2009, at 3:08 AM, Sergiu Dumitriu wrote:
On 11/29/2009 11:56 PM, fmancinelli (SVN) wrote:
Author: fmancinelli Date: 2009-11-29 23:56:23 +0100 (Sun, 29 Nov 2009) New Revision: 25362
Added: contrib/people/fmancinelli/ contrib/people/fmancinelli/xwiki-command/ contrib/people/fmancinelli/xwiki-command/README.txt contrib/people/fmancinelli/xwiki-command/pom.xml contrib/people/fmancinelli/xwiki-command/src/ contrib/people/fmancinelli/xwiki-command/src/main/ contrib/people/fmancinelli/xwiki-command/src/main/java/ contrib/people/fmancinelli/xwiki-command/src/main/java/META-INF/ contrib/people/fmancinelli/xwiki-command/src/main/java/META-INF/ MANIFEST.MF contrib/people/fmancinelli/xwiki-command/src/main/java/org/ contrib/people/fmancinelli/xwiki-command/src/main/java/org/xwiki/ contrib/people/fmancinelli/xwiki-command/src/main/java/org/xwiki/ command/ contrib/people/fmancinelli/xwiki-command/src/main/java/org/xwiki/ command/Command.java contrib/people/fmancinelli/xwiki-command/src/main/java/org/xwiki/ command/CommandResource.java contrib/people/fmancinelli/xwiki-command/src/main/java/org/xwiki/ command/commands/ contrib/people/fmancinelli/xwiki-command/src/main/java/org/xwiki/ command/commands/LS.java contrib/people/fmancinelli/xwiki-command/src/main/resources/ contrib/people/fmancinelli/xwiki-command/src/main/resources/META- INF/ contrib/people/fmancinelli/xwiki-command/src/main/resources/META- INF/components.txt Log: [Initial import] A proof of concept for a "command line" XWiki interface based on HTTP.
Added: contrib/people/fmancinelli/xwiki-command/README.txt =================================================================== --- contrib/people/fmancinelli/xwiki-command/ README.txt (rev 0) +++ contrib/people/fmancinelli/xwiki-command/README.txt 2009-11-29 22:56:23 UTC (rev 25362) @@ -0,0 +1,9 @@ +This module adds a resource to the XWiki REST subsystem for executing commands. +This resource accepts text/plain POSTs containing a command line and sends back +responses in text/plain containing the result of the execution of the command. + +A simple "ls" command which lists the spaces in a wiki is provided. + +Clients can send commands using cURL in this way: + +curl -d "ls" -H "Content-type: text/plain" http://localhost:8080/xwiki/rest/command
Added: contrib/people/fmancinelli/xwiki-command/src/main/java/org/ xwiki/command/Command.java =================================================================== --- contrib/people/fmancinelli/xwiki-command/src/main/java/org/ xwiki/command/Command.java (rev 0) +++ contrib/people/fmancinelli/xwiki-command/src/main/java/org/ xwiki/command/Command.java 2009-11-29 22:56:23 UTC (rev 25362) @@ -0,0 +1,28 @@ +package org.xwiki.command; + +import org.xwiki.component.annotation.ComponentRole; +import org.xwiki.component.manager.ComponentManager; + +/** + *<p> + * This is the command interface. Each command should implement this interface and be annotated with a @Component + * annotation for declaring its name. Don't forget to add the FQN of the command in the META-INF/components.txt + * otherwise it will not be visible. + *</p> + */ +@ComponentRole +public interface Command +{ + /** + *<p> + * Execute the command + *</p> + * + * @param componentManager The XWiki component manager for looking up the XWiki components needed for executing the + * command. + * @param arguments The arguments extracted from the command line. + * @return A String containing the result of the execution of the command. + * @throws Exception + */
Why do you pass the component manager around? Each component implementation can declare a dependency on ComponentManager if it needs it.
I agree it's an implementation details. Even if not using Components, it should be passed in the constructor. -Vincent
+ String execute(ComponentManager componentManager, String... arguments) throws Exception; +}