Repository: olingo-odata2
Updated Branches:
  refs/heads/OLINGO-231_PocForAndroid a4f5d6104 -> 2d262c3e6


[OLINGO-231] Renamed AndroidXml classes and added AndroidXmlWriter


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/2d262c3e
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2d262c3e
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2d262c3e

Branch: refs/heads/OLINGO-231_PocForAndroid
Commit: 2d262c3e6b62b52805daad958a19e6aa26faf1dd
Parents: a4f5d61
Author: Michael Bolz <[email protected]>
Authored: Wed Apr 9 12:46:59 2014 +0200
Committer: Michael Bolz <[email protected]>
Committed: Wed Apr 9 12:47:12 2014 +0200

----------------------------------------------------------------------
 .../odata2/android/xml/AndroidXmlFactory.java   |  19 +++
 .../odata2/android/xml/AndroidXmlReader.java    |  61 ++++----
 .../android/xml/AndroidXmlReaderFactory.java    |  11 --
 .../odata2/android/xml/AndroidXmlWriter.java    | 143 +++++++++++++++++++
 .../odata2/core/xml/JavaxStaxReaderWrapper.java |   2 +-
 5 files changed, 199 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2d262c3e/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlFactory.java
----------------------------------------------------------------------
diff --git 
a/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlFactory.java
 
b/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlFactory.java
new file mode 100644
index 0000000..60a8f06
--- /dev/null
+++ 
b/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlFactory.java
@@ -0,0 +1,19 @@
+package org.apache.olingo.odata2.android.xml;
+
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.xml.XMLStreamReader;
+import org.apache.olingo.odata2.api.xml.XMLStreamReaderFactory;
+import org.apache.olingo.odata2.api.xml.XMLStreamWriter;
+import org.apache.olingo.odata2.api.xml.XMLStreamWriterFactory;
+
+public class AndroidXmlFactory implements XMLStreamReaderFactory, 
XMLStreamWriterFactory {
+  @Override
+  public XMLStreamReader createXMLStreamReader(Object content) {
+    return new AndroidXmlReader(content);
+  }
+
+  @Override
+  public XMLStreamWriter createXMLStreamWriter(Object content) throws 
EntityProviderException {
+    return new AndroidXmlWriter(content);
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2d262c3e/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReader.java
----------------------------------------------------------------------
diff --git 
a/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReader.java
 
b/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReader.java
index 6a1738a..91af430 100644
--- 
a/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReader.java
+++ 
b/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReader.java
@@ -17,12 +17,12 @@ public class AndroidXmlReader implements XMLStreamReader {
 
   private final InputStream xmlContentStream;
   private final XmlPullParser parser;
-  
+
   public AndroidXmlReader(Object content) {
     if(content instanceof InputStream) {
       parser = Xml.newPullParser();
       this.xmlContentStream = (InputStream) content;
-      
+
       try {
         parser.setInput(xmlContentStream, null);
       } catch (XmlPullParserException e) {
@@ -32,7 +32,7 @@ public class AndroidXmlReader implements XMLStreamReader {
       throw new IllegalArgumentException("Unsupported input content. Only 
InputStream is supported.");
     }
   }
-  
+
   @Override
   public void close() throws XMLStreamException {
   }
@@ -71,7 +71,18 @@ public class AndroidXmlReader implements XMLStreamReader {
   @Override
   public String getElementText() throws XMLStreamException {
     // FIXME
-    return parser.getText();
+    String text;
+    try {
+      if(parser.getEventType() == XmlPullParser.START_TAG) {
+        parser.next();
+      }
+      text = parser.getText();
+      parser.next();
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw new XMLStreamException("Failure during step forward after 
'getText'.", e);
+    }
+    return text;
   }
 
   @Override
@@ -99,7 +110,7 @@ public class AndroidXmlReader implements XMLStreamReader {
     String tmp = null;
     try {
       int depth = parser.getDepth();
-      tmp = parser.getNamespacePrefix(depth); 
+      tmp = parser.getNamespacePrefix(depth);
     } catch (XmlPullParserException e) {
       e.printStackTrace();
     }
@@ -132,7 +143,8 @@ public class AndroidXmlReader implements XMLStreamReader {
   public String getNamespacePrefix(int arg0) {
     // FIXME
     try {
-      return parser.getNamespacePrefix(arg0);
+      String prefix = parser.getNamespacePrefix(arg0);
+      return prefix;
     } catch (XmlPullParserException e) {
       e.printStackTrace();
       throw new RuntimeException("Android", e);
@@ -153,8 +165,8 @@ public class AndroidXmlReader implements XMLStreamReader {
     String nsUri = parser.getNamespace();
     return nsUri;
   }
-  
-  
+
+
 
   @Override
   public String getNamespaceURI(int index) {
@@ -162,9 +174,9 @@ public class AndroidXmlReader implements XMLStreamReader {
     try {
       int nsCount = getNamespaceCount();
       if(index > nsCount) {
-        throw new RuntimeException("Out of namespace index");        
+        throw new RuntimeException("Out of namespace index");
       }
-      int depthAndIndex = parser.getDepth() + index;
+      int depthAndIndex = parser.getDepth() + index - 1;
       String namespaceUri = parser.getNamespaceUri(depthAndIndex);
       return namespaceUri;
     } catch (XmlPullParserException e) {
@@ -225,8 +237,8 @@ public class AndroidXmlReader implements XMLStreamReader {
     // TODO Auto-generated method stub
     try {
       int eventType = parser.getEventType();
-      return eventType == XmlPullParser.END_DOCUMENT 
-          || eventType == XmlPullParser.END_TAG;
+      return eventType == XmlPullParser.END_DOCUMENT
+              || eventType == XmlPullParser.END_TAG;
     } catch (XmlPullParserException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
@@ -238,8 +250,8 @@ public class AndroidXmlReader implements XMLStreamReader {
   public boolean isStartElement() {
     try {
       int eventType = parser.getEventType();
-      return eventType == XmlPullParser.START_DOCUMENT 
-          || eventType == XmlPullParser.START_TAG;
+      return eventType == XmlPullParser.START_DOCUMENT
+              || eventType == XmlPullParser.START_TAG;
     } catch (XmlPullParserException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
@@ -274,11 +286,11 @@ public class AndroidXmlReader implements XMLStreamReader {
   }
 
   @Override
-  public void require(int eventType, String arg1, String arg2) throws 
XMLStreamException {
+  public void require(int eventType, String namespace, String tag) throws 
XMLStreamException {
     // TODO Auto-generated method stub
     try {
       int xmlPullEventType = mapEventType(eventType);
-      parser.require(xmlPullEventType, arg1, arg2);
+      parser.require(xmlPullEventType, namespace, tag);
     } catch (XmlPullParserException e) {
       throw new XMLStreamException("Requirement not fulfilled", e) {};
     } catch (IOException e) {
@@ -288,15 +300,14 @@ public class AndroidXmlReader implements XMLStreamReader {
 
   private int mapEventType(int eventType) {
     switch (eventType) {
-    case XMLStreamConstants.START_ELEMENT: return XmlPullParser.START_TAG;
-    case XMLStreamConstants.END_ELEMENT: return XmlPullParser.END_TAG;
-    case XMLStreamConstants.START_DOCUMENT: return 
XmlPullParser.START_DOCUMENT;
-    case XMLStreamConstants.END_DOCUMENT: return XmlPullParser.END_DOCUMENT;
-    case XMLStreamConstants.DTD: return XmlPullParser.DOCDECL;
-    default:
-      throw new IllegalArgumentException("Unknown event type ('" +
-               eventType + "') for mapping.");
+      case XMLStreamConstants.START_ELEMENT: return XmlPullParser.START_TAG;
+      case XMLStreamConstants.END_ELEMENT: return XmlPullParser.END_TAG;
+      case XMLStreamConstants.START_DOCUMENT: return 
XmlPullParser.START_DOCUMENT;
+      case XMLStreamConstants.END_DOCUMENT: return XmlPullParser.END_DOCUMENT;
+      case XMLStreamConstants.DTD: return XmlPullParser.DOCDECL;
+      default:
+        throw new IllegalArgumentException("Unknown event type ('" +
+                eventType + "') for mapping.");
     }
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2d262c3e/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReaderFactory.java
----------------------------------------------------------------------
diff --git 
a/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReaderFactory.java
 
b/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReaderFactory.java
deleted file mode 100644
index 9730c16..0000000
--- 
a/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlReaderFactory.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.apache.olingo.odata2.android.xml;
-
-import org.apache.olingo.odata2.api.xml.XMLStreamReader;
-import org.apache.olingo.odata2.api.xml.XMLStreamReaderFactory;
-
-public class AndroidXmlReaderFactory implements XMLStreamReaderFactory {
-  @Override
-  public XMLStreamReader createXMLStreamReader(Object content) {
-    return new AndroidXmlReader(content);
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2d262c3e/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlWriter.java
----------------------------------------------------------------------
diff --git 
a/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlWriter.java
 
b/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlWriter.java
new file mode 100644
index 0000000..67686e5
--- /dev/null
+++ 
b/odata2-android/src/main/java/org/apache/olingo/odata2/android/xml/AndroidXmlWriter.java
@@ -0,0 +1,143 @@
+package org.apache.olingo.odata2.android.xml;
+
+import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.xml.XMLStreamException;
+import org.apache.olingo.odata2.api.xml.XMLStreamWriter;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.Writer;
+
+/**
+ */
+public class AndroidXmlWriter implements XMLStreamWriter {
+
+  private Writer writer;
+
+  public AndroidXmlWriter(Object output) throws EntityProviderException {
+    if (output instanceof OutputStream) {
+      writer = new PrintWriter((OutputStream) output);
+    } else if (output instanceof Writer) {
+      writer = (Writer) output;
+    }
+  }
+
+  @Override
+  public void flush() throws XMLStreamException {
+    write("flush");
+    try {
+      if(writer != null) {
+        writer.flush();
+      }
+    } catch (IOException e) {
+      // TODO Auto-generated catch block
+      e.printStackTrace();
+    }
+  }
+
+  @Override
+  public void setDefaultNamespace(String arg0) throws XMLStreamException {
+    write("setDefaultNamespace", arg0);
+  }
+
+  @Override
+  public void setPrefix(String arg0, String arg1) throws XMLStreamException {
+    write("setPrefix", arg0, arg1);
+
+  }
+
+  @Override
+  public void writeAttribute(String arg0, String arg1) throws 
XMLStreamException {
+    write("writeAttribute", arg0, arg1);
+
+  }
+
+  @Override
+  public void writeAttribute(String arg0, String arg1, String arg2, String 
arg3) throws XMLStreamException {
+    write("writeAttribute", arg0, arg1, arg2);
+
+  }
+
+  @Override
+  public void writeCharacters(String arg0) throws XMLStreamException {
+    write("writeCharacters", arg0);
+
+  }
+
+  @Override
+  public void writeDefaultNamespace(String arg0) throws XMLStreamException {
+    write("writeDefaultNamespace", arg0);
+
+  }
+
+  @Override
+  public void writeEndDocument() throws XMLStreamException {
+    write("writeEndDocument");
+
+  }
+
+  @Override
+  public void writeEndElement() throws XMLStreamException {
+    write("writeEndElement");
+
+  }
+
+  @Override
+  public void writeNamespace(String arg0, String arg1) throws 
XMLStreamException {
+    write("writeNamespace", arg0, arg1);
+
+  }
+
+  @Override
+  public void writeStartDocument() throws XMLStreamException {
+    write("writeStartDocument");
+
+  }
+
+  @Override
+  public void writeStartElement(String arg0) throws XMLStreamException {
+    write("writeStartElement", arg0);
+
+  }
+
+  @Override
+  public void writeStartElement(String arg0, String arg1) throws 
XMLStreamException {
+    write("writeStartElement", arg0, arg1);
+
+  }
+
+  @Override
+  public void writeStartElement(String arg0, String arg1, String arg2) throws 
XMLStreamException {
+    write("writeStartElement", arg0, arg1, arg2);
+  }
+
+  private void write(String message, String... content) {
+    try {
+      if (writer == null) {
+        throw new RuntimeException("Writer not initialized.");
+//        writer.append("Writer not initialized\n");
+      } else {
+        writer.append(message).append("\n");
+        for (String string : content) {
+          writer.append("->").append(string).append("<-\n");
+        }
+      }
+    } catch (IOException e) {
+      // TODO Auto-generated catch block
+      e.printStackTrace();
+    }
+  }
+
+  @Override
+  public void writeAttribute(String arg0, String arg1, String arg2) throws 
XMLStreamException {
+    // TODO Auto-generated method stub
+
+  }
+
+  @Override
+  public void writeStartDocument(String arg0, String arg1) throws 
XMLStreamException {
+    // TODO Auto-generated method stub
+
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2d262c3e/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/xml/JavaxStaxReaderWrapper.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/xml/JavaxStaxReaderWrapper.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/xml/JavaxStaxReaderWrapper.java
index 832e343..55d495c 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/xml/JavaxStaxReaderWrapper.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/xml/JavaxStaxReaderWrapper.java
@@ -58,7 +58,7 @@ public class JavaxStaxReaderWrapper implements 
XMLStreamReader, XMLStreamReaderF
       if (content instanceof InputStream) {
         streamReader = factory.createXMLStreamReader((InputStream) content, 
DEFAULT_CHARSET);
         // verify charset encoding set in content is supported (if not set 
UTF-8 is used as defined in
-        // v'http://www.w3.org/TR/2008/REC-xml-20081126/')
+        // 'http://www.w3.org/TR/2008/REC-xml-20081126/')
         String characterEncodingInContent = 
streamReader.getCharacterEncodingScheme();
         if (characterEncodingInContent != null && 
!DEFAULT_CHARSET.equalsIgnoreCase(characterEncodingInContent)) {
           throw new EntityProviderException(EntityProviderException

Reply via email to