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"