in src/main/java/org/apache/commons/daemon/support/DaemonWrapper.java [88:168]
public void init(final DaemonContext context)
throws Exception
{
final String[] args = context.getArguments();
if (args != null) {
int i;
// Parse our arguments and remove them
// from the final argument array we are
// passing to our child.
arguments:
for (i = 0; i < args.length; i++) {
if (args[i].equals("--")) {
// Done with argument processing
break;
}
switch (args[i]) {
case "-daemon-properties":
if (++i == args.length) {
throw new IllegalArgumentException(args[i - 1]);
}
configFileName = args[i];
break;
case "-start":
if (++i == args.length) {
throw new IllegalArgumentException(args[i - 1]);
}
startup.setClassName(args[i]);
break;
case "-start-method":
if (++i == args.length) {
throw new IllegalArgumentException(args[i - 1]);
}
startup.setMethodName(args[i]);
break;
case "-stop":
if (++i == args.length) {
throw new IllegalArgumentException(args[i - 1]);
}
shutdown.setClassName(args[i]);
break;
case "-stop-method":
if (++i == args.length) {
throw new IllegalArgumentException(args[i - 1]);
}
shutdown.setMethodName(args[i]);
break;
case "-stop-argument":
if (++i == args.length) {
throw new IllegalArgumentException(args[i - 1]);
}
final String[] aa = new String[1];
aa[0] = args[i];
shutdown.addArguments(aa);
break;
default:
// This is not our option.
// Everything else will be forwarded to the main
break arguments;
}
}
if (args.length > i) {
final String[] copy = new String[args.length - i];
System.arraycopy(args, i, copy, 0, copy.length);
startup.addArguments(copy);
}
}
if (config.load(configFileName)) {
// Setup params if not set via cmdline.
startup.setClassName(config.getProperty(START_CLASS));
startup.setMethodName(config.getProperty(START_METHOD));
// Merge the config with command line arguments
startup.addArguments(config.getPropertyArray(ARGS));
shutdown.setClassName(config.getProperty(STOP_CLASS));
shutdown.setMethodName(config.getProperty(STOP_METHOD));
shutdown.addArguments(config.getPropertyArray(STOP_ARGS));
}
startup.validate();
shutdown.validate();
}