Author: roxspring Date: Thu Jun 23 14:30:40 2005 New Revision: 201497 URL: http://svn.apache.org/viewcvs?rev=201497&view=rev Log: Added initial stab at commons-configuration integration
Added: jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/CommandLineConfiguration.java jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/ConfigurationCommandLine.java jakarta/commons/proper/cli/branches/commons-configuration-integration/src/test/org/apache/commons/cli2/commandline/ConfigurationCommandLineTest.java Modified: jakarta/commons/proper/cli/branches/commons-configuration-integration/project.xml Modified: jakarta/commons/proper/cli/branches/commons-configuration-integration/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/branches/commons-configuration-integration/project.xml?rev=201497&r1=201496&r2=201497&view=diff ============================================================================== --- jakarta/commons/proper/cli/branches/commons-configuration-integration/project.xml (original) +++ jakarta/commons/proper/cli/branches/commons-configuration-integration/project.xml Thu Jun 23 14:30:40 2005 @@ -131,6 +131,16 @@ </dependency> <dependency> + <id>commons-configuration</id> + <version>1.0</version> + </dependency> + + <dependency> + <id>commons-collections</id> + <version>3.1</version> + </dependency> + + <dependency> <id>junit</id> <version>3.8.1</version> </dependency> Added: jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/CommandLineConfiguration.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/CommandLineConfiguration.java?rev=201497&view=auto ============================================================================== --- jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/CommandLineConfiguration.java (added) +++ jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/CommandLineConfiguration.java Thu Jun 23 14:30:40 2005 @@ -0,0 +1,75 @@ +/** + * Copyright 2005 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.commons.cli2.commandline; + +import java.util.Iterator; + +import org.apache.commons.cli2.CommandLine; +import org.apache.commons.configuration.AbstractConfiguration; + +/** + * @author roxspring + */ +public class CommandLineConfiguration extends AbstractConfiguration { + + private final CommandLine cmd; + + public CommandLineConfiguration(final CommandLine cmd) { + this.cmd = cmd; + } + + /* (non-Javadoc) + * @see org.apache.commons.configuration.AbstractConfiguration#getPropertyDirect(java.lang.String) + */ + protected Object getPropertyDirect(String key) { + return cmd.getValue(key); + } + + /* (non-Javadoc) + * @see org.apache.commons.configuration.AbstractConfiguration#addPropertyDirect(java.lang.String, java.lang.Object) + */ + protected void addPropertyDirect(String key, Object value) { + throw new UnsupportedOperationException("CommandLineConfiguration is currently read only"); + } + + /* (non-Javadoc) + * @see org.apache.commons.configuration.AbstractConfiguration#isEmpty() + */ + public boolean isEmpty() { + return cmd.getOptions().isEmpty(); + } + + /* (non-Javadoc) + * @see org.apache.commons.configuration.AbstractConfiguration#containsKey(java.lang.String) + */ + public boolean containsKey(String key) { + return cmd.hasOption(key); + } + + /* (non-Javadoc) + * @see org.apache.commons.configuration.AbstractConfiguration#clearProperty(java.lang.String) + */ + public void clearProperty(String arg0) { + throw new UnsupportedOperationException("CommandLineConfiguration is currently read only"); + } + + /* (non-Javadoc) + * @see org.apache.commons.configuration.AbstractConfiguration#getKeys() + */ + public Iterator getKeys() { + return cmd.getOptionTriggers().iterator(); + } +} Added: jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/ConfigurationCommandLine.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/ConfigurationCommandLine.java?rev=201497&view=auto ============================================================================== --- jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/ConfigurationCommandLine.java (added) +++ jakarta/commons/proper/cli/branches/commons-configuration-integration/src/java/org/apache/commons/cli2/commandline/ConfigurationCommandLine.java Thu Jun 23 14:30:40 2005 @@ -0,0 +1,119 @@ +/** + * Copyright 2005 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.commons.cli2.commandline; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.apache.commons.cli2.Option; +import org.apache.commons.configuration.Configuration; + +/** + * @author roxspring + */ +public class ConfigurationCommandLine extends CommandLineImpl { + + private final Option root; + private final Configuration config; + + public ConfigurationCommandLine(final Option root, final Configuration config) { + this.root = root; + this.config = config; + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLine#hasOption(org.apache.commons.cli2.Option) + */ + public boolean hasOption(Option option) { + if(option==null){ + return false; + } + return config.containsKey(option.getPreferredName()); + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLine#getOption(java.lang.String) + */ + public Option getOption(String trigger) { + return root.findOption(trigger); + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLine#getValues(org.apache.commons.cli2.Option, java.util.List) + */ + public List getValues(Option option, List defaultValues) { + return config.getList(option.getPreferredName(), defaultValues); + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLine#getSwitch(org.apache.commons.cli2.Option, java.lang.Boolean) + */ + public Boolean getSwitch(Option option, Boolean defaultValue) { + return config.getBoolean(option.getPreferredName(), defaultValue); + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLine#getProperty(java.lang.String, java.lang.String) + */ + public String getProperty(String property, String defaultValue) { + return config.getString(property, defaultValue); + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLine#getProperties() + */ + public Set getProperties() { + final HashSet properties = new HashSet(); + final Iterator keys = config.getKeys(); + while(keys.hasNext()) { + properties.add(keys.next()); + } + return properties; + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLine#getOptions() + */ + public List getOptions() { + final List options = new ArrayList(); + final Iterator keys = config.getKeys(); + while(keys.hasNext()){ + final String trigger = (String)keys.next(); + final Option option = root.findOption(trigger); + if(option!=null){ + options.add(option); + } + } + return Collections.unmodifiableList(options); + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLine#getOptionTriggers() + */ + public Set getOptionTriggers() { + final Set triggers = new HashSet(); + final Iterator options = getOptions().iterator(); + while(options.hasNext()){ + final Option option = (Option)options.next(); + triggers.addAll(option.getTriggers()); + } + return Collections.unmodifiableSet(triggers); + } +} Added: jakarta/commons/proper/cli/branches/commons-configuration-integration/src/test/org/apache/commons/cli2/commandline/ConfigurationCommandLineTest.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/branches/commons-configuration-integration/src/test/org/apache/commons/cli2/commandline/ConfigurationCommandLineTest.java?rev=201497&view=auto ============================================================================== --- jakarta/commons/proper/cli/branches/commons-configuration-integration/src/test/org/apache/commons/cli2/commandline/ConfigurationCommandLineTest.java (added) +++ jakarta/commons/proper/cli/branches/commons-configuration-integration/src/test/org/apache/commons/cli2/commandline/ConfigurationCommandLineTest.java Thu Jun 23 14:30:40 2005 @@ -0,0 +1,47 @@ +/** + * Copyright 2005 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.commons.cli2.commandline; + +import java.util.Arrays; + +import org.apache.commons.cli2.CommandLine; +import org.apache.commons.cli2.CommandLineTestCase; +import org.apache.commons.configuration.BaseConfiguration; +import org.apache.commons.configuration.Configuration; + +/** + * @author Rob Oxspring + */ +public class ConfigurationCommandLineTest extends CommandLineTestCase { + + /* (non-Javadoc) + * @see org.apache.commons.cli2.CommandLineTest#createCommandLine() + */ + protected CommandLine createCommandLine() { + final Configuration config = new BaseConfiguration(); + config.addProperty("--present","present value"); + config.addProperty("--alsopresent","present value"); + config.addProperty("--multiple",Arrays.asList(new String[]{"value 1", "value 2" , "value 3"})); + config.addProperty("--bool",Boolean.TRUE); + config.setProperty("present","present property"); + + return new ConfigurationCommandLine(root,config); + } + + public void testToMakeEclipseSpotTheTestCase(){ + // nothing to test + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]