1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/* 2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2015 The Android Open Source Project 3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License"); 5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License. 6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at 7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * http://www.apache.org/licenses/LICENSE-2.0 9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software 11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS, 12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and 14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License. 15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage android.support.v7.mms; 18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport org.xmlpull.v1.XmlPullParser; 20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport org.xmlpull.v1.XmlPullParserException; 21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport java.io.IOException; 23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/** 25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * XML parser for carrier config (i.e. mms_config) 26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddclass CarrierConfigXmlParser extends MmsXmlResourceParser { 28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd interface KeyValueProcessor { 29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd void process(String type, String key, String value); 30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private static final String TAG_MMS_CONFIG = "mms_config"; 33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private final KeyValueProcessor mKeyValueProcessor; 35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd CarrierConfigXmlParser(final XmlPullParser parser, final KeyValueProcessor keyValueProcessor) { 37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd super(parser); 38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mKeyValueProcessor = keyValueProcessor; 39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // Parse one key/value 42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd protected void parseRecord() throws IOException, XmlPullParserException { 44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final String key = mInputParser.getAttributeValue(null, "name"); 45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // We are at the start tag, the name of the tag is the type 46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // e.g. <int name="key">value</int> 47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final String type = mInputParser.getName(); 48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd int nextEvent = mInputParser.next(); 49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd String value = null; 50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (nextEvent == XmlPullParser.TEXT) { 51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd value = mInputParser.getText(); 52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd nextEvent = mInputParser.next(); 53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (nextEvent != XmlPullParser.END_TAG) { 55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd throw new XmlPullParserException("Expecting end tag @" + xmlParserDebugContext()); 56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // We are done parsing one mms_config key/value, call the handler 58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (mKeyValueProcessor != null) { 59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mKeyValueProcessor.process(type, key, value); 60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd protected String getRootTag() { 65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return TAG_MMS_CONFIG; 66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd} 69