You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2013/01/31 12:25:41 UTC

svn commit: r1440914 - in /uima/sandbox/uima-ducc/trunk: uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/ uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/

Author: degenaro
Date: Thu Jan 31 11:25:41 2013
New Revision: 1440914

URL: http://svn.apache.org/viewvc?rev=1440914&view=rev
Log:
UIMA-2627 Fix NPE in OR when submitting Job/Reservation/Service with missing value(s)

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/ReservationRequestProperties.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java?rev=1440914&r1=1440913&r2=1440914&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java Thu Jan 31 11:25:41 2013
@@ -36,6 +36,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Properties;
+import java.util.Set;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
@@ -898,6 +899,29 @@ public class DuccJobSubmit extends DuccU
             return DuccUiConstants.ERROR;
         }
 
+        boolean missingValue = false;
+        Set<Object> keys = jobRequestProperties.keySet();
+        for(Object key : keys) {
+        	if(JobRequestProperties.keys_requiring_values.contains(key)) {
+        		Object oValue = jobRequestProperties.get(key);
+        		if(oValue == null) {
+        			duccMessageProcessor.err("missing value for: "+key);
+        			missingValue = true;
+        		}
+        		else if(oValue instanceof String) {
+        			String sValue = (String)oValue;
+        			if(sValue.trim().length() < 1) {
+            			duccMessageProcessor.err("missing value for: "+key);
+            			missingValue = true;
+            		}
+        		}
+        		
+        	}
+        }
+        if(missingValue) {
+        	return DuccUiConstants.ERROR;
+        }
+        
 		/*
 		 * send to JM & get reply
 		 */

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java?rev=1440914&r1=1440913&r2=1440914&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java Thu Jan 31 11:25:41 2013
@@ -24,6 +24,7 @@ import java.lang.management.ManagementFa
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
+import java.util.Set;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
@@ -41,6 +42,7 @@ import org.apache.uima.ducc.transport.di
 import org.apache.uima.ducc.transport.event.DuccEvent;
 import org.apache.uima.ducc.transport.event.SubmitReservationDuccEvent;
 import org.apache.uima.ducc.transport.event.SubmitReservationReplyDuccEvent;
+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.SpecificationProperties;
@@ -220,6 +222,30 @@ public class DuccReservationSubmit exten
 		 * identify invoker
 		 */
 		reservationRequestProperties.setProperty(ReservationRequestProperties.key_submitter_pid_at_host, ManagementFactory.getRuntimeMXBean().getName());
+		
+        boolean missingValue = false;
+        Set<Object> keys = reservationRequestProperties.keySet();
+        for(Object key : keys) {
+        	if(ReservationRequestProperties.keys_requiring_values.contains(key)) {
+        		Object oValue = reservationRequestProperties.get(key);
+        		if(oValue == null) {
+        			duccMessageProcessor.err("missing value for: "+key);
+        			missingValue = true;
+        		}
+        		else if(oValue instanceof String) {
+        			String sValue = (String)oValue;
+        			if(sValue.trim().length() < 1) {
+            			duccMessageProcessor.err("missing value for: "+key);
+            			missingValue = true;
+            		}
+        		}
+        		
+        	}
+        }
+        if(missingValue) {
+        	return DuccUiConstants.ERROR;
+        }
+		
 		/*
 		 * send to Orchestrator & get reply
 		 */

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java?rev=1440914&r1=1440913&r2=1440914&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java Thu Jan 31 11:25:41 2013
@@ -28,6 +28,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 import java.util.Map.Entry;
 import java.util.Properties;
 
@@ -50,6 +51,7 @@ import org.apache.uima.ducc.transport.di
 import org.apache.uima.ducc.transport.event.DuccEvent;
 import org.apache.uima.ducc.transport.event.SubmitServiceDuccEvent;
 import org.apache.uima.ducc.transport.event.SubmitServiceReplyDuccEvent;
+import org.apache.uima.ducc.transport.event.cli.JobRequestProperties;
 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;
@@ -669,6 +671,30 @@ public class DuccServiceSubmit extends D
 		 * identify invoker
 		 */
 		serviceRequestProperties.setProperty(ServiceRequestProperties.key_submitter_pid_at_host, ManagementFactory.getRuntimeMXBean().getName());
+		
+        boolean missingValue = false;
+        Set<Object> keys = serviceRequestProperties.keySet();
+        for(Object key : keys) {
+        	if(ServiceRequestProperties.keys_requiring_values.contains(key)) {
+        		Object oValue = serviceRequestProperties.get(key);
+        		if(oValue == null) {
+        			duccMessageProcessor.err("missing value for: "+key);
+        			missingValue = true;
+        		}
+        		else if(oValue instanceof String) {
+        			String sValue = (String)oValue;
+        			if(sValue.trim().length() < 1) {
+            			duccMessageProcessor.err("missing value for: "+key);
+            			missingValue = true;
+            		}
+        		}
+        		
+        	}
+        }
+        if(missingValue) {
+        	return DuccUiConstants.ERROR;
+        }
+		
 		/*
 		 * send to JM & get reply
 		 */

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java?rev=1440914&r1=1440913&r2=1440914&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java Thu Jan 31 11:25:41 2013
@@ -19,7 +19,9 @@
 package org.apache.uima.ducc.transport.event.cli;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import java.util.Enumeration;
+import java.util.List;
 
 import org.apache.uima.ducc.common.utils.DuccLogger;
 
@@ -56,6 +58,50 @@ public class JobRequestProperties extend
 	public static String key_id = "id";	
 	public static String key_dpid = "dpid";	
 	
+	public static List<String> keys_requiring_values = Arrays.asList(
+			JobRequestProperties.key_signature,
+			JobRequestProperties.key_job_broker,
+			JobRequestProperties.key_job_endpoint,
+			JobRequestProperties.key_service_broker,
+			JobRequestProperties.key_service_endpoint,
+			JobRequestProperties.key_description,
+			JobRequestProperties.key_scheduling_class,
+			JobRequestProperties.key_submitter_pid_at_host,
+			key_user,
+			key_specification,
+			key_notifications,
+			key_log_directory,
+			key_working_directory,
+			key_scheduling_priority,
+			key_jvm,
+			key_driver_jvm_args,
+			key_driver_classpath,
+			key_driver_environment,
+			key_driver_memory_size,
+			key_driver_descriptor_CR,
+			key_driver_descriptor_CR_overrides,
+			key_driver_exception_handler,
+			key_process_jvm_args,
+			key_process_classpath,
+			key_process_environment,
+			key_process_memory_size,
+			key_process_DD,
+			key_process_descriptor_CM,
+			key_process_descriptor_CM_overrides,
+			key_process_descriptor_AE,
+			key_process_descriptor_AE_overrides,
+			key_process_descriptor_CC,
+			key_process_descriptor_CC_overrides,
+			key_process_deployments_max,
+			key_process_deployments_min,
+			key_process_initialization_failures_cap,
+			key_process_failures_limit,
+			key_process_thread_count,
+			key_process_get_meta_time_max,
+			key_process_per_item_time_max,
+	        key_service_dependency
+	        );
+	
 	public void specification(DuccLogger logger) {
 		String methodName = "specification";
 		Enumeration<Object> keys = keys();

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/ReservationRequestProperties.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/ReservationRequestProperties.java?rev=1440914&r1=1440913&r2=1440914&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/ReservationRequestProperties.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/ReservationRequestProperties.java Thu Jan 31 11:25:41 2013
@@ -19,6 +19,8 @@
 package org.apache.uima.ducc.transport.event.cli;
 
 import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * Request characteristics provided by user.
@@ -55,4 +57,18 @@ public class ReservationRequestPropertie
 	 * node_list: list of assigned nodes
 	 */
 	public static String key_node_list = "node_list";	
+	
+	public static List<String> keys_requiring_values = Arrays.asList(
+			JobRequestProperties.key_signature,
+			JobRequestProperties.key_job_broker,
+			JobRequestProperties.key_job_endpoint,
+			JobRequestProperties.key_service_broker,
+			JobRequestProperties.key_service_endpoint,
+			JobRequestProperties.key_description,
+			JobRequestProperties.key_scheduling_class,
+			JobRequestProperties.key_submitter_pid_at_host,
+			key_user,
+			key_specification
+	        );
+	
 }