You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by rr...@apache.org on 2010/04/19 20:19:19 UTC

svn commit: r935693 - in /ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel: XmlDataDaoImpl.java hobj/HXmlData.java

Author: rr
Date: Mon Apr 19 18:19:19 2010
New Revision: 935693

URL: http://svn.apache.org/viewvc?rev=935693&view=rev
Log:
ODE-812: Make BPEL_XML_DATA more SQL readable by converting simple type variables to string DB column (impl)

Modified:
    ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java
    ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java?rev=935693&r1=935692&r2=935693&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java Mon Apr 19 18:19:19 2010
@@ -58,7 +58,7 @@ public class XmlDataDaoImpl extends Hibe
      */
     public boolean isNull() {
         entering("XmlDataDaoImpl.isNull");
-        return (_data.getData() == null || _data.getData().length == 0);
+        return (_data.getSimpleValue() == null && (_data.getData() == null || _data.getData().length == 0));
     }
 
     /**
@@ -84,14 +84,26 @@ public class XmlDataDaoImpl extends Hibe
     public void set(Node val) {
         entering("XmlDataDaoImpl.set");
         _node = val;
-        _data.setSimpleType(!(val instanceof Element));
-
-        if(_data.isSimpleType()) {
-            _data.setData(_node.getNodeValue().getBytes());
-        } else {
+        if (val != null && val.getNamespaceURI() == null && "temporary-simple-type-wrapper".equals(val.getLocalName())) {
+            _data.setSimpleType(true);
+            String value = _node.getTextContent();
+            if (value.length() <= 255) {
+                _data.setSimpleValue(value);
+                _data.setData(null);
+            } else {
+                _data.setData(value.getBytes());
+                _data.setSimpleValue(null);
+            }
+        } else if (val instanceof Element) {
+            _data.setSimpleType(false);
             _data.setData(DOMUtils.domToString(_node).getBytes());
+            _data.setSimpleValue(null);
+        } else {
+            _data.setSimpleType(true);
+            _data.setSimpleValue(_node.getNodeValue());
+            _data.setData(null);
         }
-        
+
         getSession().saveOrUpdate(_data);
         leaving("XmlDataDaoImpl.set");
     }
@@ -143,20 +155,28 @@ public class XmlDataDaoImpl extends Hibe
     }
 
     private Node prepare(){
-        if(_data.getData() == null || _data.getData().length == 0)
-            return null;
-        String data = new String(_data.getData());
-        if(_data.isSimpleType()){
+        if(_data.isSimpleType()) {
+            String data;
+            if (_data.getSimpleValue() != null) {
+                data = _data.getSimpleValue();
+            } else {
+                if(_data.getData() == null || _data.getData().length == 0)
+                    return null;
+                data = new String(_data.getData());
+            }
             Document d = DOMUtils.newDocument();
             // we create a dummy wrapper element
             // prevents some apps from complaining
             // when text node is not actual child of document
-            Element e = d.createElement("text-node-wrapper");
+            Element e = d.createElement("temporary-simple-type-wrapper");
             Text tnode = d.createTextNode(data);
             d.appendChild(e);
             e.appendChild(tnode);
             return tnode;
-        }else{
+        } else {
+            if(_data.getData() == null || _data.getData().length == 0)
+                return null;
+            String data = new String(_data.getData());
             try{
                 return DOMUtils.stringToDOM(data);
             }catch(Exception e){

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java?rev=935693&r1=935692&r2=935693&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java Mon Apr 19 18:19:19 2010
@@ -33,6 +33,7 @@ public class HXmlData extends HObject {
     private byte[] _data;
     private Collection<HVariableProperty> _properties = new HashSet<HVariableProperty>();
     private String _name;
+    private String _simpleValue;
     private HScope _scope;
     private HProcessInstance _instance;
 
@@ -53,7 +54,7 @@ public class HXmlData extends HObject {
     public void setData(byte[] data) {
         _data = data;
     }
-
+    
     /**
      * @hibernate.property
      *    column="NAME"
@@ -70,6 +71,21 @@ public class HXmlData extends HObject {
     }
 
     /**
+     * @hibernate.property
+     *    column="SIMPLE_VALUE"
+     *    type="string"
+     *    length="255"
+     *    not-null="false"
+     */
+    public String getSimpleValue() {
+        return _simpleValue;
+    }
+
+    public void setSimpleValue(String simpleValue) {
+        _simpleValue = simpleValue;
+    }
+
+    /**
      * @hibernate.bag
      *    lazy="true"
      *    inverse="true"