/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.parser.java.classinfo;
import gw.internal.gosu.parser.java.IJavaASTNode;
import gw.internal.gosu.parser.java.JavaASTConstants;
public class JavaSourceAnnotationMethod extends JavaSourceMethod {
private JavaSourceDefaultValue _defaultValue;
public JavaSourceAnnotationMethod(IJavaASTNode methodNode, JavaSourceType containingClass) {
super(methodNode, containingClass);
}
@Override
public Object getDefaultValue() {
if (_defaultValue == null) {
IJavaASTNode node = _methodNode.getChildOfType(JavaASTConstants.elementValue);
if (node != null) {
IJavaASTNode arrayNode = node.getChildOfType(JavaASTConstants.elementValueArrayInitializer);
if (arrayNode != null) {
_defaultValue = new JavaSourceDefaultValue(this, "new " + getReturnClassInfo().getName() + " {" + arrayNode.getSource() + "}");
} else {
String text = node.getSource();
_defaultValue = new JavaSourceDefaultValue(this, text);
}
} else {
_defaultValue = JavaSourceDefaultValue.NULL;
}
}
return _defaultValue == JavaSourceDefaultValue.NULL ? null : _defaultValue;
}
}