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/03 23:45:25 UTC
svn commit: r411473 - in /geronimo/sandbox/gshell/trunk:
gshell-api/src/main/java/org/apache/geronimo/gshell/command/
gshell-core/src/main/java/org/apache/geronimo/gshell/
gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/
gshell-core/src/m...
Author: jdillon
Date: Sat Jun 3 14:45:25 2006
New Revision: 411473
URL: http://svn.apache.org/viewvc?rev=411473&view=rev
Log:
Introduced simple Spring-like MessageSource for commands to pull messages from
Added:
geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/MessageSource.java (with props)
geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java (with props)
geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MessageSourceImplTest.java (with props)
geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/
geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/
geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/
geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/
geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/
geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/MessageSourceImplTest.properties (with props)
Modified:
geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java
geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.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/CommandContext.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java?rev=411473&r1=411472&r2=411473&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java Sat Jun 3 14:45:25 2006
@@ -28,4 +28,6 @@
IO getIO();
Variables getVariables();
+
+ MessageSource getMessageSource();
}
Modified: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java?rev=411473&r1=411472&r2=411473&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java Sat Jun 3 14:45:25 2006
@@ -160,6 +160,10 @@
return getCommandContext().getIO();
}
+ protected MessageSource getMessageSource() {
+ return getCommandContext().getMessageSource();
+ }
+
//
// Execute Helpers
//
Added: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/MessageSource.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/MessageSource.java?rev=411473&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/MessageSource.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/MessageSource.java Sat Jun 3 14:45:25 2006
@@ -0,0 +1,29 @@
+/*
+ * 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.command;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public interface MessageSource
+{
+ String getMessage(String code);
+
+ String getMessage(String code, Object... args);
+}
\ No newline at end of file
Propchange: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/MessageSource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/MessageSource.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/MessageSource.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java?rev=411473&r1=411472&r2=411473&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java Sat Jun 3 14:45:25 2006
@@ -29,6 +29,8 @@
import org.apache.geronimo.gshell.command.CommandException;
import org.apache.geronimo.gshell.command.CommandDefinition;
import org.apache.geronimo.gshell.command.CommandManagerImpl;
+import org.apache.geronimo.gshell.command.MessageSource;
+import org.apache.geronimo.gshell.command.MessageSourceImpl;
import org.apache.geronimo.gshell.commandline.CommandLineBuilder;
import org.apache.geronimo.gshell.commandline.CommandLine;
import org.apache.geronimo.gshell.util.Arguments;
@@ -130,14 +132,15 @@
// Setup the command container
ShellContainer container = new ShellContainer(shellContainer);
- CommandDefinition def = commandManager.getCommandDefinition(commandName);
+ final CommandDefinition def = commandManager.getCommandDefinition(commandName);
+ final Class type = def.loadClass();
//
// TODO: Pass the command instance the name it was registered with?, could be an alias
//
container.registerComponentInstance(def);
- container.registerComponentImplementation(def.loadClass());
+ container.registerComponentImplementation(type);
// container.start() ?
@@ -156,6 +159,17 @@
public Variables getVariables() {
return vars;
+ }
+
+ MessageSource messageSource;
+
+ public MessageSource getMessageSource() {
+ // Lazy init the messages, commands many not need them
+ if (messageSource == null) {
+ messageSource = new MessageSourceImpl(type.getName() + "Messages");
+ }
+
+ return messageSource;
}
});
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=411473&r1=411472&r2=411473&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 Sat Jun 3 14:45:25 2006
@@ -22,13 +22,14 @@
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.PosixParser;
+
import org.apache.geronimo.gshell.command.Command;
import org.apache.geronimo.gshell.command.CommandSupport;
import org.apache.geronimo.gshell.command.Variables;
+import org.apache.geronimo.gshell.command.MessageSource;
import org.apache.geronimo.gshell.console.IO;
import java.util.Iterator;
-import java.util.ResourceBundle;
/**
* Set a variable or property.
@@ -51,12 +52,7 @@
protected int doExecute(String[] args) throws Exception {
assert args != null;
- //
- // TODO: Sub-class, create a Spring-like MessageSource, using Varags + printf
- // Add to commmand context interface
- //
-
- ResourceBundle resources = ResourceBundle.getBundle(getClass().getName() + "Messages");
+ MessageSource messages = getMessageSource();
//
// TODO: Optimize, move common code to CommandSupport
@@ -67,11 +63,11 @@
Options options = new Options();
options.addOption(OptionBuilder.withLongOpt("help")
- .withDescription(resources.getString("cli.option.help"))
+ .withDescription(messages.getMessage("cli.option.help"))
.create('h'));
options.addOption(OptionBuilder.withLongOpt("property")
- .withDescription(resources.getString("cli.option.property"))
+ .withDescription(messages.getMessage("cli.option.property"))
.create('p'));
//
@@ -88,7 +84,7 @@
if (line.hasOption('h')) {
io.out.print(getName());
io.out.print(" -- ");
- io.out.println(resources.getString("cli.usage.description"));
+ io.out.println(messages.getMessage("cli.usage.description"));
io.out.println();
HelpFormatter formatter = new HelpFormatter();
@@ -104,7 +100,7 @@
false); // auto usage
io.out.println();
- io.out.println(resources.getString("cli.usage.footer")); //
+ io.out.println(messages.getMessage("cli.usage.footer"));
io.out.println();
return Command.SUCCESS;
Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java?rev=411473&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java Sat Jun 3 14:45:25 2006
@@ -0,0 +1,52 @@
+/*
+ * 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.command;
+
+import java.util.ResourceBundle;
+import java.util.Formatter;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public class MessageSourceImpl
+ implements MessageSource
+{
+ private final ResourceBundle bundle;
+
+ public MessageSourceImpl(final String name) {
+ assert name != null;
+
+ bundle = ResourceBundle.getBundle(name);
+ }
+
+ public String getMessage(final String code) {
+ return bundle.getString(code);
+ }
+
+ public String getMessage(final String code, final Object... args) {
+ String format = getMessage(code);
+
+ StringBuilder sb = new StringBuilder();
+ Formatter f = new Formatter(sb);
+
+ f.format(format, args);
+
+ return sb.toString();
+ }
+}
\ No newline at end of file
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MessageSourceImplTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MessageSourceImplTest.java?rev=411473&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MessageSourceImplTest.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MessageSourceImplTest.java Sat Jun 3 14:45:25 2006
@@ -0,0 +1,44 @@
+/*
+ * 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.command;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit tests for the {@link MessageSourceImpl} class.
+ *
+ * @version $Id$
+ */
+public class MessageSourceImplTest
+ extends TestCase
+{
+ public void testLoadAndGetMessage() throws Exception {
+ MessageSourceImpl messages = new MessageSourceImpl(getClass().getName());
+
+ String a = messages.getMessage("a");
+ assertEquals("1", a);
+
+ String b = messages.getMessage("b");
+ assertEquals("2", b);
+
+ String c = messages.getMessage("c");
+ assertEquals("3", c);
+
+ String f = messages.getMessage("f", a, b, c);
+ assertEquals("1 2 3", f);
+ }
+}
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MessageSourceImplTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MessageSourceImplTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MessageSourceImplTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/MessageSourceImplTest.properties
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/MessageSourceImplTest.properties?rev=411473&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/MessageSourceImplTest.properties (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/MessageSourceImplTest.properties Sat Jun 3 14:45:25 2006
@@ -0,0 +1,11 @@
+##
+## $Id$
+##
+
+a=1
+
+b=2
+
+c=3
+
+f=%s %s %s
\ No newline at end of file
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/MessageSourceImplTest.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/MessageSourceImplTest.properties
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/resources/org/apache/geronimo/gshell/command/MessageSourceImplTest.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain