summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Shrauner <shrauner@google.com>2014-05-13 16:04:32 -0700
committerJay Shrauner <shrauner@google.com>2014-05-14 12:04:09 -0700
commit5bad4cfbe9a6401d5b4cde5bb8b4eec8d5fab82f (patch)
treeff3b2f4c871a78be0fd1ef24cf807c60415f5521
parent05e36d9ddbc7e653060354c450210e62b449f89a (diff)
downloadandroid_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.java18
-rw-r--r--tests/src/com/android/exchange/adapter/FolderSyncParserTests.java2
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('>');