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    }