Skip to content

Commit

Permalink
#569: Added usage to hawtio embedded/standalone, and using --arg styl…
Browse files Browse the repository at this point in the history
…e syntax which makes it easier to use and add new arguments in the future.
  • Loading branch information
davsclaus committed Oct 26, 2013
1 parent 1630643 commit fa73e91
Show file tree
Hide file tree
Showing 3 changed files with 336 additions and 106 deletions.
35 changes: 15 additions & 20 deletions hawtio-app/src/main/java/io/hawt/app/App.java
Expand Up @@ -34,6 +34,8 @@ public class App {

public static void main(String[] args) {
Main main = new Main();
main.showWelcome(true);

try {
String virtualMachineClass = "com.sun.tools.attach.VirtualMachine";
try {
Expand Down Expand Up @@ -67,28 +69,21 @@ public static void main(String[] args) {

String warPath = warFile.getCanonicalPath();
main.setWarLocation(warPath);

if (args.length > 0) {
String portText = args[0].toLowerCase();
if (portText.startsWith("?") || portText.startsWith("-h") || portText.startsWith("--h")) {
System.out.println("Usage: [portName] [contextPath]");
return;
}
try {
int port = Integer.parseInt(portText);
main.setPort(port);
} catch (NumberFormatException e) {
System.out.println("Failed to parse port number '" + portText + "'. " + e);
return;
}
}
if (args.length > 1) {
main.setContextPath(args[1]);
}
Main.doRun(main);
} catch (Exception e) {
System.out.println("Failed to create hawtio: " + e);
System.out.println("Failed to create hawtio: " + e.getMessage());
e.printStackTrace();
return;
}

if (!main.parseArguments(args) || main.isHelp()) {
main.showOptions();
} else {
try {
main.run();
} catch (Exception e) {
System.out.println("Failed running hawtio: " + e.getMessage());
e.printStackTrace();
}
}
}

Expand Down
157 changes: 71 additions & 86 deletions hawtio-embedded/src/main/java/io/hawt/embedded/Main.java
@@ -1,52 +1,45 @@
package io.hawt.embedded;

import java.io.File;
import java.io.FilenameFilter;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Slf4jLog;
import org.eclipse.jetty.webapp.WebAppContext;

import javax.management.MBeanServer;
import java.io.File;
import java.io.FilenameFilter;
import java.lang.management.ManagementFactory;

/**
* A simple way to run hawtio embedded inside a JVM by booting up a Jetty server
*/
public class Main {
private String contextPath = "/hawtio";
private int port = 8080;
private String war;
private String warLocation;
private String[] warPaths;
private String extraClassPath;
private boolean joinServerThread = true;
private Options options;
private final boolean joinServerThread = true;
private boolean welcome = true;

public Main() {
options = new Options();
options.init();
}

public static void main(String[] args) {
if (args.length <= 0) {
System.out.println("Usage: locationOfHawtioWar portName contextPath");
return;
}
Main main = new Main();
if (args.length > 0) {
main.setWar(args[0]);
}
if (args.length > 1) {
String portText = args[1];
try {
int port = Integer.parseInt(portText);
main.setPort(port);
} catch (NumberFormatException e) {
System.out.println("Failed to parse port number '" + portText + "'. " + e);
return;
}
}
if (args.length > 2) {
main.setContextPath(args[2]);

if (!main.parseArguments(args) || main.isHelp()) {
main.showOptions();
return;
}

doRun(main);
}

public boolean parseArguments(String[] args) {
return options.parseArguments(args);
}

public void showOptions() {
options.showOptions();
}

public static void doRun(Main main) {
try {
main.run();
Expand All @@ -57,47 +50,53 @@ public static void doRun(Main main) {
}

public void run() throws Exception {
run(isJoinServerThread());
run(joinServerThread);

}
public void run(boolean join) throws Exception {
System.setProperty("org.eclipse.jetty.util.log.class", Slf4jLog.class.getName());
Log.setLog(new Slf4jLog("jetty"));
Slf4jLog log = new Slf4jLog("jetty");
Log.setLog(log);

WebAppContext webapp = new WebAppContext();
webapp.setContextPath(contextPath);
webapp.setContextPath(options.getContextPath());

String war = getWarLocation();
if (war == null) {
war = findWar(getWar());
}
String war = findWar(options.getWarLocation());
if (war == null) {
war = findWar(getWarPaths());
war = findWar(options.getWarFileName());
}
if (war == null) {
throw new IllegalArgumentException("No war property set!");
}
webapp.setWar(war);
webapp.setParentLoaderPriority(true);
webapp.setLogUrlOnStart(true);
if (extraClassPath != null) {
webapp.setExtraClasspath(extraClassPath);
}
webapp.setExtraClasspath(options.getExtraClassPath());

Server server = new Server(port);
Server server = new Server(options.getPort());
server.setHandler(webapp);

if (welcome) {
System.out.println("Embedded hawtio: You can use --help to show usage");
System.out.println(options.usedOptionsSummary());
}

System.out.println("About to start war " + war);
server.start();

System.out.println();
System.out.println("hawtio: Don't cha wish your console was hawt like me!");
System.out.println("=====================================================");
System.out.println();
System.out.println("http://localhost:" + port + contextPath);
System.out.println();
if (welcome) {
System.out.println();
System.out.println("hawtio: Don't cha wish your console was hawt like me!");
System.out.println("=====================================================");
System.out.println();
System.out.println("http://localhost:" + options.getPort() + options.getContextPath());
System.out.println();
}

if (join) {
System.out.println("Joining the Jetty server thread");
if (welcome) {
System.out.println("Joining the Jetty server thread");
}
server.join();
}
}
Expand Down Expand Up @@ -139,65 +138,51 @@ protected boolean isWarFileName(String name) {
return name.toLowerCase().endsWith(".war");
}

// Properties
//-------------------------------------------------------------------------
public String getContextPath() {
return contextPath;
}

public void setContextPath(String contextPath) {
this.contextPath = contextPath;
public String getWarFileName() {
return options.getWarFileName();
}

public int getPort() {
return port;
public void setWarFileName(String warFileName) {
options.setWarFileName(warFileName);
}

public void setPort(int port) {
this.port = port;
}

public String getWar() {
return war;
public String getWarLocation() {
return options.getWarLocation();
}

public void setWar(String war) {
this.war = war;
public void setWarLocation(String warLocation) {
options.setWarLocation(warLocation);
}

public String[] getWarPaths() {
return warPaths;
public String getContextPath() {
return options.getContextPath();
}

public String getWarLocation() {
return warLocation;
public void setContextPath(String contextPath) {
options.setContextPath(contextPath);
}

public void setWarLocation(String warLocation) {
this.warLocation = warLocation;
public Integer getPort() {
return options.getPort();
}

/**
* Sets a list of paths searched for to find the war if no war property is specified
* via {@link #setWar(String)}
*/
public void setWarPaths(String... warPaths) {
this.warPaths = warPaths;
public void setPort(Integer port) {
options.setPort(port);
}

public String getExtraClassPath() {
return extraClassPath;
return options.getExtraClassPath();
}

public void setExtraClassPath(String extraClassPath) {
this.extraClassPath = extraClassPath;
options.setExtraClassPath(extraClassPath);
}

public boolean isJoinServerThread() {
return joinServerThread;
public boolean isHelp() {
return options.isHelp();
}

public void setJoinServerThread(boolean joinServerThread) {
this.joinServerThread = joinServerThread;
public void showWelcome(boolean welcome) {
this.welcome = welcome;
}
}

0 comments on commit fa73e91

Please sign in to comment.