You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bo...@apache.org on 2008/04/13 15:19:31 UTC
svn commit: r647568 - in /ode/trunk:
bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/
bpel-test/src/test/java/org/apache/ode/test/ bpel-test/src/test/resources/
bpel-test/src/test/resources/bpel/2.0/ExtVar3/
Author: boisvert
Date: Sun Apr 13 06:19:29 2008
New Revision: 647568
URL: http://svn.apache.org/viewvc?rev=647568&view=rev
Log:
Test-case and fix for ODE-266: Database external variables: Empty values not handled correctly
Added:
ode/trunk/bpel-test/src/test/resources/bpel/2.0/ExtVar3/
- copied from r647566, ode/branches/APACHE_ODE_1.1/bpel-test/src/test/resources/bpel/2.0/ExtVar3/
ode/trunk/bpel-test/src/test/resources/bpel/2.0/ExtVar3/ExtVar3-EmptyValues.bpel
- copied unchanged from r647566, ode/branches/APACHE_ODE_1.1/bpel-test/src/test/resources/bpel/2.0/ExtVar3/ExtVar3-EmptyValues.bpel
ode/trunk/bpel-test/src/test/resources/bpel/2.0/ExtVar3/ExtVar3-EmptyValues.wsdl
- copied unchanged from r647566, ode/branches/APACHE_ODE_1.1/bpel-test/src/test/resources/bpel/2.0/ExtVar3/ExtVar3-EmptyValues.wsdl
ode/trunk/bpel-test/src/test/resources/bpel/2.0/ExtVar3/ExtVar3.wsdl
- copied unchanged from r647566, ode/branches/APACHE_ODE_1.1/bpel-test/src/test/resources/bpel/2.0/ExtVar3/ExtVar3.wsdl
ode/trunk/bpel-test/src/test/resources/bpel/2.0/ExtVar3/deploy.xml
- copied unchanged from r647566, ode/branches/APACHE_ODE_1.1/bpel-test/src/test/resources/bpel/2.0/ExtVar3/deploy.xml
ode/trunk/bpel-test/src/test/resources/bpel/2.0/ExtVar3/test.properties
- copied unchanged from r647566, ode/branches/APACHE_ODE_1.1/bpel-test/src/test/resources/bpel/2.0/ExtVar3/test.properties
ode/trunk/bpel-test/src/test/resources/log4j.properties
- copied unchanged from r647566, ode/branches/APACHE_ODE_1.1/bpel-test/src/test/resources/log4j.properties
Modified:
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java
ode/trunk/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java?rev=647568&r1=647567&r2=647568&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java Sun Apr 13 06:19:29 2008
@@ -259,7 +259,7 @@
String strdat = c.toText(data);
if (strdat != null)
cel.appendChild(doc.createTextNode(strdat));
- else
+ else if (c.nullok)
cel.setAttributeNS(XSI_NS, "xsi:nil", "true");
parent.appendChild(cel);
}
@@ -286,13 +286,13 @@
}
String nil = ((Element) n).getAttributeNS(XSI_NS, "nil");
- if (nil != null && "true".equalsIgnoreCase(nil) && (val == null)) {
+ if (nil != null && "true".equalsIgnoreCase(nil) && (val == null || val.trim().length() == 0)) {
if (__log.isDebugEnabled()) __log.debug("Extvar key: "+key+" is null (xsi:nil)");
ret.put(key, null);
} else {
ret.put(key, column.fromText(val));
+ }
}
- }
return ret;
}
@@ -350,6 +350,10 @@
}
}
+ boolean supportsEmptyValue() {
+ return (dataType == Types.VARCHAR || dataType == Types.LONGVARCHAR || dataType == Types.CLOB);
+ }
+
/**
* Return <code>true</code> if column is a date-like type.
*/
@@ -420,22 +424,37 @@
Object fromText(String val) throws ExternalVariableModuleException {
try {
+ if (val == null)
+ return null;
+
+ if (!supportsEmptyValue() && val.trim().length() == 0) {
+ return null;
+ }
+
// TODO: use xsd:date and xsd:time conversions
if (isDate())
- return new java.sql.Date(ISO8601DateParser.parse(val)
- .getTime());
+ return new java.sql.Date(ISO8601DateParser.parse(val).getTime());
else if (isTime())
- return new java.sql.Time(ISO8601DateParser.parse(val)
- .getTime());
+ return new java.sql.Time(ISO8601DateParser.parse(val).getTime());
else if (isTimeStamp())
- return new java.sql.Timestamp(ISO8601DateParser.parse(val)
- .getTime());
- else if (isInteger())
+ return new java.sql.Timestamp(ISO8601DateParser.parse(val).getTime());
+ else if (isInteger()) {
+ String v = val.trim().toLowerCase();
+ if (v.equals("true"))
+ return 1;
+ if (v.equals("false"))
+ return 0;
return Long.valueOf(val);
- else if (isReal())
+ } else if (isReal())
return Double.valueOf(val);
- else if (isBoolean())
+ else if (isBoolean()) {
+ String v = val.trim();
+ if (v.equals("1"))
+ return true;
+ if (v.equals("0"))
+ return false;
return Boolean.valueOf(val);
+ }
return val;
} catch (Exception ex) {
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java?rev=647568&r1=647567&r2=647568&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java Sun Apr 13 06:19:29 2008
@@ -397,7 +397,10 @@
Object val = c.getValue(c.name, keys, values, locator.iid);
values.put(c.name, val);
if (__log.isDebugEnabled()) __log.debug("Set parameter "+idx+": "+val);
- stmt.setObject(idx, val);
+ if (val == null)
+ stmt.setNull(idx, c.dataType);
+ else
+ stmt.setObject(idx, val);
idx++;
}
Modified: ode/trunk/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java?rev=647568&r1=647567&r2=647568&view=diff
==============================================================================
--- ode/trunk/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java (original)
+++ ode/trunk/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java Sun Apr 13 06:19:29 2008
@@ -12,9 +12,6 @@
/**
* Simple test of external variables.
- *
- * @author Maciej Szefler <mszefler at gmail dot com>
- *
*/
public class ExternalVariableTest extends BPELTestAbstract {
@@ -43,9 +40,13 @@
s.execute("CREATE TABLE costPerCustomer (value0 varchar(250), key1 varchar(250) primary key)");
+ s.execute("CREATE TABLE DataTypesTest (KEYSTRING VARCHAR(255), STRINGCOL VARCHAR(255), FLOATCOL FLOAT, "
+ + "INTCOL INTEGER, NUMBERCOL NUMERIC, TIMESTAMPCOL TIMESTAMP, BOOLEANCOL TINYINT)");
+
conn.close();
}
+ /*
@Test
public void testHelloWorld2() throws Throwable {
go("/bpel/2.0/ExtVar");
@@ -55,5 +56,10 @@
public void testExtVar2() throws Throwable {
go("/bpel/2.0/ExtVar2");
}
+ */
+ @Test
+ public void testExtVar2() throws Throwable {
+ go("/bpel/2.0/ExtVar3");
+ }
}