|| element instanceof ConfigurationAnnotationMetadata) {
String className = BeansModelUtils.getBeanClass(((AbstractAnnotationMetadata) element).getBean(), null);
IType type = JdtUtils.getJavaType(((AbstractAnnotationMetadata) element).getBean().getElementResource()
.getProject(), className);
if (type != null) {
BeanMetadataNode node = new BeanMetadataNode(type.getHandleIdentifier());
node.setLabel(((AbstractAnnotationMetadata) element).getValueAsText()
+ BeansUIPlugin.getLabelProvider().getText(type));
node.setImage(BeansUIPlugin.getLabelProvider().getImage(type));
node.setLocation(((AbstractAnnotationMetadata) element).getElementSourceLocation());
Set<BeanMetadataNode> children = new HashSet<BeanMetadataNode>();
for (IMethodMetadata method : ((AbstractAnnotationMetadata) element).getMethodMetaData()) {
BeanMetadataNode child = new BeanMetadataNode(method.getHandleIdentifier());
IJavaElement je = JavaCore.create(method.getHandleIdentifier());
String label = method.getValueAsText();
if (StringUtils.hasText(label)) {
child.setLabel(label + " " + BeansUIPlugin.getLabelProvider().getText(je)); //$NON-NLS-1$
}
else {
child.setLabel(BeansUIPlugin.getLabelProvider().getText(je));
}
// special handling for aspect method level annotation
if (method instanceof AspectMethodAnnotationMetadata) {
Type annotationType = ((AspectMethodAnnotationMetadata) method).getType();
if (annotationType == Type.AFTER) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_AFTER_ADVICE));
}
else if (annotationType == Type.AROUND) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_AROUND_ADVICE));
}
else if (annotationType == Type.BEFORE) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_BEFORE_ADVICE));
}
else if (annotationType == Type.DECLARE_ANNOTATION) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_DECLARE_ANNOTATION));
}
else if (annotationType == Type.DECLARE_ERROR) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_DECLARE_ERROR));
}
else if (annotationType == Type.DECLARE_WARNING) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_DECLARE_WARNING));
}
else if (annotationType == Type.DECLARE_PARENTS) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_DECLARE_PARENTS));
}
else if (annotationType == Type.POINTCUT) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_POINTCUT));
}
}
else if (method instanceof BeanMethodAnnotationMetadata) {
child.setImage(MetadataUIImages.getImage(MetadataUIImages.IMG_OBJS_ANNOTATION_BEAN));
}
else {
child.setImage(BeansUIPlugin.getLabelProvider().getImage(je));
}
child.setLocation(method.getElementSourceLocation());
children.add(child);
}
node.setChildren(children.toArray());
return new Object[] { node };
}
}
else if (element instanceof AutowireAnnotationMetadata) {
AutowireAnnotationMetadata metadata = (AutowireAnnotationMetadata) element;
List<Object> children = new ArrayList<Object>();
for (IMethodMetadata methodMetadata : metadata.getMethodMetaData()) {
IJavaElement je = JavaCore.create(methodMetadata.getHandleIdentifier());
BeanMetadataNode node = new BeanMetadataNode(methodMetadata.getHandleIdentifier());
node.setLabel(methodMetadata.getValueAsText() + BeansUIPlugin.getLabelProvider().getText(je));
node.setImage(BeansUIPlugin.getLabelProvider().getImage(je));
node.setLocation(methodMetadata.getElementSourceLocation());
children.add(node);
}
return children.toArray(new Object[children.size()]);
}
else if (element instanceof AbstractAnnotationMetadata
&& ((AbstractAnnotationMetadata) element).getBean() != null) {
String className = BeansModelUtils.getBeanClass(((AbstractAnnotationMetadata) element).getBean(), null);
IType type = JdtUtils.getJavaType(((AbstractAnnotationMetadata) element).getBean().getElementResource()
.getProject(), className);
if (type != null) {
BeanMetadataNode node = new BeanMetadataNode(type.getHandleIdentifier());
node.setLabel(BeansUIPlugin.getLabelProvider().getText(type));
node.setImage(BeansUIPlugin.getLabelProvider().getImage(type));
node.setLocation(((AbstractAnnotationMetadata) element).getElementSourceLocation());
return new Object[] { node };
}
}
return IModelElement.NO_CHILDREN;
}