001 package org.mesopotamia.lang.java.ref.bcel; 002 003 import java.util.List; 004 005 import org.apache.bcel.classfile.Field; 006 import org.mesopotamia.lang.java.ref.Scope; 007 import org.mesopotamia.lang.java.ref.TypeInfo; 008 import org.mesopotamia.lang.java.ref.TypeSpecInfo; 009 import org.mesopotamia.lang.java.ref.VariableInfo; 010 011 public class JavaClassVariableInfo implements VariableInfo { 012 013 private Field field; 014 private JavaClassTypeInfoRepository repository; 015 private TypeInfo declaringType; 016 private Scope scope; 017 018 JavaClassVariableInfo(Field field, Scope scope, JavaClassTypeInfoRepository repository, TypeInfo declaringType) { 019 this.field = field; 020 this.repository = repository; 021 this.declaringType = declaringType; 022 this.scope = scope; 023 } 024 025 public TypeSpecInfo getTypeSpecification() { 026 return JavaClassTypeInfo.type2TypeSpecInfo(field.getType(), scope, repository); 027 } 028 029 public TypeInfo getDeclaringType() { 030 return declaringType; 031 } 032 033 public String getFcn() { 034 return declaringType.getFcn()+"."+field.getName(); 035 } 036 037 public List<String> getModifiers() { 038 return JavaClassTypeInfo.modifiersList(field.getModifiers()); 039 } 040 041 public String getName() { 042 return field.getName(); 043 } 044 045 @Override 046 public String toString() { 047 return field.getSignature() +" ["+getClass().getName()+"]"; 048 } 049 }