1bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver/* 2bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * [The "BSD licence"] 3bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * Copyright (c) 2011 Ben Gruver 4bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * All rights reserved. 5bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * 6bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * Redistribution and use in source and binary forms, with or without 7bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * modification, are permitted provided that the following conditions 8bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * are met: 9bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * 1. Redistributions of source code must retain the above copyright 10bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * notice, this list of conditions and the following disclaimer. 11bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * 2. Redistributions in binary form must reproduce the above copyright 12bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * notice, this list of conditions and the following disclaimer in the 13bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * documentation and/or other materials provided with the distribution. 14bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * 3. The name of the author may not be used to endorse or promote products 15bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * derived from this software without specific prior written permission. 16bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * 17bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver */ 28bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver 29bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruverpackage org.jf.dexlib.Code; 30bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver 3194e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruverimport java.util.HashMap; 3294e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver 33bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruverpublic enum VerificationErrorType { 34bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver None(0, "no-error"), 35bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver Generic(1, "generic-error"), 36bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver NoClass(2, "no-such-class"), 37bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver NoField(3, "no-such-field"), 38bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver NoMethod(4, "no-such-method"), 39bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver AccessClass(5, "illegal-class-access"), 40bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver AccessField(6, "illegal-field-access"), 41bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver AccessMethod(7, "illegal-method-access"), 42bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver ClassChange(8, "class-change-error"), 43bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver Instantiation(9, "instantiation-error"); 44bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver 4594e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver private static HashMap<String, VerificationErrorType> verificationErrorTypesByName; 4694e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver 4794e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver static { 4894e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver verificationErrorTypesByName = new HashMap<String, VerificationErrorType>(); 4994e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver 5094e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver for (VerificationErrorType verificationErrorType: VerificationErrorType.values()) { 5194e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver verificationErrorTypesByName.put(verificationErrorType.getName(), verificationErrorType); 5294e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver } 5394e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver } 5494e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver 55bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver private int value; 56bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver private String name; 57bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver private VerificationErrorType(int value, String name) { 58bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver this.value = value; 59bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver this.name = name; 60bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver } 61bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver 62bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver public int getValue() { 63bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return value; 64bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver } 65bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver 66bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver public String getName() { 67bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return name; 68bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver } 69bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver 7094e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver public static VerificationErrorType fromString(String validationErrorType) { 7194e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver return verificationErrorTypesByName.get(validationErrorType); 7294e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver } 7394e5a39ad28f997442131a5aa3f574dfa80890a0Ben Gruver 74bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver public static VerificationErrorType getValidationErrorType(int validationErrorType) { 75bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver switch (validationErrorType) { 76bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 0: 77bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return None; 78bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 1: 79bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return Generic; 80bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 2: 81bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return NoClass; 82bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 3: 83bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return NoField; 84bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 4: 85bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return NoMethod; 86bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 5: 87bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return AccessClass; 88bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 6: 89bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return AccessField; 90bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 7: 91bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return AccessMethod; 92bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 8: 93bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return ClassChange; 94bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver case 9: 95bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return Instantiation; 96bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver } 97bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver return null; 98bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver } 99bbe539f2d2cdfdd814fcdc0057dcdf454ae153d3Ben Gruver} 100