You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by ti...@apache.org on 2012/10/02 08:09:40 UTC

svn commit: r1392752 - in /incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery: datamodel/values/ValueTag.java serializer/XMLSerializer.java

Author: tillw
Date: Tue Oct  2 06:09:40 2012
New Revision: 1392752

URL: http://svn.apache.org/viewvc?rev=1392752&view=rev
Log:
add spaces only between atomic values during serialization

Modified:
    incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/ValueTag.java
    incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java

Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/ValueTag.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/ValueTag.java?rev=1392752&r1=1392751&r2=1392752&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/ValueTag.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/ValueTag.java Tue Oct  2 06:09:40 2012
@@ -82,4 +82,22 @@ public class ValueTag {
     public static final int COMMENT_NODE_TAG = 105;
     public static final int PI_NODE_TAG = 106;
     public static final int NODE_TREE_TAG = 107;
+
+    public static boolean isAtomic(int tag) {
+        return tag < 100;
+    }
+
+    public static boolean isNode(int tag) {
+        switch (tag) {
+            case DOCUMENT_NODE_TAG:
+            case ELEMENT_NODE_TAG:
+            case ATTRIBUTE_NODE_TAG:
+            case TEXT_NODE_TAG:
+            case COMMENT_NODE_TAG:
+            case PI_NODE_TAG:
+                return true;
+            default:
+                return false;
+        }
+    }
 }
\ No newline at end of file

Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java?rev=1392752&r1=1392751&r2=1392752&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java Tue Oct  2 06:09:40 2012
@@ -65,6 +65,8 @@ public class XMLSerializer implements IP
     private CastToStringOperation castToString = new CastToStringOperation();
     private UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
 
+    private boolean lastWasAtomic = false;
+
     public XMLSerializer() {
         pp = PointablePoolFactory.INSTANCE.createPointablePool();
     }
@@ -82,6 +84,15 @@ public class XMLSerializer implements IP
 
     private void printTaggedValuePointable(PrintStream ps, TaggedValuePointable tvp) {
         byte tag = tvp.getTag();
+        if (ValueTag.isAtomic(tag)) {
+            if (lastWasAtomic) {
+                ps.append(' ');
+            } else {
+                lastWasAtomic = true;
+            }
+        } else {
+            lastWasAtomic = false;
+        }
         switch ((int) tag) {
             case ValueTag.XS_ANY_URI_TAG:
                 printString(ps, tvp);
@@ -423,9 +434,6 @@ public class XMLSerializer implements IP
         try {
             int len = seqp.getEntryCount();
             for (int i = 0; i < len; ++i) {
-                if (i > 0) {
-                    ps.append(' ');
-                }
                 seqp.getEntry(i, vp);
                 print(vp.getByteArray(), vp.getStartOffset(), vp.getLength(), ps);
             }