1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.annotationvisitor; 17 18 import org.apache.bcel.Const; 19 import org.apache.bcel.classfile.JavaClass; 20 21 /** 22 */ 23 public abstract class AnnotationContext implements StatusReporter { 24 25 public final Status status; 26 public final JavaClass definingClass; 27 AnnotationContext(Status status, JavaClass definingClass)28 public AnnotationContext(Status status, JavaClass definingClass) { 29 this.status = status; 30 this.definingClass = definingClass; 31 } 32 getClassDescriptor()33 public String getClassDescriptor() { 34 // JavaClass.getName() returns the Java-style name (with . not /), so we must fetch 35 // the original class name from the constant pool. 36 return definingClass.getConstantPool().getConstantString( 37 definingClass.getClassNameIndex(), Const.CONSTANT_Class); 38 } 39 40 /** 41 * @return the full descriptor of this member, in the format expected in 42 * the greylist. 43 */ getMemberDescriptor()44 public abstract String getMemberDescriptor(); 45 } 46