Commit in lcsim/src/org/lcsim/job on MAIN
JobControlManager.java+20-91.16 -> 1.17
add support for Driver methods that take a single jdom Element as parameter

lcsim/src/org/lcsim/job
JobControlManager.java 1.16 -> 1.17
diff -u -r1.16 -r1.17
--- JobControlManager.java	11 Mar 2009 19:05:04 -0000	1.16
+++ JobControlManager.java	12 Mar 2009 20:24:37 -0000	1.17
@@ -259,9 +259,13 @@
 	 * @param propertyType The type of the parameter.
 	 * @return The value of <code>value</code> as Class <code>propertyType</code>.
 	 */
-	private Object convertParameter(String value, Class propertyType)
+	private Object convertParameter(Element parameterElement, Class propertyType)
 	{
+		// The Object that will be returned and passed to the Driver's setter.
 		Object o = null;
+		
+		// The contents of the parameter's XML element.  
+		String value = parameterElement.getText();
 
 		// Single int.
 		if (propertyType.equals(int.class))
@@ -368,21 +372,27 @@
 			o = ba;
 		}
 		// Single File type.
-		else if (propertyType.getName().equals(File.class))
+		else if (propertyType.equals(File.class))
 		{
 			o = new File(value);
 		}
 		// Single URL type.
-		else if (propertyType.getName().equals(URL.class))
+		else if (propertyType.equals(URL.class))
 		{
-			try
+			try 
 			{
 				o = new URL(value);
-			} catch (Exception x)
+			}
+			catch (MalformedURLException x)
 			{
-				throw new RuntimeException(x);
+				throw new RuntimeException("Bad URL " + value + " in XML job description.",x);
 			}
 		}
+		// Element to be processed by user's setter method.
+		else if (propertyType.equals(Element.class))
+		{
+			o = parameterElement;
+		}
 
 		return o;
 	}
@@ -892,15 +902,16 @@
 				}														
 				
 				// Create an Object for next Driver parameter using the conversion method.
-				Object nextParameter = convertParameter(parameterElement.getText(), propertyType);
-				
+				//System.out.println(parameterElement.getValue());
+				Object nextParameter = convertParameter(parameterElement, propertyType);
+								
 				// Invoke the setter.
 				Object pargs[] = new Object[1];
 				pargs[0] = nextParameter;
 				try
 				{
 					if (printDriversDetailed)
-						logStream.println("    " + pname + " = " + parameterElement.getText());
+						logStream.println("    " + pname + " = " + parameterElement.getText().trim());
 					setter.invoke(newDriver, pargs);
 				} 
 				catch (Exception x)
CVSspam 0.2.8