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);
+               }
+        }
+    }
 }


Reply via email to