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

Commit 6ecfebcc authored by Khaled Abdelmohsen's avatar Khaled Abdelmohsen
Browse files

Use plain bytes for rule parsers

Bug: 143697198
Test: atest FrameworksServicesTests:RuleXmlParserTest
Change-Id: I1cba1e985048330c0d9f7c2189042efc59a08049
parent b3913509
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import java.util.List;
public class RuleBinaryParser implements RuleParser {

    @Override
    public List<Rule> parse(String ruleText) {
    public List<Rule> parse(byte[] ruleBytes) {
        // TODO: Implement binary text parser.
        return null;
    }
+2 −2
Original line number Diff line number Diff line
@@ -24,8 +24,8 @@ import java.util.List;
/** A helper class to parse rules into the {@link Rule} model. */
public interface RuleParser {

    /** Parse rules from a string. */
    List<Rule> parse(String ruleText) throws RuleParseException;
    /** Parse rules from bytes. */
    List<Rule> parse(byte[] ruleBytes) throws RuleParseException;

    /** Parse rules from an input stream. */
    List<Rule> parse(InputStream inputStream) throws RuleParseException;
+2 −2
Original line number Diff line number Diff line
@@ -51,10 +51,10 @@ public final class RuleXmlParser implements RuleParser {
    private static final String IS_HASHED_VALUE_ATTRIBUTE = "H";

    @Override
    public List<Rule> parse(String ruleText) throws RuleParseException {
    public List<Rule> parse(byte[] ruleBytes) throws RuleParseException {
        try {
            XmlPullParser xmlPullParser = Xml.newPullParser();
            xmlPullParser.setInput(new StringReader(ruleText));
            xmlPullParser.setInput(new StringReader(new String(ruleBytes, StandardCharsets.UTF_8)));
            return parseRules(xmlPullParser);
        } catch (Exception e) {
            throw new RuleParseException(e.getMessage(), e);
+18 −17
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import org.junit.runners.JUnit4;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -109,7 +110,7 @@ public class RuleXmlParserTest {
                                                /* isHashedValue= */ false))),
                        Rule.DENY);

        List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula);
        List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8));

        assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
    }
@@ -154,7 +155,7 @@ public class RuleXmlParserTest {
                                                "test_cert",
                                                /* isHashedValue= */ false))),
                        Rule.DENY);
        List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula);
        List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8));

        assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
    }
@@ -200,7 +201,7 @@ public class RuleXmlParserTest {
                                                /* isHashedValue= */ false))),
                        Rule.DENY);

        List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula);
        List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8));

        assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
    }
@@ -237,7 +238,7 @@ public class RuleXmlParserTest {
                                                /* isHashedValue= */ false))),
                        Rule.DENY);

        List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula);
        List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8));

        assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
    }
@@ -273,7 +274,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "Connector NOT must have 1 formula only",
                () -> xmlParser.parse(ruleXmlCompoundFormula));
                () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
    }

    @Test
@@ -302,7 +303,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "For input string: \"INVALID_OPERATOR\"",
                () -> xmlParser.parse(ruleXmlCompoundFormula));
                () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
    }

    @Test
@@ -330,7 +331,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "For input string: \"INVALID_EFFECT\"",
                () -> xmlParser.parse(ruleXmlCompoundFormula));
                () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
    }

    @Test
@@ -360,7 +361,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "Found unexpected tag: InvalidAtomicFormula",
                () -> xmlParser.parse(ruleXmlCompoundFormula));
                () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
    }

    @Test
@@ -387,7 +388,7 @@ public class RuleXmlParserTest {
                                /* isHashedValue= */ false),
                        Rule.DENY);

        List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula);
        List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8));

        assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
    }
@@ -415,7 +416,7 @@ public class RuleXmlParserTest {
                                AtomicFormula.VERSION_CODE, AtomicFormula.EQ, 1),
                        Rule.DENY);

        List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula);
        List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8));

        assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
    }
@@ -441,7 +442,7 @@ public class RuleXmlParserTest {
                        new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
                        Rule.DENY);

        List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula);
        List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8));

        assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
    }
@@ -470,7 +471,7 @@ public class RuleXmlParserTest {
                                /* isHashedValue= */ false),
                        Rule.DENY);

        List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula);
        List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8));

        assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
    }
@@ -495,7 +496,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "Found unexpected key: -1",
                () -> xmlParser.parse(ruleXmlAtomicFormula));
                () -> xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8)));
    }

    @Test
@@ -517,7 +518,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "Unknown effect: -1",
                () -> xmlParser.parse(ruleXmlAtomicFormula));
                () -> xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8)));
    }

    @Test
@@ -545,7 +546,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "Unknown connector: -1",
                () -> xmlParser.parse(ruleXmlCompoundFormula));
                () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
    }

    @Test
@@ -569,7 +570,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "For input string: \"com.app.test\"",
                () -> xmlParser.parse(ruleXmlAtomicFormula));
                () -> xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8)));
    }

    @Test
@@ -595,7 +596,7 @@ public class RuleXmlParserTest {
        assertExpectException(
                RuleParseException.class,
                /* expectedExceptionMessageRegex */ "Rules must start with RuleList <RL> tag",
                () -> xmlParser.parse(ruleXmlWithNoRuleList));
                () -> xmlParser.parse(ruleXmlWithNoRuleList.getBytes(StandardCharsets.UTF_8)));
    }

    @Test