001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.bcel.verifier; 018 019/** 020 * A VerificationResult is what a PassVerifier returns after verifying. 021 */ 022public class VerificationResult { 023 024 /** 025 * Constant to indicate verification has not been tried yet. This happens if some earlier verification pass did not 026 * return VERIFIED_OK. 027 */ 028 public static final int VERIFIED_NOTYET = 0; 029 030 /** Constant to indicate verification was passed. */ 031 public static final int VERIFIED_OK = 1; 032 033 /** Constant to indicate verfication failed. */ 034 public static final int VERIFIED_REJECTED = 2; 035 036 /** 037 * This string is the canonical message for verifications that have not been tried yet. This happens if some earlier 038 * verification pass did not return {@link #VERIFIED_OK}. 039 */ 040 private static final String VERIFIED_NOTYET_MSG = "Not yet verified."; 041 042 /** This string is the canonical message for passed verification passes. */ 043 private static final String VERIFIED_OK_MSG = "Passed verification."; 044 045 /** 046 * Canonical VerificationResult for not-yet-tried verifications. This happens if some earlier verification pass did not 047 * return {@link #VERIFIED_OK}. 048 */ 049 public static final VerificationResult VR_NOTYET = new VerificationResult(VERIFIED_NOTYET, VERIFIED_NOTYET_MSG); 050 051 /** Canonical VerificationResult for passed verifications. */ 052 public static final VerificationResult VR_OK = new VerificationResult(VERIFIED_OK, VERIFIED_OK_MSG); 053 054 /** The numeric status. */ 055 private final int numeric; 056 057 /** The detailed message. */ 058 private final String detailMessage; 059 060 /** The usual constructor. */ 061 public VerificationResult(final int status, final String message) { 062 numeric = status; 063 detailMessage = message; 064 } 065 066 /** 067 * Returns if two VerificationResult instances are equal. 068 */ 069 @Override 070 public boolean equals(final Object o) { 071 if (!(o instanceof VerificationResult)) { 072 return false; 073 } 074 final VerificationResult other = (VerificationResult) o; 075 return other.numeric == this.numeric && other.detailMessage.equals(this.detailMessage); 076 } 077 078 /** Returns a detailed message. */ 079 public String getMessage() { 080 return detailMessage; 081 } 082 083 /** 084 * Returns one of the {@link #VERIFIED_OK}, {@link #VERIFIED_NOTYET}, {@link #VERIFIED_REJECTED} constants. 085 */ 086 public int getStatus() { 087 return numeric; 088 } 089 090 /** 091 * @return a hash code value for the object. 092 */ 093 @Override 094 public int hashCode() { 095 return numeric ^ detailMessage.hashCode(); 096 } 097 098 /** 099 * Returns a String representation of the VerificationResult. 100 */ 101 @Override 102 public String toString() { 103 String ret = ""; 104 if (numeric == VERIFIED_NOTYET) { 105 ret = "VERIFIED_NOTYET"; 106 } 107 if (numeric == VERIFIED_OK) { 108 ret = "VERIFIED_OK"; 109 } 110 if (numeric == VERIFIED_REJECTED) { 111 ret = "VERIFIED_REJECTED"; 112 } 113 ret += "\n" + detailMessage + "\n"; 114 return ret; 115 } 116}