diff options
author | Jay Shrauner <shrauner@google.com> | 2014-05-13 16:04:32 -0700 |
---|---|---|
committer | Jay Shrauner <shrauner@google.com> | 2014-05-14 12:04:09 -0700 |
commit | 5bad4cfbe9a6401d5b4cde5bb8b4eec8d5fab82f (patch) | |
tree | ff3b2f4c871a78be0fd1ef24cf807c60415f5521 | |
parent | 05e36d9ddbc7e653060354c450210e62b449f89a (diff) | |
download | android_packages_apps_Exchange-5bad4cfbe9a6401d5b4cde5bb8b4eec8d5fab82f.tar.gz android_packages_apps_Exchange-5bad4cfbe9a6401d5b4cde5bb8b4eec8d5fab82f.tar.bz2 android_packages_apps_Exchange-5bad4cfbe9a6401d5b4cde5bb8b4eec8d5fab82f.zip |
Fix nextTag for end of document
Change Parser.pop() so doesn't reset end tag we're currently trying to
match in nextTag. Change END_DOCUMENT enum so no longer same as END tag
so callers can tell them apart.
Bug:
Change-Id: Ie5bd3e6703e75ce9d8bee888e6e3fb9a124434f3
-rw-r--r-- | src/com/android/exchange/adapter/Parser.java | 18 | ||||
-rw-r--r-- | tests/src/com/android/exchange/adapter/FolderSyncParserTests.java | 2 |
2 files changed, 10 insertions, 10 deletions
diff --git a/src/com/android/exchange/adapter/Parser.java b/src/com/android/exchange/adapter/Parser.java index 5830436c..960e9dd1 100644 --- a/src/com/android/exchange/adapter/Parser.java +++ b/src/com/android/exchange/adapter/Parser.java @@ -59,12 +59,12 @@ public abstract class Parser { // The following constants are Wbxml standard public static final int START_DOCUMENT = 0; - public static final int DONE = 1; - public static final int START = 2; + public static final int END_DOCUMENT = 1; + private static final int DONE = 1; + private static final int START = 2; public static final int END = 3; - public static final int TEXT = 4; - public static final int OPAQUE = 5; - public static final int END_DOCUMENT = 3; + private static final int TEXT = 4; + private static final int OPAQUE = 5; private static final int NOT_ENDED = Integer.MIN_VALUE; private static final int EOF_BYTE = -1; @@ -340,19 +340,19 @@ public abstract class Parser { */ public int nextTag(int endingTag) throws IOException { // Lose the page information - endTag = new Tag(endingTag); + final int endTagIndex = endingTag & Tags.PAGE_MASK; while (getNext() != DONE) { // If we're a start, set tag to include the page and return it if (type == START) { tag = page | startTag.index; return tag; // If we're at the ending tag we're looking for, return the END signal - } else if (type == END && startTag.index == endTag.index) { + } else if (type == END && startTag.index == endTagIndex) { return END; } } // We're at end of document here. If we're looking for it, return END_DOCUMENT - if (endTag.index == START_DOCUMENT) { + if (endTagIndex == START_DOCUMENT) { return END_DOCUMENT; } // Otherwise, we've prematurely hit end of document, so exception out @@ -451,7 +451,7 @@ public abstract class Parser { private void pop() { // Retrieve the now-current startTag from our stack - startTag = endTag = startTagArray.removeFirst(); + startTag = startTagArray.removeFirst(); log("</" + startTag.name + '>'); } diff --git a/tests/src/com/android/exchange/adapter/FolderSyncParserTests.java b/tests/src/com/android/exchange/adapter/FolderSyncParserTests.java index 51ddbf4b..53fdc526 100644 --- a/tests/src/com/android/exchange/adapter/FolderSyncParserTests.java +++ b/tests/src/com/android/exchange/adapter/FolderSyncParserTests.java @@ -237,7 +237,7 @@ public class FolderSyncParserTests extends SyncAdapterTestCase<EmailSyncAdapter> public int nextTag(int endingTag) throws IOException { String line = getLine(); if (line == null) { - return DONE; + return END_DOCUMENT; } if (line.startsWith("</")) { int end = line.indexOf('>'); |