in src/main/java/org/apache/sling/launchpad/app/Main.java [724:850]
static Map<String, String> convertCommandLineArgs(
Map<String, String> rawArgs) {
final HashMap<String, String> props = new HashMap<String, String>();
boolean errorArg = false;
for (Entry<String, String> arg : rawArgs.entrySet()) {
if (arg.getKey().length() == 1 || arg.getKey().startsWith("D")) {
String value = arg.getValue();
switch (arg.getKey().charAt(0)) {
case 'j':
if (value == arg.getKey()) {
errorArg("-j", "Missing host:port value");
errorArg = true;
continue;
}
props.put(PROP_CONTROL_SOCKET, value);
break;
case 'l':
if (value == arg.getKey()) {
errorArg("-l", "Missing log level value");
errorArg = true;
continue;
}
props.put(PROP_LOG_LEVEL, value);
break;
case 'f':
if (value == arg.getKey()) {
errorArg("-f", "Missing log file value");
errorArg = true;
continue;
} else if ("-".equals(value)) {
value = "";
}
props.put(PROP_LOG_FILE, value);
break;
case 'c':
if (value == arg.getKey()) {
errorArg("-c", "Missing directory value");
errorArg = true;
continue;
}
props.put(SharedConstants.SLING_HOME, value);
break;
case 'i':
if (value == arg.getKey()) {
errorArg("-i", "Missing launchpad directory value");
errorArg = true;
continue;
}
props.put(SharedConstants.SLING_LAUNCHPAD, value);
break;
case 'a':
if (value == arg.getKey()) {
errorArg("-a", "Missing address value");
errorArg = true;
continue;
}
props.put(PROP_HOST, value);
break;
case 'p':
if (value == arg.getKey()) {
errorArg("-p", "Missing port value");
errorArg = true;
continue;
}
try {
// just to verify it is a number
Integer.parseInt(value);
props.put(PROP_PORT, value);
} catch (RuntimeException e) {
errorArg("-p", "Bad port: " + value);
errorArg = true;
}
break;
case 'r':
if (value == arg.getKey()) {
errorArg("-r", "Missing root path value");
errorArg = true;
continue;
}
props.put(PROP_CONTEXT_PATH, value);
break;
case 'n':
props.put(PROP_SHUTDOWN_HOOK, Boolean.FALSE.toString());
break;
case 'D':
if (value == arg.getKey()) {
errorArg("-D", "Missing property assignment");
errorArg = true;
continue;
}
if (arg.getKey().length() > 1) {
//Dfoo=bar arg.key=Dfoo and arg.value=bar
props.put(arg.getKey().substring(1), arg.getValue());
} else {
//D foo=bar arg.key=D and arg.value=foo=bar
String[] parts = value.split("=");
int valueIdx = (parts.length > 1) ? 1 : 0;
props.put(parts[0], parts[valueIdx]);
}
break;
default:
errorArg("-" + arg.getKey(), "Unrecognized option");
errorArg = true;
break;
}
} else if ("start".equals(arg.getKey())
|| "stop".equals(arg.getKey())
|| "status".equals(arg.getKey())
|| "threads".equals(arg.getKey())) {
props.put(PROP_CONTROL_ACTION, arg.getValue());
} else {
errorArg(arg.getKey(), "Unrecognized option");
errorArg = true;
}
}
return errorArg ? null : props;
}