diff --git a/.gitignore b/.gitignore index 149242e9..6c514c61 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,10 @@ -/.classpath -/.project +.classpath +.project .settings/ -.gradle -build + target/ -/log.roo -/bin/ -/*.log - -/.idea -/*.iml -/*.ipr -/*.iws -out -.gradletasknamecache +.idea/ +*.iml +*.ipr +*.iws diff --git a/README.adoc b/README.adoc index b03647c3..5608df7f 100644 --- a/README.adoc +++ b/README.adoc @@ -13,7 +13,9 @@ while maintaining some level of backward compatibility with your existing comman *Note:* the dummy commands that are currently available are not here to stay. Expect a more modular setup in the future. In the meantime, to get a grasp of how the shell would behave, you can ``` -./mvnw spring-boot:run +# if using a local snapshot version +./mvnw install +./mvnw -pl spring-shell2-samples spring-boot:run ``` From there, try typing `help` at the shell prompt. diff --git a/pom.xml b/pom.xml index 9f9d49a1..bbc56fbb 100644 --- a/pom.xml +++ b/pom.xml @@ -3,18 +3,48 @@ 4.0.0 org.springframework.shell - spring-shell2 - 2.0.0.BUILD-SNAPSHOT - jar + spring-shell2-parent + 2.0.0-BUILD.SNAPSHOT + pom org.springframework.boot spring-boot-starter-parent 1.3.0.RELEASE + + 3.3.0 + 3.2.0 1.8 + + + spring-shell2-core + spring-shell2-jcommander-adapter + spring-shell2-samples + spring-shell2-shell1-adapter + + + + + + org.springframework.shell + spring-shell2-core + ${project.version} + + + org.springframework.shell + spring-shell2-shell1-adapter + ${project.version} + + + org.springframework.shell + spring-shell2-jcommander-adapter + ${project.version} + + + @@ -32,34 +62,26 @@ org.jline jline - 3.3.0 - - - org.springframework.shell - spring-shell - 1.2.0.BUILD-SNAPSHOT - true - - - com.beust - jcommander - 1.48 - true + ${jline.version} org.assertj assertj-core - 3.2.0 + ${assertj.version} test + + + + org.springframework.boot + spring-boot-maven-plugin + + + - - org.springframework.boot - spring-boot-maven-plugin - org.apache.maven.plugins maven-surefire-plugin diff --git a/spring-shell2-core/pom.xml b/spring-shell2-core/pom.xml new file mode 100644 index 00000000..58c8ffe3 --- /dev/null +++ b/spring-shell2-core/pom.xml @@ -0,0 +1,16 @@ + + 4.0.0 + + spring-shell2-core + jar + + + org.springframework.shell + spring-shell2-parent + 2.0.0-BUILD.SNAPSHOT + + + Core API and classes for Spring Shell 2 + + diff --git a/src/main/java/org/springframework/shell2/Bootstrap.java b/spring-shell2-core/src/main/java/org/springframework/shell2/Bootstrap.java similarity index 79% rename from src/main/java/org/springframework/shell2/Bootstrap.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/Bootstrap.java index d2eb862e..744bf30b 100644 --- a/src/main/java/org/springframework/shell2/Bootstrap.java +++ b/spring-shell2-core/src/main/java/org/springframework/shell2/Bootstrap.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 the original author or authors. + * Copyright 2015-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,12 +26,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.FilterType; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.support.DefaultConversionService; -import org.springframework.shell.converters.ArrayConverter; -import org.springframework.shell.converters.AvailableCommandsConverter; -import org.springframework.shell.converters.SimpleFileConverter; import org.springframework.shell2.standard.EnumValueProvider; import org.springframework.shell2.standard.StandardParameterResolver; @@ -41,11 +37,10 @@ import org.springframework.shell2.standard.StandardParameterResolver; *

Creates the application context and start the REPL.

* * @author Eric Bottard + * @author Camilo Gonzalez */ @SpringBootApplication -@ComponentScan(basePackageClasses = {ArrayConverter.class, Bootstrap.class}, excludeFilters = @ComponentScan.Filter( - type = FilterType.ASSIGNABLE_TYPE, - value = {AvailableCommandsConverter.class, SimpleFileConverter.class})) +@ComponentScan(basePackageClasses = Bootstrap.class) public class Bootstrap { public static void main(String[] args) throws Exception { diff --git a/src/main/java/org/springframework/shell2/CompletionContext.java b/spring-shell2-core/src/main/java/org/springframework/shell2/CompletionContext.java similarity index 100% rename from src/main/java/org/springframework/shell2/CompletionContext.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/CompletionContext.java diff --git a/src/main/java/org/springframework/shell2/CompletionProposal.java b/spring-shell2-core/src/main/java/org/springframework/shell2/CompletionProposal.java similarity index 100% rename from src/main/java/org/springframework/shell2/CompletionProposal.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/CompletionProposal.java diff --git a/src/main/java/org/springframework/shell2/ExitRequest.java b/spring-shell2-core/src/main/java/org/springframework/shell2/ExitRequest.java similarity index 100% rename from src/main/java/org/springframework/shell2/ExitRequest.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/ExitRequest.java diff --git a/src/main/java/org/springframework/shell2/JLineShell.java b/spring-shell2-core/src/main/java/org/springframework/shell2/JLineShell.java similarity index 100% rename from src/main/java/org/springframework/shell2/JLineShell.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/JLineShell.java diff --git a/src/main/java/org/springframework/shell2/MethodTarget.java b/spring-shell2-core/src/main/java/org/springframework/shell2/MethodTarget.java similarity index 100% rename from src/main/java/org/springframework/shell2/MethodTarget.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/MethodTarget.java diff --git a/src/main/java/org/springframework/shell2/MethodTargetResolver.java b/spring-shell2-core/src/main/java/org/springframework/shell2/MethodTargetResolver.java similarity index 100% rename from src/main/java/org/springframework/shell2/MethodTargetResolver.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/MethodTargetResolver.java diff --git a/src/main/java/org/springframework/shell2/ParameterDescription.java b/spring-shell2-core/src/main/java/org/springframework/shell2/ParameterDescription.java similarity index 100% rename from src/main/java/org/springframework/shell2/ParameterDescription.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/ParameterDescription.java diff --git a/src/main/java/org/springframework/shell2/ParameterMissingResolutionException.java b/spring-shell2-core/src/main/java/org/springframework/shell2/ParameterMissingResolutionException.java similarity index 100% rename from src/main/java/org/springframework/shell2/ParameterMissingResolutionException.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/ParameterMissingResolutionException.java diff --git a/src/main/java/org/springframework/shell2/ParameterResolver.java b/spring-shell2-core/src/main/java/org/springframework/shell2/ParameterResolver.java similarity index 100% rename from src/main/java/org/springframework/shell2/ParameterResolver.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/ParameterResolver.java diff --git a/src/main/java/org/springframework/shell2/ResultHandlers.java b/spring-shell2-core/src/main/java/org/springframework/shell2/ResultHandlers.java similarity index 100% rename from src/main/java/org/springframework/shell2/ResultHandlers.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/ResultHandlers.java diff --git a/src/main/java/org/springframework/shell2/Shell.java b/spring-shell2-core/src/main/java/org/springframework/shell2/Shell.java similarity index 100% rename from src/main/java/org/springframework/shell2/Shell.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/Shell.java diff --git a/src/main/java/org/springframework/shell2/UnfinishedParameterResolutionException.java b/spring-shell2-core/src/main/java/org/springframework/shell2/UnfinishedParameterResolutionException.java similarity index 100% rename from src/main/java/org/springframework/shell2/UnfinishedParameterResolutionException.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/UnfinishedParameterResolutionException.java diff --git a/src/main/java/org/springframework/shell2/Utils.java b/spring-shell2-core/src/main/java/org/springframework/shell2/Utils.java similarity index 100% rename from src/main/java/org/springframework/shell2/Utils.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/Utils.java diff --git a/src/main/java/org/springframework/shell2/commands/Console.java b/spring-shell2-core/src/main/java/org/springframework/shell2/commands/Console.java similarity index 100% rename from src/main/java/org/springframework/shell2/commands/Console.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/commands/Console.java diff --git a/src/main/java/org/springframework/shell2/commands/Help.java b/spring-shell2-core/src/main/java/org/springframework/shell2/commands/Help.java similarity index 100% rename from src/main/java/org/springframework/shell2/commands/Help.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/commands/Help.java diff --git a/src/main/java/org/springframework/shell2/commands/Quit.java b/spring-shell2-core/src/main/java/org/springframework/shell2/commands/Quit.java similarity index 100% rename from src/main/java/org/springframework/shell2/commands/Quit.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/commands/Quit.java diff --git a/src/main/java/org/springframework/shell2/commands/package-info.java b/spring-shell2-core/src/main/java/org/springframework/shell2/commands/package-info.java similarity index 100% rename from src/main/java/org/springframework/shell2/commands/package-info.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/commands/package-info.java diff --git a/src/main/java/org/springframework/shell2/result/AttributedCharSequenceResultHandler.java b/spring-shell2-core/src/main/java/org/springframework/shell2/result/AttributedCharSequenceResultHandler.java similarity index 100% rename from src/main/java/org/springframework/shell2/result/AttributedCharSequenceResultHandler.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/result/AttributedCharSequenceResultHandler.java diff --git a/src/main/java/org/springframework/shell2/result/DefaultResultHandler.java b/spring-shell2-core/src/main/java/org/springframework/shell2/result/DefaultResultHandler.java similarity index 100% rename from src/main/java/org/springframework/shell2/result/DefaultResultHandler.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/result/DefaultResultHandler.java diff --git a/src/main/java/org/springframework/shell2/result/ExitRequestResultHandler.java b/spring-shell2-core/src/main/java/org/springframework/shell2/result/ExitRequestResultHandler.java similarity index 100% rename from src/main/java/org/springframework/shell2/result/ExitRequestResultHandler.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/result/ExitRequestResultHandler.java diff --git a/src/main/java/org/springframework/shell2/result/IterableResultHandler.java b/spring-shell2-core/src/main/java/org/springframework/shell2/result/IterableResultHandler.java similarity index 100% rename from src/main/java/org/springframework/shell2/result/IterableResultHandler.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/result/IterableResultHandler.java diff --git a/src/main/java/org/springframework/shell2/result/ResultHandler.java b/spring-shell2-core/src/main/java/org/springframework/shell2/result/ResultHandler.java similarity index 100% rename from src/main/java/org/springframework/shell2/result/ResultHandler.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/result/ResultHandler.java diff --git a/src/main/java/org/springframework/shell2/result/ThrowableResultHandler.java b/spring-shell2-core/src/main/java/org/springframework/shell2/result/ThrowableResultHandler.java similarity index 100% rename from src/main/java/org/springframework/shell2/result/ThrowableResultHandler.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/result/ThrowableResultHandler.java diff --git a/src/main/java/org/springframework/shell2/result/package-info.java b/spring-shell2-core/src/main/java/org/springframework/shell2/result/package-info.java similarity index 100% rename from src/main/java/org/springframework/shell2/result/package-info.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/result/package-info.java diff --git a/src/main/java/org/springframework/shell2/standard/EnumValueProvider.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/EnumValueProvider.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/EnumValueProvider.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/EnumValueProvider.java diff --git a/src/main/java/org/springframework/shell2/standard/ShellComponent.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/ShellComponent.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/ShellComponent.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/ShellComponent.java diff --git a/src/main/java/org/springframework/shell2/standard/ShellMethod.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/ShellMethod.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/ShellMethod.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/ShellMethod.java diff --git a/src/main/java/org/springframework/shell2/standard/ShellOption.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/ShellOption.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/ShellOption.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/ShellOption.java diff --git a/src/main/java/org/springframework/shell2/standard/StandardMethodTargetResolver.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/StandardMethodTargetResolver.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/StandardMethodTargetResolver.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/StandardMethodTargetResolver.java diff --git a/src/main/java/org/springframework/shell2/standard/StandardParameterResolver.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/StandardParameterResolver.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/StandardParameterResolver.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/StandardParameterResolver.java diff --git a/src/main/java/org/springframework/shell2/standard/ValueProvider.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/ValueProvider.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/ValueProvider.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/ValueProvider.java diff --git a/src/main/java/org/springframework/shell2/standard/ValueProviderSupport.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/ValueProviderSupport.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/ValueProviderSupport.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/ValueProviderSupport.java diff --git a/src/main/java/org/springframework/shell2/standard/package-info.java b/spring-shell2-core/src/main/java/org/springframework/shell2/standard/package-info.java similarity index 100% rename from src/main/java/org/springframework/shell2/standard/package-info.java rename to spring-shell2-core/src/main/java/org/springframework/shell2/standard/package-info.java diff --git a/src/main/resources/logback.xml b/spring-shell2-core/src/main/resources/logback.xml similarity index 100% rename from src/main/resources/logback.xml rename to spring-shell2-core/src/main/resources/logback.xml diff --git a/src/test/java/org/springframework/shell2/JLineShellTest.java b/spring-shell2-core/src/test/java/org/springframework/shell2/JLineShellTest.java similarity index 100% rename from src/test/java/org/springframework/shell2/JLineShellTest.java rename to spring-shell2-core/src/test/java/org/springframework/shell2/JLineShellTest.java diff --git a/src/test/java/org/springframework/shell2/UtilsTest.java b/spring-shell2-core/src/test/java/org/springframework/shell2/UtilsTest.java similarity index 100% rename from src/test/java/org/springframework/shell2/UtilsTest.java rename to spring-shell2-core/src/test/java/org/springframework/shell2/UtilsTest.java diff --git a/src/test/java/org/springframework/shell2/commands/HelpTest.java b/spring-shell2-core/src/test/java/org/springframework/shell2/commands/HelpTest.java similarity index 100% rename from src/test/java/org/springframework/shell2/commands/HelpTest.java rename to spring-shell2-core/src/test/java/org/springframework/shell2/commands/HelpTest.java diff --git a/src/test/java/org/springframework/shell2/standard/Remote.java b/spring-shell2-core/src/test/java/org/springframework/shell2/standard/Remote.java similarity index 100% rename from src/test/java/org/springframework/shell2/standard/Remote.java rename to spring-shell2-core/src/test/java/org/springframework/shell2/standard/Remote.java diff --git a/src/test/java/org/springframework/shell2/standard/StandardParameterResolverTest.java b/spring-shell2-core/src/test/java/org/springframework/shell2/standard/StandardParameterResolverTest.java similarity index 100% rename from src/test/java/org/springframework/shell2/standard/StandardParameterResolverTest.java rename to spring-shell2-core/src/test/java/org/springframework/shell2/standard/StandardParameterResolverTest.java diff --git a/src/test/resources/org/springframework/shell2/commands/HelpTest-testCommandHelp.txt b/spring-shell2-core/src/test/resources/org/springframework/shell2/commands/HelpTest-testCommandHelp.txt similarity index 100% rename from src/test/resources/org/springframework/shell2/commands/HelpTest-testCommandHelp.txt rename to spring-shell2-core/src/test/resources/org/springframework/shell2/commands/HelpTest-testCommandHelp.txt diff --git a/src/test/resources/org/springframework/shell2/commands/HelpTest-testCommandList.txt b/spring-shell2-core/src/test/resources/org/springframework/shell2/commands/HelpTest-testCommandList.txt similarity index 100% rename from src/test/resources/org/springframework/shell2/commands/HelpTest-testCommandList.txt rename to spring-shell2-core/src/test/resources/org/springframework/shell2/commands/HelpTest-testCommandList.txt diff --git a/spring-shell2-jcommander-adapter/pom.xml b/spring-shell2-jcommander-adapter/pom.xml new file mode 100644 index 00000000..882eca32 --- /dev/null +++ b/spring-shell2-jcommander-adapter/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + spring-shell2-jcommander-adapter + jar + + + org.springframework.shell + spring-shell2-parent + 2.0.0-BUILD.SNAPSHOT + + + Adapter classes to allow JCommander type annotations and parsing via Spring Shell 2 + + + + org.springframework.shell + spring-shell2-core + + + com.beust + jcommander + 1.48 + + + + diff --git a/src/main/java/org/springframework/shell2/jcommander/JCommanderParameterResolver.java b/spring-shell2-jcommander-adapter/src/main/java/org/springframework/shell2/jcommander/JCommanderParameterResolver.java similarity index 100% rename from src/main/java/org/springframework/shell2/jcommander/JCommanderParameterResolver.java rename to spring-shell2-jcommander-adapter/src/main/java/org/springframework/shell2/jcommander/JCommanderParameterResolver.java diff --git a/src/main/java/org/springframework/shell2/jcommander/package-info.java b/spring-shell2-jcommander-adapter/src/main/java/org/springframework/shell2/jcommander/package-info.java similarity index 100% rename from src/main/java/org/springframework/shell2/jcommander/package-info.java rename to spring-shell2-jcommander-adapter/src/main/java/org/springframework/shell2/jcommander/package-info.java diff --git a/src/test/java/org/springframework/shell2/jcommander/FieldCollins.java b/spring-shell2-jcommander-adapter/src/test/java/org/springframework/shell2/jcommander/FieldCollins.java similarity index 100% rename from src/test/java/org/springframework/shell2/jcommander/FieldCollins.java rename to spring-shell2-jcommander-adapter/src/test/java/org/springframework/shell2/jcommander/FieldCollins.java diff --git a/src/test/java/org/springframework/shell2/jcommander/JCommanderParameterResolverTest.java b/spring-shell2-jcommander-adapter/src/test/java/org/springframework/shell2/jcommander/JCommanderParameterResolverTest.java similarity index 100% rename from src/test/java/org/springframework/shell2/jcommander/JCommanderParameterResolverTest.java rename to spring-shell2-jcommander-adapter/src/test/java/org/springframework/shell2/jcommander/JCommanderParameterResolverTest.java diff --git a/src/test/java/org/springframework/shell2/jcommander/MyLordCommands.java b/spring-shell2-jcommander-adapter/src/test/java/org/springframework/shell2/jcommander/MyLordCommands.java similarity index 100% rename from src/test/java/org/springframework/shell2/jcommander/MyLordCommands.java rename to spring-shell2-jcommander-adapter/src/test/java/org/springframework/shell2/jcommander/MyLordCommands.java diff --git a/spring-shell2-samples/pom.xml b/spring-shell2-samples/pom.xml new file mode 100644 index 00000000..9677943a --- /dev/null +++ b/spring-shell2-samples/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + + spring-shell2-samples + jar + + + org.springframework.shell + spring-shell2-parent + 2.0.0-BUILD.SNAPSHOT + + + Examples of using Spring Shell 2 + + + + + org.springframework.boot + spring-boot-maven-plugin + + org.springframework.shell2.Bootstrap + + + + + + + + org.springframework.shell + spring-shell2-core + + + org.springframework.shell + spring-shell2-shell1-adapter + + + org.springframework.shell + spring-shell2-jcommander-adapter + + + + diff --git a/spring-shell2-samples/src/main/java/org/springframework/shell2/samples/legacy/ArtifactType.java b/spring-shell2-samples/src/main/java/org/springframework/shell2/samples/legacy/ArtifactType.java new file mode 100644 index 00000000..d7f59324 --- /dev/null +++ b/spring-shell2-samples/src/main/java/org/springframework/shell2/samples/legacy/ArtifactType.java @@ -0,0 +1,25 @@ +/* + * Copyright 2015 the original author or authors. + * + * 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.springframework.shell2.samples.legacy; + +/** + * Created by ericbottard on 09/12/15. + */ +public enum ArtifactType { + + source, processor, sink, task +} diff --git a/spring-shell2-samples/src/main/java/org/springframework/shell2/samples/legacy/LegacyCommands.java b/spring-shell2-samples/src/main/java/org/springframework/shell2/samples/legacy/LegacyCommands.java new file mode 100644 index 00000000..4cac8499 --- /dev/null +++ b/spring-shell2-samples/src/main/java/org/springframework/shell2/samples/legacy/LegacyCommands.java @@ -0,0 +1,61 @@ +/* + * Copyright 2015 the original author or authors. + * + * 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.springframework.shell2.samples.legacy; + +import java.lang.reflect.Method; + +import org.springframework.shell.core.CommandMarker; +import org.springframework.shell.core.annotation.CliCommand; +import org.springframework.shell.core.annotation.CliOption; +import org.springframework.util.ReflectionUtils; + +/** + * Created by ericbottard on 09/12/15. + */ +public class LegacyCommands implements CommandMarker { + + public static final Method REGISTER_METHOD = ReflectionUtils.findMethod(LegacyCommands.class, "register", String.class, ArtifactType.class, String.class, boolean.class); + public static final Method SUM_METHOD = ReflectionUtils.findMethod(LegacyCommands.class, "sum", int.class, int.class); + + @CliCommand(value = "register module", help = "Register a new module") + public String register( + @CliOption(mandatory = true, + key = {"", "name"}, + help = "the name for the registered module") + String name, + @CliOption(mandatory = true, + key = {"type"}, + help = "the type for the registered module") + ArtifactType type, + @CliOption(mandatory = true, + key = {"coordinates", "coords"}, + help = "coordinates to the module archive") + String coordinates, + @CliOption(key = "force", + help = "force update if module already exists (only if not in use)", + specifiedDefaultValue = "true", + unspecifiedDefaultValue = "false") + boolean force) { + return String.format(("Successfully registered module '%s:%s'"), type, name); + } + + @CliCommand(value = "sum", help = "adds two numbers") + public int sum(@CliOption(key = "v1", unspecifiedDefaultValue = "38") int a, @CliOption(key = "v2", specifiedDefaultValue = "42") int b) { + return a + b; + } + +} diff --git a/src/main/java/org/springframework/shell2/Commands.java b/spring-shell2-samples/src/main/java/org/springframework/shell2/samples/standard/Commands.java similarity index 91% rename from src/main/java/org/springframework/shell2/Commands.java rename to spring-shell2-samples/src/main/java/org/springframework/shell2/samples/standard/Commands.java index 9129908c..f255c15d 100644 --- a/src/main/java/org/springframework/shell2/Commands.java +++ b/spring-shell2-samples/src/main/java/org/springframework/shell2/samples/standard/Commands.java @@ -14,15 +14,13 @@ * limitations under the License. */ -package org.springframework.shell2; +package org.springframework.shell2.samples.standard; import org.springframework.shell2.standard.ShellComponent; import org.springframework.shell2.standard.ShellMethod; /** - * Example commands for easy testing. - * - * To be removed in final project. + * Example commands for the Shell 2 Standard resolver. * * @author Eric Bottard */ diff --git a/spring-shell2-shell1-adapter/pom.xml b/spring-shell2-shell1-adapter/pom.xml new file mode 100644 index 00000000..2e88b81b --- /dev/null +++ b/spring-shell2-shell1-adapter/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + spring-shell2-shell1-adapter + jar + + + org.springframework.shell + spring-shell2-parent + 2.0.0-BUILD.SNAPSHOT + + + Adapter classes to enable Shell 1 type annotations via Spring Shell 2 + + + + org.springframework.shell + spring-shell2-core + + + org.springframework.shell + spring-shell + 1.2.0.RELEASE + + + + diff --git a/spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/LegacyConfiguration.java b/spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/LegacyConfiguration.java new file mode 100644 index 00000000..907a45fa --- /dev/null +++ b/spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/LegacyConfiguration.java @@ -0,0 +1,36 @@ +/* + * Copyright 2017 the original author or authors. + * + * 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.springframework.shell2.legacy; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; +import org.springframework.shell.converters.ArrayConverter; +import org.springframework.shell.converters.AvailableCommandsConverter; +import org.springframework.shell.converters.SimpleFileConverter; + +/** + * Main configuration class for the Shell 2 - Shell 1 adapter. + * + * @author Camilo Gonzalez + */ +@Configuration +@ComponentScan(basePackageClasses = {ArrayConverter.class}, excludeFilters = @ComponentScan.Filter( + type = FilterType.ASSIGNABLE_TYPE, + value = {AvailableCommandsConverter.class, SimpleFileConverter.class})) +public class LegacyConfiguration { + +} diff --git a/src/main/java/org/springframework/shell2/legacy/LegacyMethodTargetResolver.java b/spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/LegacyMethodTargetResolver.java similarity index 100% rename from src/main/java/org/springframework/shell2/legacy/LegacyMethodTargetResolver.java rename to spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/LegacyMethodTargetResolver.java diff --git a/src/main/java/org/springframework/shell2/legacy/LegacyParameterResolver.java b/spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/LegacyParameterResolver.java similarity index 100% rename from src/main/java/org/springframework/shell2/legacy/LegacyParameterResolver.java rename to spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/LegacyParameterResolver.java diff --git a/src/main/java/org/springframework/shell2/legacy/package-info.java b/spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/package-info.java similarity index 100% rename from src/main/java/org/springframework/shell2/legacy/package-info.java rename to spring-shell2-shell1-adapter/src/main/java/org/springframework/shell2/legacy/package-info.java diff --git a/src/test/java/org/springframework/shell2/legacy/ArtifactType.java b/spring-shell2-shell1-adapter/src/test/java/org/springframework/shell2/legacy/ArtifactType.java similarity index 100% rename from src/test/java/org/springframework/shell2/legacy/ArtifactType.java rename to spring-shell2-shell1-adapter/src/test/java/org/springframework/shell2/legacy/ArtifactType.java diff --git a/src/test/java/org/springframework/shell2/legacy/LegacyCommands.java b/spring-shell2-shell1-adapter/src/test/java/org/springframework/shell2/legacy/LegacyCommands.java similarity index 100% rename from src/test/java/org/springframework/shell2/legacy/LegacyCommands.java rename to spring-shell2-shell1-adapter/src/test/java/org/springframework/shell2/legacy/LegacyCommands.java diff --git a/src/test/java/org/springframework/shell2/legacy/LegacyMethodTargetResolverTest.java b/spring-shell2-shell1-adapter/src/test/java/org/springframework/shell2/legacy/LegacyMethodTargetResolverTest.java similarity index 100% rename from src/test/java/org/springframework/shell2/legacy/LegacyMethodTargetResolverTest.java rename to spring-shell2-shell1-adapter/src/test/java/org/springframework/shell2/legacy/LegacyMethodTargetResolverTest.java diff --git a/src/test/java/org/springframework/shell2/legacy/LegacyParameterResolverTest.java b/spring-shell2-shell1-adapter/src/test/java/org/springframework/shell2/legacy/LegacyParameterResolverTest.java similarity index 100% rename from src/test/java/org/springframework/shell2/legacy/LegacyParameterResolverTest.java rename to spring-shell2-shell1-adapter/src/test/java/org/springframework/shell2/legacy/LegacyParameterResolverTest.java