Commit 01ebd6da authored by Dave Syer's avatar Dave Syer

Fix CLI script

parent 5d4f0750
...@@ -30,7 +30,7 @@ instructions will look like this: ...@@ -30,7 +30,7 @@ instructions will look like this:
2) Get Spring 2) Get Spring
$ curl -s spring.cfapps.io/installer | bash $ curl -s initializr.cfapps.io/installer | bash
or use the [Windows installer](#installing) or use the [Windows installer](#installing)
...@@ -43,7 +43,7 @@ or above. ...@@ -43,7 +43,7 @@ or above.
An `alias` can be used for the Spring Zero command line tool: An `alias` can be used for the Spring Zero command line tool:
$ alias spr="java -jar ~/.m2/repository/org/springframework/zero/spring-cli/0.5.0.BUILD-SNAPSHOT/spring-cli-0.5.0.BUILD-SNAPSHOT.jar" $ alias spring="java -jar ~/.m2/repository/org/springframework/zero/spring-cli/0.5.0.BUILD-SNAPSHOT/spring-cli-0.5.0.BUILD-SNAPSHOT.jar"
_Also see [docs/CONTRIBUTING](docs/CONTRIBUTING.md) if you want to submit pull requests._ _Also see [docs/CONTRIBUTING](docs/CONTRIBUTING.md) if you want to submit pull requests._
...@@ -62,7 +62,7 @@ snippets that can just run, for example: ...@@ -62,7 +62,7 @@ snippets that can just run, for example:
} }
} }
<ctrl-d> <ctrl-d>
$ spr run app.groovy $ spring run app.groovy
$ curl localhost:8080 $ curl localhost:8080
Hello World! Hello World!
...@@ -165,7 +165,7 @@ _See [spring-launcher/README](spring-launcher/README.md) & ...@@ -165,7 +165,7 @@ _See [spring-launcher/README](spring-launcher/README.md) &
## Samples ## Samples
Groovy samples for use with the command line application are available in Groovy samples for use with the command line application are available in
[spring-cli/samples](spring-cli/samples/#). To run the CLI samples type [spring-cli/samples](spring-cli/samples/#). To run the CLI samples type
`spr run <sample>.groovy` from samples directory. `spring run <sample>.groovy` from samples directory.
Java samples are available in [spring-zero-sample](spring-zero-samples/#) and should Java samples are available in [spring-zero-sample](spring-zero-samples/#) and should
be build with maven and run use `java -jar target/<sample>.jar`. The following java be build with maven and run use `java -jar target/<sample>.jar`. The following java
......
...@@ -38,6 +38,8 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer ...@@ -38,6 +38,8 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
private final Log logger = LogFactory.getLog(TomcatEmbeddedServletContainer.class); private final Log logger = LogFactory.getLog(TomcatEmbeddedServletContainer.class);
private static int containerCounter = 0;
private final Tomcat tomcat; private final Tomcat tomcat;
/** /**
...@@ -55,7 +57,7 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer ...@@ -55,7 +57,7 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
this.tomcat.start(); this.tomcat.start();
// Unlike Jetty, all Tomcat threads are daemon threads. We create a // Unlike Jetty, all Tomcat threads are daemon threads. We create a
// blocking non-daemon to stop immediate shutdown // blocking non-daemon to stop immediate shutdown
Thread awaitThread = new Thread() { Thread awaitThread = new Thread("container-" + (containerCounter++)) {
@Override @Override
public void run() { public void run() {
TomcatEmbeddedServletContainer.this.tomcat.getServer().await(); TomcatEmbeddedServletContainer.this.tomcat.getServer().await();
......
...@@ -39,6 +39,7 @@ import static org.junit.Assert.assertTrue; ...@@ -39,6 +39,7 @@ import static org.junit.Assert.assertTrue;
@Configuration @Configuration
public class SimpleMainTests { public class SimpleMainTests {
private static final String SPRING_STARTUP = "root of context hierarchy";
private PrintStream savedOutput; private PrintStream savedOutput;
private ByteArrayOutputStream output; private ByteArrayOutputStream output;
...@@ -58,33 +59,33 @@ public class SimpleMainTests { ...@@ -58,33 +59,33 @@ public class SimpleMainTests {
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
public void emptyApplicationContext() throws Exception { public void emptyApplicationContext() throws Exception {
SpringApplication.main(getArgs()); SpringApplication.main(getArgs());
assertTrue(getOutput().contains("Pre-instantiating singletons")); assertTrue(getOutput().contains(SPRING_STARTUP));
} }
@Test @Test
public void basePackageScan() throws Exception { public void basePackageScan() throws Exception {
SpringApplication.main(getArgs(ClassUtils.getPackageName(getClass()) SpringApplication.main(getArgs(ClassUtils.getPackageName(getClass())
+ ".sampleconfig")); + ".sampleconfig"));
assertTrue(getOutput().contains("Pre-instantiating singletons")); assertTrue(getOutput().contains(SPRING_STARTUP));
} }
@Test @Test
public void configClassContext() throws Exception { public void configClassContext() throws Exception {
SpringApplication.main(getArgs(getClass().getName())); SpringApplication.main(getArgs(getClass().getName()));
assertTrue(getOutput().contains("Pre-instantiating singletons")); assertTrue(getOutput().contains(SPRING_STARTUP));
} }
@Test @Test
public void xmlContext() throws Exception { public void xmlContext() throws Exception {
SpringApplication.main(getArgs("org/springframework/bootstrap/sample-beans.xml")); SpringApplication.main(getArgs("org/springframework/bootstrap/sample-beans.xml"));
assertTrue(getOutput().contains("Pre-instantiating singletons")); assertTrue(getOutput().contains(SPRING_STARTUP));
} }
@Test @Test
public void mixedContext() throws Exception { public void mixedContext() throws Exception {
SpringApplication.main(getArgs(getClass().getName(), SpringApplication.main(getArgs(getClass().getName(),
"org/springframework/bootstrap/sample-beans.xml")); "org/springframework/bootstrap/sample-beans.xml"));
assertTrue(getOutput().contains("Pre-instantiating singletons")); assertTrue(getOutput().contains(SPRING_STARTUP));
} }
private String[] getArgs(String... args) { private String[] getArgs(String... args) {
......
...@@ -71,6 +71,7 @@ public class LoggingApplicationContextInitializerTests { ...@@ -71,6 +71,7 @@ public class LoggingApplicationContextInitializerTests {
System.clearProperty("LOG_PATH"); System.clearProperty("LOG_PATH");
System.clearProperty("PID"); System.clearProperty("PID");
System.setOut(this.savedOutput); System.setOut(this.savedOutput);
System.out.println(getOutput());
} }
private String getOutput() { private String getOutput() {
......
...@@ -39,7 +39,7 @@ import java.util.Set; ...@@ -39,7 +39,7 @@ import java.util.Set;
*/ */
public class SpringCli { public class SpringCli {
public static final String CLI_APP = "spr"; public static final String CLI_APP = "spring";
private static final Set<SpringCliException.Option> NO_EXCEPTION_OPTIONS = EnumSet private static final Set<SpringCliException.Option> NO_EXCEPTION_OPTIONS = EnumSet
.noneOf(SpringCliException.Option.class); .noneOf(SpringCliException.Option.class);
......
...@@ -33,6 +33,10 @@ import org.springframework.cli.compiler.GroovyCompiler; ...@@ -33,6 +33,10 @@ import org.springframework.cli.compiler.GroovyCompiler;
*/ */
public class SpringApplicationRunner { public class SpringApplicationRunner {
private static int watcherCounter = 0;
private static int runnerCounter = 0;
// FIXME logging // FIXME logging
private SpringApplicationRunnerConfiguration configuration; private SpringApplicationRunnerConfiguration configuration;
...@@ -118,6 +122,7 @@ public class SpringApplicationRunner { ...@@ -118,6 +122,7 @@ public class SpringApplicationRunner {
* @param sources the sources to launch * @param sources the sources to launch
*/ */
public RunThread(Object... sources) { public RunThread(Object... sources) {
super("runner-" + (runnerCounter++));
this.sources = sources; this.sources = sources;
if (sources.length != 0 && sources[0] instanceof Class) { if (sources.length != 0 && sources[0] instanceof Class) {
setContextClassLoader(((Class<?>) sources[0]).getClassLoader()); setContextClassLoader(((Class<?>) sources[0]).getClassLoader());
...@@ -171,6 +176,7 @@ public class SpringApplicationRunner { ...@@ -171,6 +176,7 @@ public class SpringApplicationRunner {
private long previous; private long previous;
public FileWatchThread() { public FileWatchThread() {
super("filewatcher-" + (watcherCounter++));
this.previous = 0; this.previous = 0;
for (File file : SpringApplicationRunner.this.files) { for (File file : SpringApplicationRunner.this.files) {
long current = file.lastModified(); long current = file.lastModified();
......
...@@ -63,7 +63,7 @@ if [ -f build.gradle ]; then ...@@ -63,7 +63,7 @@ if [ -f build.gradle ]; then
TARGETDIR=build/classes/main TARGETDIR=build/classes/main
fi fi
for f in "${TARGETDIR}" "${SPRING_HOME}"/classes "${SPRING_BIN}" "${SPRING_HOME}"/*.jar "${SPRING_HOME}"/lib/*.jar; do for f in . "${TARGETDIR}" "${SPRING_HOME}"/classes "${SPRING_BIN}" "${SPRING_HOME}"/*.jar "${SPRING_HOME}"/lib/*.jar; do
if [ -f $f -o -d $f ]; then if [ -f $f -o -d $f ]; then
if [ "${CLASSPATH}" == "" ]; then if [ "${CLASSPATH}" == "" ]; then
CLASSPATH="${f}" CLASSPATH="${f}"
...@@ -77,4 +77,4 @@ if $cygwin; then ...@@ -77,4 +77,4 @@ if $cygwin; then
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
fi fi
${JAVA_HOME}/bin/java ${JAVA_OPTS} -cp "$CLASSPATH" org.springframework.bootstrap.cli.SpringBootstrapCli $* ${JAVA_HOME}/bin/java ${JAVA_OPTS} -cp "$CLASSPATH" org.springframework.cli.SpringCli $*
\ No newline at end of file \ No newline at end of file
...@@ -133,7 +133,8 @@ public class SpringCliTests { ...@@ -133,7 +133,8 @@ public class SpringCliTests {
@Test @Test
public void exceptionMessages() throws Exception { public void exceptionMessages() throws Exception {
assertThat(new NoSuchCommandException("name").getMessage(), assertThat(new NoSuchCommandException("name").getMessage(),
equalTo("spr: 'name' is not a valid command. See 'spr help'.")); equalTo(SpringCli.CLI_APP + ": 'name' is not a valid command. See '"
+ SpringCli.CLI_APP + " help'."));
} }
@Test @Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment