/*******************************************************************************
* Copyright (c) 2011 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.java.impl;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IMemberValuePair;
import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.jboss.tools.common.core.CommonCorePlugin;
import org.jboss.tools.common.java.IJavaAnnotation;
import org.jboss.tools.common.util.EclipseJavaUtil;
public class JavaAnnotation implements IJavaAnnotation {
IAnnotation annotation;
String annotationTypeName;
public JavaAnnotation(IAnnotation annotation, IType declaringType) {
this.annotation = annotation;
String name = annotation.getElementName();
annotationTypeName = EclipseJavaUtil.resolveType(declaringType, name);
}
public IResource getResource() {
return annotation.getResource();
}
public String getTypeName() {
return annotationTypeName;
}
public IType getType() {
try {
return EclipseJavaUtil.findType(annotation.getJavaProject(), annotationTypeName);
} catch (JavaModelException e) {
CommonCorePlugin.getDefault().logError(e);
}
return null;
}
public int getLength() {
try {
ISourceRange range = annotation.getSourceRange();
if(range != null) {
return range.getLength();
}
} catch (JavaModelException e) {
CommonCorePlugin.getDefault().logError(e);
}
return 0;
}
public int getStartPosition() {
try {
ISourceRange range = annotation.getSourceRange();
if(range != null) {
return range.getOffset();
}
} catch (JavaModelException e) {
CommonCorePlugin.getDefault().logError(e);
}
return 0;
}
public IMember getParentMember() {
IJavaElement ancestor = annotation.getParent();
while(ancestor != null) {
if(ancestor instanceof IMember) {
return (IMember)ancestor;
}
ancestor = ancestor.getParent();
}
return null;
}
public IJavaElement getParentElement() {
return annotation.getParent();
}
public IMemberValuePair[] getMemberValuePairs() {
try {
return annotation.getMemberValuePairs();
} catch (JavaModelException e) {
CommonCorePlugin.getDefault().logError(e);
}
return new IMemberValuePair[0];
}
public IAnnotation getAnnotation() {
return annotation;
}
}