blob: a2d869a5a400421911dba877142f08fd16bffd5d [file] [log] [blame]
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
public class AnnotationValueInfo
{
private Object mValue;
private String mString;
private MethodInfo mElement;
public AnnotationValueInfo(MethodInfo element)
{
mElement = element;
}
public void init(Object value)
{
mValue = value;
}
public MethodInfo element()
{
return mElement;
}
public Object value()
{
return mValue;
}
public String valueString()
{
Object v = mValue;
if (v instanceof TypeInfo) {
return ((TypeInfo)v).fullName();
}
else if (v instanceof FieldInfo) {
StringBuilder str = new StringBuilder();
FieldInfo f = (FieldInfo)v;
str.append(f.containingClass().qualifiedName());
str.append('.');
str.append(f.name());
return str.toString();
}
else if (v instanceof AnnotationInstanceInfo) {
return v.toString();
}
else if (v instanceof AnnotationValueInfo[]) {
StringBuilder str = new StringBuilder();
AnnotationValueInfo[] array = (AnnotationValueInfo[])v;
final int N = array.length;
str.append("{");
for (int i=0; i<array.length; i++) {
str.append(array[i].valueString());
if (i != N-1) {
str.append(",");
}
}
str.append("}");
return str.toString();
}
else {
return FieldInfo.constantLiteralValue(v);
}
}
}