[teiid-commits] teiid SVN: r2821 - branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Jan 10 12:20:37 EST 2011


Author: shawkins
Date: 2011-01-10 12:20:37 -0500 (Mon, 10 Jan 2011)
New Revision: 2821

Modified:
   branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java
Log:
TEIID-1426 fix for npe extracting null values in a join result

Modified: branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java
===================================================================
--- branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java	2011-01-10 15:50:25 UTC (rev 2820)
+++ branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java	2011-01-10 17:20:37 UTC (rev 2821)
@@ -63,14 +63,16 @@
 
 public class QueryExecutionImpl implements ResultSetExecution {
 
-	private static final String SF_ID = "sf:Id";
+	private static final String SF_ID = "sf:Id"; //$NON-NLS-1$
 
-	private static final String SF_TYPE = "sf:type";
+	private static final String SF_TYPE = "sf:type"; //$NON-NLS-1$
 
-	private static final String SF_S_OBJECT = "sf:sObject";
+	private static final String SF_S_OBJECT = "sf:sObject"; //$NON-NLS-1$
 
-	private static final String XSI_TYPE = "xsi:type";
-
+	private static final String XSI_TYPE = "xsi:type"; //$NON-NLS-1$
+	
+	private static final String XSI_NIL = "xsi:nil"; //$NON-NLS-1$
+	
 	private SalesforceConnection connection;
 
 	private RuntimeMetadata metadata;
@@ -272,7 +274,7 @@
 						}
 					} else {
 						Object cell;
-						cell = sObject.getElementsByTagName("sf:" + element.getNameInSource()).item(0);
+						cell = sObject.getElementsByTagName("sf:" + element.getNameInSource()).item(0); //$NON-NLS-1$
 						setElementValueInColumn(j, cell, row);
 					}
 				}
@@ -320,7 +322,14 @@
 		
 	private void setElementValueInColumn(int columnIndex, Object value, Object[] row) {
 			if(value instanceof Element) {
-				row[columnIndex] = ((Element)value).getFirstChild().getNodeValue();
+				Element element = (Element)value;
+				if (!Boolean.parseBoolean(element.getAttribute(XSI_NIL))) {
+					if (element.getFirstChild() != null) {
+						row[columnIndex] = element.getFirstChild().getNodeValue();
+					} else {
+						row[columnIndex] = ""; //$NON-NLS-1$
+					}
+				}
 			} else {
 				row[columnIndex] = value;
 			}



More information about the teiid-commits mailing list