aboutsummaryrefslogtreecommitdiffstats
path: root/sdk_common/src/com/android/ide/common/resources/ValidatingResourceParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'sdk_common/src/com/android/ide/common/resources/ValidatingResourceParser.java')
-rw-r--r--sdk_common/src/com/android/ide/common/resources/ValidatingResourceParser.java141
1 files changed, 0 insertions, 141 deletions
diff --git a/sdk_common/src/com/android/ide/common/resources/ValidatingResourceParser.java b/sdk_common/src/com/android/ide/common/resources/ValidatingResourceParser.java
deleted file mode 100644
index b477b8f..0000000
--- a/sdk_common/src/com/android/ide/common/resources/ValidatingResourceParser.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ide.common.resources;
-
-import com.android.annotations.NonNull;
-import com.google.common.io.Closeables;
-
-import org.kxml2.io.KXmlParser;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.BufferedInputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Parser for scanning an XML resource file and validating all framework
- * attribute references in it. If an error is found, the associated context
- * is marked as needing a full AAPT run.
- */
-public class ValidatingResourceParser {
- private final boolean mIsFramework;
- private ScanningContext mContext;
-
- /**
- * Creates a new {@link ValidatingResourceParser}
- *
- * @param context a context object with state for the current update, such
- * as a place to stash errors encountered
- * @param isFramework true if scanning a framework resource
- */
- public ValidatingResourceParser(
- @NonNull ScanningContext context,
- boolean isFramework) {
- mContext = context;
- mIsFramework = isFramework;
- }
-
- /**
- * Parse the given input and return false if it contains errors, <b>or</b> if
- * the context is already tagged as needing a full aapt run.
- *
- * @param path the full OS path to the file being parsed
- * @param input the input stream of the XML to be parsed (will be closed by this method)
- * @return true if parsing succeeds and false if it fails
- * @throws IOException if reading the contents fails
- */
- public boolean parse(final String path, InputStream input)
- throws IOException {
- // No need to validate framework files
- if (mIsFramework) {
- Closeables.closeQuietly(input);
- return true;
- }
- if (mContext.needsFullAapt()) {
- Closeables.closeQuietly(input);
- return false;
- }
-
- KXmlParser parser = new KXmlParser();
- try {
- parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
-
- if (input instanceof FileInputStream) {
- input = new BufferedInputStream(input);
- }
- parser.setInput(input, "UTF-8"); //$NON-NLS-1$
-
- return parse(path, parser);
- } catch (XmlPullParserException e) {
- String message = e.getMessage();
-
- // Strip off position description
- int index = message.indexOf("(position:"); //$NON-NLS-1$ (Hardcoded in KXml)
- if (index != -1) {
- message = message.substring(0, index);
- }
-
- String error = String.format("%1$s:%2$d: Error: %3$s", //$NON-NLS-1$
- path, parser.getLineNumber(), message);
- mContext.addError(error);
- return false;
- } catch (RuntimeException e) {
- // Some exceptions are thrown by the KXmlParser that are not XmlPullParserExceptions,
- // such as this one:
- // java.lang.RuntimeException: Undefined Prefix: w in org.kxml2.io.KXmlParser@...
- // at org.kxml2.io.KXmlParser.adjustNsp(Unknown Source)
- // at org.kxml2.io.KXmlParser.parseStartTag(Unknown Source)
- String message = e.getMessage();
- String error = String.format("%1$s:%2$d: Error: %3$s", //$NON-NLS-1$
- path, parser.getLineNumber(), message);
- mContext.addError(error);
- return false;
- } finally {
- Closeables.closeQuietly(input);
- }
- }
-
- private boolean parse(String path, KXmlParser parser)
- throws XmlPullParserException, IOException {
- boolean checkForErrors = !mIsFramework && !mContext.needsFullAapt();
-
- while (true) {
- int event = parser.next();
- if (event == XmlPullParser.START_TAG) {
- for (int i = 0, n = parser.getAttributeCount(); i < n; i++) {
- String attribute = parser.getAttributeName(i);
- String value = parser.getAttributeValue(i);
- assert value != null : attribute;
-
- if (checkForErrors) {
- String uri = parser.getAttributeNamespace(i);
- if (!mContext.checkValue(uri, attribute, value)) {
- mContext.requestFullAapt();
- return false;
- }
- }
- }
- } else if (event == XmlPullParser.END_DOCUMENT) {
- break;
- }
- }
-
- return true;
- }
-}