Author: karthick
Date: Thu Dec 11 14:42:21 2008
New Revision: 725850
URL: http://svn.apache.org/viewvc?rev=725850&view=rev
Log:
Cleanup Simple Type Variable Resolution
Modified:
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpVariableResolver.java
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpVariableResolver.java
Modified:
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpVariableResolver.java
URL:
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpVariableResolver.java?rev=725850&r1=725849&r2=725850&view=diff
==============================================================================
---
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpVariableResolver.java
(original)
+++
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpVariableResolver.java
Thu Dec 11 14:42:21 2008
@@ -115,45 +115,35 @@
}
private Object getSimpleContent(Node simpleNode, QName type) {
- Document doc = (simpleNode instanceof Document) ? ((Document)
simpleNode) : simpleNode
- .getOwnerDocument();
+ Document doc = (simpleNode instanceof Document)
+ ? ((Document) simpleNode)
+ : simpleNode.getOwnerDocument();
String text = simpleNode.getTextContent();
try {
- Object jobj = XSTypes.toJavaObject(type,text);
- // Saxon wants its own dateTime type and doesn't like Calendar or
Date
+ Object jobj = XSTypes.toJavaObject(type,text);
if (jobj instanceof Calendar) {
- return ((Calendar) jobj).getTime();
- } else if (jobj instanceof Long) {
- try {
- return Long.valueOf(text);
- } catch (NumberFormatException e) { }
- } else if (jobj instanceof Double) {
- try {
- return Double.valueOf(text);
- } catch (NumberFormatException e) { }
- } else if (jobj instanceof Integer) {
- try {
- return Integer.valueOf(text);
- } catch (NumberFormatException e) { }
- } else {
- // return the value wrapped in a text node
+ // Saxon 9.x prefers Dates over Calendars.
+ return ((Calendar) jobj).getTime();
+ } else if (jobj instanceof String) {
+ // Saxon 9.x has a bug for which this is a workaround.
return doc.createTextNode(jobj.toString());
- }
- } catch (Exception e) { }
- // Elegant way failed, trying brute force
- // Actually, we don't want to return simple types, so no more brute
force
- try {
- return Integer.valueOf(text);
- } catch (NumberFormatException e) { }
- try {
- return Double.valueOf(text);
- } catch (NumberFormatException e) { }
-
- // Remember: always a node set
- if (simpleNode.getParentNode() != null)
- return simpleNode.getParentNode().getChildNodes();
- else {
- return doc.createTextNode(text);
+ }
+ return jobj;
+ } catch (Exception e) {
+ // Elegant way failed, trying brute force
+ try {
+ return Integer.valueOf(text);
+ } catch (NumberFormatException nfe) { }
+ try {
+ return Double.valueOf(text);
+ } catch (NumberFormatException nfe) { }
+
+ // Remember: always a node set
+ if (simpleNode.getParentNode() != null)
+ return simpleNode.getParentNode().getChildNodes();
+ else {
+ return doc.createTextNode(text);
+ }
}
}
}
Modified:
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpVariableResolver.java
URL:
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpVariableResolver.java?rev=725850&r1=725849&r2=725850&view=diff
==============================================================================
---
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpVariableResolver.java
(original)
+++
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpVariableResolver.java
Thu Dec 11 14:42:21 2008
@@ -19,7 +19,6 @@
package org.apache.ode.bpel.rtrep.v2.xpath20;
-import java.util.ArrayList;
import java.util.Calendar;
import javax.xml.namespace.QName;
@@ -119,45 +118,35 @@
}
private Object getSimpleContent(Node simpleNode, QName type) {
- Document doc = (simpleNode instanceof Document) ? ((Document)
simpleNode) : simpleNode
- .getOwnerDocument();
- String text = simpleNode.getTextContent();
- try {
- Object jobj = XSTypes.toJavaObject(type,text);
- // Saxon wants its own dateTime type and doesn't like Calendar
or Date
- if (jobj instanceof Calendar) {
- return ((Calendar) jobj).getTime();
- } else if (jobj instanceof Long) {
- try {
- return Long.valueOf(text);
- } catch (NumberFormatException e) { }
- } else if (jobj instanceof Double) {
- try {
- return Double.valueOf(text);
- } catch (NumberFormatException e) { }
- } else if (jobj instanceof Integer) {
- try {
- return Integer.valueOf(text);
- } catch (NumberFormatException e) { }
- } else {
- // return the value wrapped in a text node
- return doc.createTextNode(jobj.toString());
- }
- } catch (Exception e) { }
- // Elegant way failed, trying brute force
- // Actually, we don't want to return simple types, so no more brute
force
- try {
- return Integer.valueOf(text);
- } catch (NumberFormatException e) { }
- try {
- return Double.valueOf(text);
- } catch (NumberFormatException e) { }
-
- // Remember: always a node set
- if (simpleNode.getParentNode() != null)
- return simpleNode.getParentNode().getChildNodes();
- else {
- return doc.createTextNode(text);
- }
- }
+ Document doc = (simpleNode instanceof Document)
+ ? ((Document) simpleNode)
+ : simpleNode.getOwnerDocument();
+ String text = simpleNode.getTextContent();
+ try {
+ Object jobj = XSTypes.toJavaObject(type,text);
+ if (jobj instanceof Calendar) {
+ // Saxon 9.x prefers Dates over Calendars.
+ return ((Calendar) jobj).getTime();
+ } else if (jobj instanceof String) {
+ // Saxon 9.x has a bug for which this is a workaround.
+ return doc.createTextNode(jobj.toString());
+ }
+ return jobj;
+ } catch (Exception e) {
+ // Elegant way failed, trying brute force
+ try {
+ return Integer.valueOf(text);
+ } catch (NumberFormatException nfe) { }
+ try {
+ return Double.valueOf(text);
+ } catch (NumberFormatException nfe) { }
+
+ // Remember: always a node set
+ if (simpleNode.getParentNode() != null)
+ return simpleNode.getParentNode().getChildNodes();
+ else {
+ return doc.createTextNode(text);
+ }
+ }
+ }
}