You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2013/03/10 16:43:04 UTC
svn commit: r1454866 [4/4] -
/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccletSubmit.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccletSubmit.java?rev=1454866&r1=1454865&r2=1454866&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccletSubmit.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccletSubmit.java Sun Mar 10 15:43:03 2013
@@ -18,22 +18,12 @@
*/
package org.apache.uima.ducc.cli;
-import java.io.File;
-import java.io.FileInputStream;
-import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.Properties;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.Options;
-import org.apache.uima.ducc.common.crypto.Crypto;
-import org.apache.uima.ducc.common.utils.DuccPropertiesResolver;
import org.apache.uima.ducc.transport.event.SubmitServiceDuccEvent;
import org.apache.uima.ducc.transport.event.SubmitServiceReplyDuccEvent;
import org.apache.uima.ducc.transport.event.cli.ServiceRequestProperties;
-import org.apache.uima.ducc.transport.event.cli.ServiceSpecificationProperties;
-import org.apache.uima.ducc.transport.event.cli.SpecificationProperties;
/**
@@ -51,14 +41,57 @@ public class DuccletSubmit
int pid = -1;
ServiceRequestProperties serviceRequestProperties;
+ UiOption[] opts = new UiOption[] {
+ UiOption.Help,
+ UiOption.Debug,
+ UiOption.Description,
+ UiOption.LogDirectory,
+ UiOption.ProcessAttachConsole,
+ UiOption.ProcessEnvironment,
+ UiOption.ProcessExecutable,
+ UiOption.ProcessExecutableArgs,
+ UiOption.ProcessFailuresLimit,
+ UiOption.ProcessMemorySize,
+ UiOption.SchedulingClass,
+ UiOption.Specification,
+ UiOption.WorkingDirectory,
+ };
+
+
public DuccletSubmit(String[] args)
throws Exception
{
+ this(args, null);
+ }
+
+ public DuccletSubmit(ArrayList<String> args)
+ throws Exception
+ {
+ this(args, null);
+ }
+
+ public DuccletSubmit(Properties props)
+ throws Exception
+ {
+ this(props, null);
+ }
+
+ public DuccletSubmit(String[] args, IConsoleCallback consoleCb)
+ throws Exception
+ {
+ serviceRequestProperties = new ServiceRequestProperties();
+ init(this.getClass().getName(), opts, args, serviceRequestProperties, or_host, or_port, "or", consoleCb);
+ }
+
+ public DuccletSubmit(ArrayList<String> args, IConsoleCallback consoleCb)
+ throws Exception
+ {
+ String[] arg_array = args.toArray(new String[args.size()]);
serviceRequestProperties = new ServiceRequestProperties();
- init(args, serviceRequestProperties, or_host, or_port, "or");
+ init(this.getClass().getName(), opts, arg_array, serviceRequestProperties, or_host, or_port, "or", consoleCb);
}
- public DuccletSubmit(Properties props)
+ public DuccletSubmit(Properties props, IConsoleCallback consoleCb)
throws Exception
{
serviceRequestProperties = new ServiceRequestProperties();
@@ -68,213 +101,23 @@ public class DuccletSubmit
Object v = props.get(k);
serviceRequestProperties.put(k, v);
}
- init(null, props, or_host, or_port, "or");
+ init(this.getClass().getName(), opts, null, serviceRequestProperties, or_host, or_port, "or", consoleCb);
}
-
- @SuppressWarnings("static-access")
- void addOptions(Options options) {
- options.addOption(OptionBuilder
- .withDescription(DuccUiConstants.desc_help).hasArg(false)
- .withLongOpt(DuccUiConstants.name_help).create());
-
- options.addOption(OptionBuilder
- .withDescription(DuccUiConstants.desc_debug).hasArg(false)
- .withLongOpt(DuccUiConstants.name_debug).create());
-
- options.addOption(OptionBuilder
- .withArgName(DuccUiConstants.parm_description)
- .withDescription(makeDesc(DuccUiConstants.desc_description,DuccUiConstants.exmp_description)).hasArg()
- .withLongOpt(DuccUiConstants.name_description).create());
-
- options.addOption(OptionBuilder
- .withArgName(DuccUiConstants.parm_scheduling_class)
- .withDescription(makeDesc(DuccUiConstants.desc_scheduling_class,DuccUiConstants.exmp_scheduling_class)).hasArg()
- .withLongOpt(DuccUiConstants.name_scheduling_class).create());
-
- options.addOption(OptionBuilder
- .withArgName(DuccUiConstants.parm_log_directory)
- .withDescription(makeDesc(DuccUiConstants.desc_log_directory,DuccUiConstants.exmp_log_directory)).hasArg()
- .withLongOpt(DuccUiConstants.name_log_directory).create());
-
- options.addOption(OptionBuilder
- .withArgName(DuccUiConstants.parm_working_directory)
- .withDescription(makeDesc(DuccUiConstants.desc_working_directory,DuccUiConstants.exmp_working_directory)).hasArg()
- .withLongOpt(DuccUiConstants.name_working_directory).create());
-
- options.addOption(OptionBuilder
- .withArgName(DuccUiConstants.parm_process_environment)
- .withDescription(makeDesc(DuccUiConstants.desc_process_environment,DuccUiConstants.exmp_process_environment)).hasArg()
- .withLongOpt(DuccUiConstants.name_process_environment).create());
-
- options.addOption(OptionBuilder
- .withArgName(DuccUiConstants.parm_process_memory_size)
- .withDescription(makeDesc(DuccUiConstants.desc_process_memory_size,DuccUiConstants.exmp_process_memory_size)).hasArg()
- .withLongOpt(DuccUiConstants.name_process_memory_size).create());
-
- options.addOption(OptionBuilder
- .withArgName(DuccUiConstants.parm_process_failures_limit)
- .withDescription(makeDesc(DuccUiConstants.desc_process_failures_limit,DuccUiConstants.exmp_process_failures_limit)).hasArg()
- .withLongOpt(DuccUiConstants.name_process_failures_limit).create());
-
- options.addOption(OptionBuilder
- .withArgName (DuccUiConstants.parm_specification)
- .withDescription(DuccUiConstants.desc_specification)
- .hasArg (true)
- .withLongOpt (DuccUiConstants.name_specification)
- .create ()
- );
-
- options.addOption(OptionBuilder
- .withDescription(DuccUiConstants.desc_process_attach_console)
- .hasOptionalArg ()
- .withLongOpt (DuccUiConstants.name_process_attach_console)
- .create ()
- );
-
- options.addOption(OptionBuilder
- .withArgName (DuccUiConstants.parm_process_executable)
- .withDescription(makeDesc(DuccUiConstants.desc_process_executable,DuccUiConstants.exmp_process_executable)).hasArg()
- .withLongOpt (DuccUiConstants.name_process_executable)
- .hasArg (true)
- .create ()
- );
-
- options.addOption(OptionBuilder
- .withArgName (DuccUiConstants.parm_process_executable_args)
- .withDescription(makeDesc(DuccUiConstants.desc_process_executable_args,DuccUiConstants.exmp_process_executable_args))
- .hasArgs ()
- .withLongOpt (DuccUiConstants.name_process_executable_args)
- .create ()
- );
- }
-
+
public boolean execute() throws Exception
{
- /*
- * parser is not thread safe?
- */
- synchronized(DuccUi.class) {
- /*
- * marshal user
- */
- String user = DuccUiUtilities.getUser();
- serviceRequestProperties.setProperty(ServiceSpecificationProperties.key_user, user);
- String property = DuccPropertiesResolver.getInstance().getProperty(DuccPropertiesResolver.ducc_signature_required);
- if(property != null) {
- String signatureRequiredProperty = property.trim().toLowerCase();
- if(signatureRequiredProperty.equals("on")) {
- Crypto crypto = new Crypto(System.getProperty("user.home"));
- byte[] cypheredMessage = crypto.encrypt(user);
- serviceRequestProperties.put(ServiceSpecificationProperties.key_signature, cypheredMessage);
- }
- }
- /*
- * marshal command line options into properties
- */
- Option[] optionList = commandLine.getOptions();
- // pass 1
- for (int i=0; i<optionList.length; i++) {
- Option option = optionList[i];
- String name = option.getLongOpt();
- if(name.equals(SpecificationProperties.key_specification)) {
- File file = new File(option.getValue());
- FileInputStream fis = new FileInputStream(file);
- serviceRequestProperties.load(fis);
- }
- }
-
- DuccUiUtilities.trimProperties(serviceRequestProperties);
- // pass 2
- for (int i=0; i<optionList.length; i++) {
- Option option = optionList[i];
- String name = option.getLongOpt();
-
- String value = null;
- if ( option.hasArgs() ) { // if multiple args, make into blank-delimited string for the props file
- String[] arglist = commandLine.getOptionValues(name);
- int len = arglist.length;
- StringBuffer sb = new StringBuffer();
- for ( int ii = 0; ii < len; ii++ ) {
- String a = arglist[ii].trim();
- if ( a.equals("") ) continue;
- sb.append(a);
- if ( ii < (len-1) ) {
- sb.append(", ");
- }
- }
- value = sb.toString();
- } else {
- value = option.getValue();
- }
-
- if(value == null) {
- value = "";
- }
-
- name = trimmer(name);
- value = trimmer(value);
- setProperty(name, value);
- }
- }
+ // These must be enforced for "ducclets"
+ serviceRequestProperties.setProperty(UiOption.ProcessThreadCount.pname(), "1");
+ serviceRequestProperties.setProperty(UiOption.ProcessDeploymentsMax.pname(), "1");
+ serviceRequestProperties.put(UiOption.ServiceTypeOther.pname(), "");
/*
- * make sure the logdir is actually legal.
- */
- String log_directory = getLogDirectory(serviceRequestProperties);
- if ( log_directory == null ) { // on failure, the internal errors are already set
- return false;
- }
-
- // tack on "services" or "processes" to complete logging directory
- if(log_directory.endsWith(File.separator)) {
- log_directory = log_directory + "processes";
- } else {
- log_directory = log_directory + File.separator + "processes";
- }
- serviceRequestProperties.setProperty("log_directory", log_directory);
-
- /*
- * employ default working directory if not specified
- */
- String working_directory = serviceRequestProperties.getProperty(ServiceRequestProperties.key_working_directory);
- if(working_directory == null) {
- working_directory = System.getProperty("user.dir");
- serviceRequestProperties.setProperty(ServiceRequestProperties.key_working_directory,working_directory);
- }
-
- // These must be enforce so OR doesn't complain
- serviceRequestProperties.setProperty(DuccUiConstants.name_process_thread_count, "1");
- serviceRequestProperties.setProperty(DuccUiConstants.name_process_deployments_max, "1");
-
- serviceRequestProperties.put(ServiceRequestProperties.key_service_type_other, "");
-
- if(serviceRequestProperties.containsKey(DuccUiConstants.name_debug)) {
- serviceRequestProperties.dump();
- }
-
- /*
* set DUCC_LD_LIBRARY_PATH in process environment
*/
- adjustLdLibraryPath(serviceRequestProperties, ServiceRequestProperties.key_process_environment);
-
- /*
- * identify invoker
- */
- serviceRequestProperties.setProperty(ServiceRequestProperties.key_submitter_pid_at_host, ManagementFactory.getRuntimeMXBean().getName());
+ adjustLdLibraryPath(serviceRequestProperties, UiOption.ProcessEnvironment.pname());
- console_attach =
- serviceRequestProperties.containsKey(DuccUiConstants.name_process_attach_console);
-
- if ( console_attach ) {
- try {
- startConsoleListener();
- } catch ( Throwable t ) {
- throw new IllegalStateException("Cannot start console listener. Reason:" + t.getMessage());
- }
- set_console_port(serviceRequestProperties, DuccUiConstants.name_process_environment);
- }
SubmitServiceDuccEvent ev = new SubmitServiceDuccEvent(serviceRequestProperties);
SubmitServiceReplyDuccEvent reply = null;
@@ -294,20 +137,20 @@ public class DuccletSubmit
boolean retval = true;
Properties properties = reply.getProperties();
@SuppressWarnings("unchecked")
- ArrayList<String> or_warnings = (ArrayList<String>) properties.get(ServiceSpecificationProperties.key_submit_warnings);
+ ArrayList<String> or_warnings = (ArrayList<String>) properties.get(UiOption.SubmitWarnings.pname());
if (or_warnings != null) {
addWarnings(or_warnings);
}
@SuppressWarnings("unchecked")
- ArrayList<String> or_errors = (ArrayList<String>) properties.get(ServiceSpecificationProperties.key_submit_errors);
+ ArrayList<String> or_errors = (ArrayList<String>) properties.get(UiOption.SubmitErrors.pname());
if(or_errors != null) {
addErrors(or_errors);
retval = false;
}
if ( retval ) {
- String pid = reply.getProperties().getProperty(ServiceRequestProperties.key_id);
+ String pid = reply.getProperties().getProperty(UiOption.JobId.pname());
if (pid == null ) {
retval = false;
} else {
@@ -315,7 +158,8 @@ public class DuccletSubmit
if ( friendlyId < 0 ) {
retval = false;
} else {
- saveSpec(pid, "process.properties", serviceRequestProperties);
+ saveSpec("process.properties", serviceRequestProperties);
+ startMonitors(); // starts conditionally, based on job spec and console listener present
}
}
}
@@ -327,7 +171,7 @@ public class DuccletSubmit
{
try {
// Instantiate the object with args similar to the CLI, or a pre-built properties file
- DuccletSubmit ds = new DuccletSubmit(args);
+ DuccletSubmit ds = new DuccletSubmit(args);
// Run the API. If process_attach_console was specified in the args, a console listener is
// started but this call does NOT block on it.
@@ -361,12 +205,8 @@ public class DuccletSubmit
// Fetch the Ducc ID
System.out.println("Process " + ds.getDuccId() + " submitted.");
-
- // If there is a console listener, you can block now
- if ( ds.isConsoleAttached() ) {
- ds.waitForCompletion();
- }
-
+ ds.waitForCompletion();
+ System.out.println("Job return code: " + ds.getReturnCode());
System.exit(0);
} else {
System.out.println("Could not submit process");
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IConsoleCallback.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IConsoleCallback.java?rev=1454866&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IConsoleCallback.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IConsoleCallback.java Sun Mar 10 15:43:03 2013
@@ -0,0 +1,7 @@
+package org.apache.uima.ducc.cli;
+
+public interface IConsoleCallback
+{
+ public void stdout(String host, String filename, String msg);
+ public void stderr(String host, String filename, String msg);
+}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IServiceApi.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IServiceApi.java?rev=1454866&r1=1454865&r2=1454866&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IServiceApi.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IServiceApi.java Sun Mar 10 15:43:03 2013
@@ -154,7 +154,7 @@ public interface IServiceApi
},
ServicePingDoLog {
- public String decode() { return "service_ping_do_log"; }
+ public String decode() { return "service_ping_dolog"; }
public String description() { return "If specified, log the pinger, else suppress the log."; }
public String argname() { return "none"; }
},
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java?rev=1454866&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java Sun Mar 10 15:43:03 2013
@@ -0,0 +1,813 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.uima.ducc.cli;
+
+import org.apache.uima.ducc.common.jd.plugin.IJdProcessExceptionHandler;
+import org.apache.uima.ducc.transport.event.cli.JobReplyProperties;
+import org.apache.uima.ducc.transport.event.cli.JobRequestProperties;
+import org.apache.uima.ducc.transport.event.cli.JobSpecificationProperties;
+import org.apache.uima.ducc.transport.event.cli.ReservationRequestProperties;
+import org.apache.uima.ducc.transport.event.cli.ReservationSpecificationProperties;
+import org.apache.uima.ducc.transport.event.cli.ServiceRequestProperties;
+
+/**
+ * These are the constants supported by the 'not-using-a-props-file' form of registration in DuccServiceApi.
+ *
+ * There are here so that hopefully we can avoid touching anything in common or transport when updating
+ * the registration parameters.
+ */
+
+public interface IUiOptions
+{
+ //
+ // decode() mean convert the enum into the string the user uses
+ // encode() means take the user's string and turn it into th enum
+ // description() is a short description of the option for the commons cli parser
+ // argname() is a name for the argument for the usage() part of cli parser
+ //
+
+
+
+ public enum UiOption
+ {
+ CancelJobOnInterrupt {
+ public String pname() { return "cancel_job_on_interrupt"; }
+ public String argname() { return null; }
+ public String description() { return "Cancel job on interrupt (Ctrl-C); only possible when --" + WaitForCompletion.pname() +" is also specified."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ClasspathOrder {
+ public String pname() { return JobSpecificationProperties.key_classpath_order; }
+ public String argname() { return ClasspathOrderParms.UserBeforeDucc.name() + " or " + ClasspathOrderParms.DuccBeforeUser.name(); }
+ public String description() { return "Specify user-supplied classpath before DUCC-supplied classpath, or the reverse."; }
+ public String example() { return null; }
+ public String deflt() { return ClasspathOrderParms.UserBeforeDucc.name(); }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ Debug {
+ public String pname() { return "debug"; }
+ public String argname() { return null; }
+ public String description() { return "Enable CLI Debugging messages."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ DjPid {
+ public String pname() { return JobRequestProperties.key_dpid; }
+ public String argname() { return "number"; }
+ public String description() { return "DUCC Process Id. If specified only this DUCC process will be canceled. If not specified, then entire job will be canceled.";}
+ public String example() { return "22"; }
+ public String deflt() { return null; }
+ public String label() { return "Ducc Process Id"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ DriverDebug {
+ public String pname() { return "driver_debug"; }
+ public String argname() { return "debugger-port-number"; }
+ public String description() { return "Append JVM debug flags to the jvm arguments to start the JobDriver in remote debug mode."; }
+ public String example() { return "driver_debug 8001"; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessDebug"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ Description {
+ public String pname() { return JobSpecificationProperties.key_description; }
+ public String argname() { return "string"; }
+ public String description() { return "Description of the run."; }
+ public String example() { return "--description My excellent job!"; }
+ public String deflt() { return null; }
+ public String label() { return "Description"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ DriverAttachConsole {
+ public String pname() { return "driver_attach_console"; }
+ public String argname() { return null; }
+ public String description() { return "If specified, redirect remote job driver stdout and stderr to the local submitting console."; }
+ public String example() { return null; }
+ public String deflt() { return "Do not redirect the console"; }
+ public String label() { return "DriverAttachConsole"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ DriverClasspath {
+ public String pname() { return JobSpecificationProperties.key_driver_classpath; }
+ public String description() { return "Classpath for the Job driver. Default is current classpath."; }
+ public String argname() { return "java classpath"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "DriverClassPath"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ DriverDescriptorCR {
+ public String pname() { return JobSpecificationProperties.key_driver_descriptor_CR; }
+ public String description() { return "Driver (collection reader) descriptor."; }
+ public String argname() { return "descriptor xml"; }
+ public String example() { return "/home/" + System.getProperty("user.name") + "/descriptors/MyCR.xml"; }
+ public String deflt() { return null; }
+ public String label() { return "DriverDescriptorCR"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return true; }
+ },
+
+ DriverDescriptorCROverrides {
+ public String pname() { return JobSpecificationProperties.key_driver_descriptor_CR_overrides; }
+ public String argname() { return "list of overrides"; }
+ public String description() { return "Driver Collection Reader configuration parameter name/value pair overrides. Parameters must already be defined in the CR descriptor."; }
+ public String example() { return "name1=value1,name2=\"value2a value2b value2c\",name3=value3..."; }
+ public String deflt() { return null; }
+ public String label() { return "DriverDescriptorCROverrides"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ DriverEnvironment {
+ public String pname() { return JobSpecificationProperties.key_driver_environment; }
+ public String argname() { return "env vars"; }
+ public String description() { return "Blank-delimeted list of environment variables."; }
+ public String example() { return "\"TERM=xterm DISPLAY=me.org.net:1.0\""; }
+ public String deflt() { return null; }
+ public String label() { return "DriverEnvironment"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ DriverExceptionHandler {
+ public String pname() { return JobSpecificationProperties.key_driver_exception_handler; }
+ public String description() { return "Driver Exception handler class. Must implement "+IJdProcessExceptionHandler.class.getName(); }
+ public String argname() { return "path.classname"; }
+ public String example() { return "org.apache.uima.ducc.myProject.MyDriverExceptionHandler"; }
+ public String deflt() { return "org.apache.uima.ducc.common.jd.plugin.JdProcessExceptionHandler"; }
+ public String label() { return "DriverExceptionHandler"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ DriverJvmArgs {
+ public String pname() { return JobSpecificationProperties.key_driver_jvm_args; }
+ public String argname() { return "jvm arguments"; }
+ public String description() { return "Blank-delimeted list of JVM Arguments passed to the job driver."; }
+ public String example() { return "-Xmx100M -DMYVAR=foo"; }
+ public String deflt() { return null; }
+ public String label() { return "DriverJvmArgs"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ Help {
+ public String pname() { return "help"; }
+ public String argname() { return null; }
+ public String description() { return "Print this help message"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ JobId {
+ public String pname() { return JobRequestProperties.key_id; }
+ public String argname() { return "string"; }
+ public String description() { return "The id of the job"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return true; }
+ },
+
+ Jvm {
+ public String pname() { return JobSpecificationProperties.key_jvm; }
+ public String argname() { return "path-name-to-java"; }
+ public String description() { return "The jvm to use. Must be a full path to the 'java' executable. Default is\n the jvm that DUCC is using."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "Jvm"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ LogDirectory {
+ public String pname() { return JobSpecificationProperties.key_log_directory; }
+ public String argname() { return "path"; }
+ public String description() { return "The directory where logs are written. Default: $HOME/ducc/logs"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "LogDirectory"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ Message {
+ public String pname() { return JobReplyProperties.key_message; }
+ public String argname() { return "string"; }
+ public String description() { return "Orchestrator response string - internally generated."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ NumberOfInstances {
+ public String pname() { return ReservationSpecificationProperties.key_number_of_instances; }
+ public String argname() { return "integer"; }
+ public String description() { return "Number of instances to reserve"; }
+ public String example() { return "1"; }
+ public String deflt() { return "1"; }
+ public String label() { return "Number of instances"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServicePingClass {
+ public String pname() { return "service_ping_class"; }
+ public String argname() { return "classname"; }
+ public String description() { return "Class to ping ervice, must extend AServicePing.java"; }
+ public String example() { return "org.bob.Pinger"; }
+ public String deflt() { return ""; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServicePingClasspath {
+ public String pname() { return "service_ping_classpath"; }
+ public String argname() { return "classpath"; }
+ public String description() { return "Classpath containing service_custom_ping class and dependencies."; }
+ public String example() { return "Bob.jar"; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServicePingJvmArgs {
+ public String pname() { return "service_ping_jvm_args"; }
+ public String argname() { return "java-system-property-assignments"; }
+ public String description() { return "-D jvm system property assignments to pass to jvm"; }
+ public String example() { return "-DxmX=3"; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServicePingTimeout {
+ public String pname() { return "service_ping_timeout"; }
+ public String argname() { return "time-in-ms"; }
+ public String description() { return "Time in milliseconds to wait for a ping to the service."; }
+ public String example() { return "1000"; }
+ public String deflt() { return "500"; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServicePingDoLog {
+ public String pname() { return "service_ping_dolog"; }
+ public String argname() { return "boolean"; }
+ public String description() { return "If specified, log the pinger, else suppress the log."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServiceTypeCustom {
+ public String pname() { return ServiceRequestProperties.key_service_type_custom; }
+ public String argname() { return null; }
+ public String description() { return "Service type - internally generated"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServiceTypeOther {
+ public String pname() { return ServiceRequestProperties.key_service_type_other; }
+ public String argname() { return null; }
+ public String description() { return "Service type - internally generated"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServiceTypeUima {
+ public String pname() { return ServiceRequestProperties.key_service_type_uima; }
+ public String argname() { return null; }
+ public String description() { return "Service type - internally generated"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ SubmitPid {
+ // generated
+ public String pname() { return JobRequestProperties.key_submitter_pid_at_host; }
+ public String argname() { return null; }
+ public String description() { return null; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessAttachConsole {
+ public String pname() { return "process_attach_console"; }
+ public String argname() { return null; }
+ public String description() { return "If specified, redirect remote process stdout and stderr to the local submitting console."; }
+ public String example() { return null; }
+ public String deflt() { return "Do not redirect the console"; }
+ public String label() { return "ProcessAttachConsole"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessDebug {
+ public String pname() { return "process_debug"; }
+ public String argname() { return "debugger-port-number"; }
+ public String description() { return "Append JVM debug flags to the jvm arguments to start the Job Process in remobe debug mode."; }
+ public String example() { return "--process_debug 8000"; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessDebug"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessClasspath {
+ public String pname() { return JobSpecificationProperties.key_process_classpath; }
+ public String description() { return "Classpath for each job process. Default is current classpath."; }
+ public String argname() { return "java classpath"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "processClassPath"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessDescriptorAE {
+ public String pname() { return JobSpecificationProperties.key_process_descriptor_AE; }
+ public String description() { return "Process Analysis Enginefor aggregate."; }
+ public String argname() { return "descriptor xml"; }
+ public String example() { return "/home/" + System.getProperty("user.name") + "/descriptors/MyAE.xml"; }
+ public String deflt() { return null; }
+ public String label() { return "DriverDescriptorAE"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessDescriptorAEOverrides {
+ public String pname() { return JobSpecificationProperties.key_process_descriptor_AE_overrides; }
+ public String argname() { return "list of overrides"; }
+ public String description() { return "Process Analysis Engine configuration parameter name/value pair overrides. Parameters must already be defined in the AE descriptor."; }
+ public String example() { return "name1=value1,name2=\"value2a value2b value2c\",name3=value3..."; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessDescriptorAEOverrides"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ ProcessDescriptorCC {
+ public String pname() { return JobSpecificationProperties.key_process_descriptor_CC; }
+ public String description() { return "Process CAS Consumer for aggregate."; }
+ public String argname() { return "descriptor xml"; }
+ public String example() { return "/home/" + System.getProperty("user.name") + "/descriptors/MyCC.xml"; }
+ public String deflt() { return null; }
+ public String label() { return "DriverDescriptorCC"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessDescriptorCCOverrides {
+ public String pname() { return JobSpecificationProperties.key_process_descriptor_CC_overrides; }
+ public String argname() { return "list of overrides"; }
+ public String description() { return "Process CAS Consumer configuration parameter name/value pair overrides. Parameters must already be defined in the CC descriptor."; }
+ public String example() { return "name1=value1,name2=\"value2a value2b value2c\",name3=value3..."; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessDescriptorCCOverrides"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessDescriptorCM {
+ public String pname() { return JobSpecificationProperties.key_process_descriptor_CM; }
+ public String description() { return "Process CAS Multiplier for aggregate."; }
+ public String argname() { return "descriptor xml"; }
+ public String example() { return "/home/" + System.getProperty("user.name") + "/descriptors/MyCM.xml"; }
+ public String deflt() { return null; }
+ public String label() { return "DriverDescriptorCM"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessDescriptorCMOverrides {
+ public String pname() { return JobSpecificationProperties.key_process_descriptor_CM_overrides; }
+ public String argname() { return "list of overrides"; }
+ public String description() { return "Process CAS Multiplier configuration parameter name/value pair overrides. Parameters must already be defined in the CM descriptor."; }
+ public String example() { return "name1=value1,name2=\"value2a value2b value2c\",name3=value3..."; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessDescriptorCMOverrides"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+
+ ProcessDD {
+ public String pname() { return JobSpecificationProperties.key_process_DD; }
+ public String description() { return "Process deployment descriptor (mutually exclusive with CM+AE+CC)."; }
+ public String argname() { return "dd.xml"; }
+ public String example() { return "/home/" + System.getProperty("user.name") + "/descriptors/MyDD.xml"; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessDD"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessDeploymentsMax {
+ public String pname() { return JobSpecificationProperties.key_process_deployments_max; }
+ public String description() { return "Maximum number of processes dispatched for this job at any time.."; }
+ public String argname() { return "integer"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessDeploymentsMax"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ ProcessEnvironment {
+ public String pname() { return JobSpecificationProperties.key_process_environment; }
+ public String argname() { return "environment-var-list"; }
+ public String description() { return "Blank delimeted list of Environment variables."; }
+ public String example() { return "A=B MYENV=foo"; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessEnvironment"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessExecutable {
+ public String pname() { return JobSpecificationProperties.key_process_executable; }
+ public String argname() { return "program name"; }
+ public String description() { return "The full path to a program to be executed."; }
+ public String example() { return "/bin/ls"; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessExecutableArgs {
+ public String pname() { return JobSpecificationProperties.key_process_executable_args; }
+ public String argname() { return "argument list"; }
+ public String description() { return "Blank-delimited list of arguments for " + ProcessExecutable.pname(); }
+ public String example() { return "-a -t -l"; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessGetMetaTimeMax {
+ public String pname() { return JobSpecificationProperties.key_process_get_meta_time_max; }
+ public String description() { return "Maximum elapsed time (in minutes) for processing getMeta."; }
+ public String argname() { return "integer"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ ProcessInitializationFailuresCap {
+ public String pname() { return JobSpecificationProperties.key_process_initialization_failures_cap; }
+ public String description() { return "Maximum number of independent job process initialization failures (i.e. System.exit(), kill-15...) before the number of Job Processes is capped at the number in state Running currently. Default is " + deflt() + "."; }
+ public String argname() { return "integer"; }
+ public String example() { return null; }
+ public String deflt() { return "99"; }
+ public String label() { return "ProcessInitializationFailuresCap"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessFailuresLimit {
+ public String pname() { return JobSpecificationProperties.key_process_failures_limit; }
+ public String description() { return "Maximum number of independent job process failures (i.e. System.exit(), kill-15...) before job is terminated."; }
+ public String argname() { return "integer"; }
+ public String example() { return null; }
+ public String deflt() { return "20"; }
+ public String label() { return "ProcessFailuresLimit"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ ProcessJvmArgs {
+ public String pname() { return JobSpecificationProperties.key_process_jvm_args; }
+ public String argname() { return "jvm arguments"; }
+ public String description() { return "Blank-delimeted list of JVM Arguments passed to each process"; }
+ public String example() { return "-Xmx100M -DMYVAR=foo"; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessJvmArgs"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ ProcessMemorySize {
+ public String pname() { return JobSpecificationProperties.key_process_memory_size; }
+ public String argname() { return "size-in-GB"; }
+ public String description() { return "Maximum memory for each process, in GB."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessMemorySize"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessThreadCount {
+ public String pname() { return JobSpecificationProperties.key_process_thread_count; }
+ public String description() { return "Number of pipelines per deployment (i.e. UIMA pipelines per UIMA-AS service copy)."; }
+ public String argname() { return "integer"; }
+ public String example() { return null; }
+ public String deflt() { return "4"; }
+ public String label() { return "ProcessThreadCount"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ProcessPerItemTimeMax {
+ public String pname() { return JobSpecificationProperties.key_process_per_item_time_max; }
+ public String description() { return "Maximum elapsed time (in minutes) for processing one CAS."; }
+ public String argname() { return "integer"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ Reason {
+ // generated, not public
+ public String pname() { return JobRequestProperties.key_reason; }
+ public String argname() { return "quoted text"; }
+ public String description() { return "Reason for the cancel"; }
+ public String example() { return "Back to the drawing board"; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ReservationMemorySize {
+ public String pname() { return ReservationSpecificationProperties.key_instance_memory_size; }
+ public String argname() { return "size[KB|MB|GB|TB]"; }
+ public String description() { return "Size of instance's memory, defaults to GB if units omitted."; }
+ public String example() { return "64GB"; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return true; }
+ },
+
+ ReservationNodeList {
+ // generated, not public
+ public String pname() { return ReservationRequestProperties.key_node_list; }
+ public String argname() { return "string"; }
+ public String description() { return "Set of nodes reserved - internall generated."; }
+ public String example() { return "Back to the drawing board"; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ SchedulingClass {
+ public String pname() { return JobSpecificationProperties.key_scheduling_class; }
+ public String argname() { return "scheduling class name"; }
+ public String description() { return "The class to run the job in."; }
+ public String example() { return "A=B MYENV=foo"; }
+ public String deflt() { return null; }
+ public String label() { return "SchedulingClass"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return true; }
+ },
+
+ ServiceLinger {
+ public String pname() { return "service_linger"; }
+ public String argname() { return "seconds"; }
+ public String description() { return "Time in milliseconds to wait after last referring job or service exits before stopping a non-autostarted service."; }
+ public String example() { return "--service_linger 1000"; }
+ public String deflt() { return "300000"; } // 5 minutes
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServiceDependency {
+ public String pname() { return JobSpecificationProperties.key_service_dependency; }
+ public String argname() { return "list"; }
+ public String description() { return "List of service descriptor strings."; }
+ public String example() { return "UIMA-AS:RandomSleepAE:tcp://bluej672:61616 CUSTOM:myservice";}
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ ServiceRequestEndpoint {
+ // registration option
+ public String pname() { return ServiceRequestProperties.key_service_request_endpoint; }
+ public String argname() { return "string"; }
+ public String description() { return "Unique id for this service. Usually inferred for UIMA-AS services."; }
+ public String example() { return "UIMA-AS:queueName:ActiveMqUrl"; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ Signature {
+ // generated, not public
+ public String pname() { return JobSpecificationProperties.key_signature; }
+ public String argname() { return null; }
+ public String description() { return null; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+ Specification {
+ public String pname() { return JobSpecificationProperties.key_specification; }
+ public String argname() { return "file"; }
+ public String description() { return "Properties file comprising the specification, where the keys are names of parameters. Individual parameters take precedence over those specified in properties file, if any."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ SubmitErrors {
+ // generated, not public
+ public String pname() { return JobSpecificationProperties.key_submit_errors; }
+ public String argname() { return null; }
+ public String description() { return null; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ SubmitWarnings {
+ // generated, not public
+ public String pname() { return JobSpecificationProperties.key_submit_warnings; }
+ public String argname() { return null; }
+ public String description() { return null; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ Timestamp {
+ public String pname() { return "timestamp"; }
+ public String argname() { return null; }
+ public String description() { return "Enables timestamp on monitor messages."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "ProcessTimestamp"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ User {
+ public String pname() { return JobSpecificationProperties.key_user; };
+ public String argname() { return "userid"; }
+ public String description() { return "Filled in (and overridden) by the CLI, the id of the submitting user."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return null; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ WaitForCompletion {
+ public String pname() { return "wait_for_completion"; }
+ public String argname() { return null; }
+ public String description() { return "Do not exit until job is completed."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return name(); }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
+
+ WorkingDirectory {
+ public String pname() { return JobSpecificationProperties.key_working_directory; }
+ public String argname() { return "path"; }
+ public String description() { return "The working directory set in each process. Default to current directory."; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "WorkingDirectory"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+ ;
+
+ public abstract String pname(); // name of the option, e.g. --description
+ public abstract String argname(); // type of its argument, or null if none
+ public abstract boolean multiargs(); // the option can have >1 arg
+ public abstract boolean required(); // this option is required
+ public abstract String description(); // description of what it is
+ public abstract String example(); // example of usage
+ public abstract String deflt(); // defalt, or ""
+ public abstract String label(); // Parameter name for label in web form
+
+ public String makeDesc()
+ {
+ if ( example() == null ) return description();
+ return description() + "\nexample: " + example();
+ }
+ };
+
+ public enum ClasspathOrderParms
+ {
+ UserBeforeDucc {
+ public String pname() { return DuccUiConstants.classpath_order_user_before_ducc; }
+ public String description() { return "Start process with user's classpath ahead of DUCC's"; }
+ },
+ DuccBeforeUser {
+ public String pname() { return DuccUiConstants.classpath_order_ducc_before_user; }
+ public String description() { return "Start process with DUCC's classpath ahead of user's"; }
+ },
+ Unknown {
+ public String pname() { return "unknown"; }
+ public String description() { return "Illegal argument"; }
+ },
+ ;
+
+ public abstract String pname();
+ public abstract String description();
+
+ };
+
+}
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java?rev=1454866&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java Sun Mar 10 15:43:03 2013
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.uima.ducc.cli;
+
+import java.util.ArrayList;
+
+import org.apache.uima.ducc.cli.IUiOptions.UiOption;
+import org.apache.uima.ducc.common.utils.DuccProperties;
+
+
+class MonitorListener
+ implements Runnable
+{
+ CliBase base = null;
+ long jobid = 0;
+ DuccProperties props = null;
+ boolean quiet = false;
+
+ DuccJobMonitor monitor = null;
+
+ MonitorListener(CliBase base, long jobid, DuccProperties props, boolean quiet)
+ {
+ this.base = base;
+ this.jobid = jobid;
+ this.props = props;
+ this.quiet = quiet;
+ }
+
+ public void run()
+ {
+ int retVal = 0;
+ try {
+ ArrayList<String> arrayList = new ArrayList<String>();
+ arrayList.add("--" + UiOption.JobId.pname());
+ arrayList.add(""+jobid);
+
+ if(props.containsKey(UiOption.Debug.pname())) {
+ arrayList.add("--" + UiOption.Debug.pname());
+ }
+
+ if(props.containsKey(DuccUiConstants.name_timestamp)) {
+ arrayList.add("--"+DuccUiConstants.name_timestamp);
+ }
+
+ if(props.containsKey(DuccUiConstants.name_submit_cancel_job_on_interrupt)) {
+ arrayList.add("--"+DuccUiConstants.name_monitor_cancel_job_on_interrupt);
+ }
+
+ String[] argList = arrayList.toArray(new String[0]);
+ monitor = new DuccJobMonitor(quiet);
+ retVal = monitor.run(argList);
+ } catch (Exception e) {
+ base.addMessage(e.getMessage());
+ retVal = DuccUiConstants.ERROR;
+ }
+ base.monitorExits(retVal);
+ }
+
+ void shutdown()
+ {
+ if ( monitor != null ) {
+ monitor.cancel();
+ }
+ }
+
+}