Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d17b69ec authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Clean up XmlParserUtils

Change-Id: I636e8f359d47f39e61a7f77e3e686f2721779b6f
parent 5f976d1c
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -301,8 +301,8 @@ public final class KeyboardLayoutSet {
            final int xmlId = mResources.getIdentifier(keyboardLayoutSetName, "xml", packageName);
            try {
                parseKeyboardLayoutSet(mResources, xmlId);
            } catch (Exception e) {
                throw new RuntimeException(e.getMessage() + " in " + keyboardLayoutSetName);
            } catch (final Exception e) {
                throw new RuntimeException(e.getMessage() + " in " + keyboardLayoutSetName, e);
            }
            return new KeyboardLayoutSet(mContext, mParams);
        }
@@ -318,7 +318,7 @@ public final class KeyboardLayoutSet {
                        if (TAG_KEYBOARD_SET.equals(tag)) {
                            parseKeyboardLayoutSetContent(parser);
                        } else {
                            throw new XmlParseUtils.IllegalStartTag(parser, TAG_KEYBOARD_SET);
                            throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_KEYBOARD_SET);
                        }
                    }
                }
@@ -336,14 +336,14 @@ public final class KeyboardLayoutSet {
                    if (TAG_ELEMENT.equals(tag)) {
                        parseKeyboardLayoutSetElement(parser);
                    } else {
                        throw new XmlParseUtils.IllegalStartTag(parser, TAG_KEYBOARD_SET);
                        throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_KEYBOARD_SET);
                    }
                } else if (event == XmlPullParser.END_TAG) {
                    final String tag = parser.getName();
                    if (TAG_KEYBOARD_SET.equals(tag)) {
                        break;
                    } else {
                        throw new XmlParseUtils.IllegalEndTag(parser, TAG_KEYBOARD_SET);
                        throw new XmlParseUtils.IllegalEndTag(parser, tag, TAG_KEYBOARD_SET);
                    }
                }
            }
+9 −9
Original line number Diff line number Diff line
@@ -220,7 +220,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                    parseKeyboardContent(parser, false);
                    break;
                } else {
                    throw new XmlParseUtils.IllegalStartTag(parser, TAG_KEYBOARD);
                    throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_KEYBOARD);
                }
            }
        }
@@ -321,7 +321,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                } else if (TAG_KEY_STYLE.equals(tag)) {
                    parseKeyStyle(parser, skip);
                } else {
                    throw new XmlParseUtils.IllegalStartTag(parser, TAG_ROW);
                    throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_ROW);
                }
            } else if (event == XmlPullParser.END_TAG) {
                final String tag = parser.getName();
@@ -333,7 +333,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                        || TAG_MERGE.equals(tag)) {
                    break;
                } else {
                    throw new XmlParseUtils.IllegalEndTag(parser, TAG_ROW);
                    throw new XmlParseUtils.IllegalEndTag(parser, tag, TAG_ROW);
                }
            }
        }
@@ -345,10 +345,10 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                R.styleable.Keyboard);
        try {
            if (a.hasValue(R.styleable.Keyboard_horizontalGap)) {
                throw new XmlParseUtils.IllegalAttribute(parser, "horizontalGap");
                throw new XmlParseUtils.IllegalAttribute(parser, TAG_ROW, "horizontalGap");
            }
            if (a.hasValue(R.styleable.Keyboard_verticalGap)) {
                throw new XmlParseUtils.IllegalAttribute(parser, "verticalGap");
                throw new XmlParseUtils.IllegalAttribute(parser, TAG_ROW, "verticalGap");
            }
            return new KeyboardRow(mResources, mParams, parser, mCurrentY);
        } finally {
@@ -373,7 +373,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                } else if (TAG_KEY_STYLE.equals(tag)) {
                    parseKeyStyle(parser, skip);
                } else {
                    throw new XmlParseUtils.IllegalStartTag(parser, TAG_KEY);
                    throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_ROW);
                }
            } else if (event == XmlPullParser.END_TAG) {
                final String tag = parser.getName();
@@ -387,7 +387,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                        || TAG_MERGE.equals(tag)) {
                    break;
                } else {
                    throw new XmlParseUtils.IllegalEndTag(parser, TAG_KEY);
                    throw new XmlParseUtils.IllegalEndTag(parser, tag, TAG_ROW);
                }
            }
        }
@@ -548,7 +548,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                } else if (TAG_DEFAULT.equals(tag)) {
                    selected |= parseDefault(parser, row, selected ? true : skip);
                } else {
                    throw new XmlParseUtils.IllegalStartTag(parser, TAG_KEY);
                    throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_SWITCH);
                }
            } else if (event == XmlPullParser.END_TAG) {
                final String tag = parser.getName();
@@ -556,7 +556,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                    if (DEBUG) endTag("</%s>", TAG_SWITCH);
                    break;
                } else {
                    throw new XmlParseUtils.IllegalEndTag(parser, TAG_KEY);
                    throw new XmlParseUtils.IllegalEndTag(parser, tag, TAG_SWITCH);
                }
            }
        }
+16 −13
Original line number Diff line number Diff line
@@ -30,50 +30,53 @@ public final class XmlParseUtils {

    @SuppressWarnings("serial")
    public static class ParseException extends XmlPullParserException {
        public ParseException(String msg, XmlPullParser parser) {
        public ParseException(final String msg, final XmlPullParser parser) {
            super(msg + " at " + parser.getPositionDescription());
        }
    }

    @SuppressWarnings("serial")
    public static final class IllegalStartTag extends ParseException {
        public IllegalStartTag(XmlPullParser parser, String parent) {
            super("Illegal start tag " + parser.getName() + " in " + parent, parser);
        public IllegalStartTag(final XmlPullParser parser, final String tag, final String parent) {
            super("Illegal start tag " + tag + " in " + parent, parser);
        }
    }

    @SuppressWarnings("serial")
    public static final class IllegalEndTag extends ParseException {
        public IllegalEndTag(XmlPullParser parser, String parent) {
            super("Illegal end tag " + parser.getName() + " in " + parent, parser);
        public IllegalEndTag(final XmlPullParser parser, final String tag, final String parent) {
            super("Illegal end tag " + tag + " in " + parent, parser);
        }
    }

    @SuppressWarnings("serial")
    public static final class IllegalAttribute extends ParseException {
        public IllegalAttribute(XmlPullParser parser, String attribute) {
            super("Tag " + parser.getName() + " has illegal attribute " + attribute, parser);
        public IllegalAttribute(final XmlPullParser parser, final String tag,
                final String attribute) {
            super("Tag " + tag + " has illegal attribute " + attribute, parser);
        }
    }

    @SuppressWarnings("serial")
    public static final class NonEmptyTag extends ParseException{
        public NonEmptyTag(String tag, XmlPullParser parser) {
        public NonEmptyTag(final XmlPullParser parser, final String tag) {
            super(tag + " must be empty tag", parser);
        }
    }

    public static void checkEndTag(String tag, XmlPullParser parser)
    public static void checkEndTag(final String tag, final XmlPullParser parser)
            throws XmlPullParserException, IOException {
        if (parser.next() == XmlPullParser.END_TAG && tag.equals(parser.getName()))
            return;
        throw new NonEmptyTag(tag, parser);
        throw new NonEmptyTag(parser, tag);
    }

    public static void checkAttributeExists(TypedArray attr, int attrId, String attrName,
            String tag, XmlPullParser parser) throws XmlPullParserException {
        if (attr.hasValue(attrId))
    public static void checkAttributeExists(final TypedArray attr, final int attrId,
            final String attrName, final String tag, final XmlPullParser parser)
                    throws XmlPullParserException {
        if (attr.hasValue(attrId)) {
            return;
        }
        throw new ParseException(
                "No " + attrName + " attribute found in <" + tag + "/>", parser);
    }