/******************************************************************************* * Copyright (c) 2000, 2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.core; /** * Represents an annotation on a package declaration, a type, a method, a field * or a local variable in a compilation unit or a class file. *
* Annotations are obtained using {@link IAnnotatable#getAnnotation(String)}. *
* Note that annotations are not children of their declaring element. * To get a list of the annotations use {@link IAnnotatable#getAnnotations()}. *
** This interface is not intended to be implemented or extended by clients. *
* * @since 3.4 */ public interface IAnnotation extends IJavaElement, ISourceReference { /** * Returns the name of this annotation. If this annotation is coming from * a compilation unit, this is either a simple name (e.g. for@MyAnnot
, the name
* is "MyAnnot"), or a qualified name (e.g. for @x. y. MyAnnot
, the name is
* "x.y.MyAnnot"). If this annotation is coming from a class file, this is always a fully
* qualified name.
* Note that the name has been trimmed from its whitespaces. To extract the name as it * appears in the source, use {@link #getNameRange()}. *
* This is a handle-only method. The annotation may or may not be present. *
* * @return the name of this annotation */ String getElementName(); /** * Returns the member-value pairs of this annotation. Returns an empty * array if this annotation is a marker annotation. Returns a size-1 array if this * annotation is a single member annotation. In this case, the member * name is always"value"
.
*
* @return the member-value pairs of this annotation
* @throws JavaModelException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
IMemberValuePair[] getMemberValuePairs() throws JavaModelException;
/**
* Returns the source range of this annotation's name,
* or null
if this annotation does not have
* associated source code (for example, in a binary type).
*
* @exception JavaModelException if this element does not exist or if an
* exception occurs while accessing its corresponding resource.
* @return the source range of this annotation's name,
* or null
if this annotation does not have
* associated source code (for example, in a binary type)
*/
ISourceRange getNameRange() throws JavaModelException;
/**
* Returns the position relative to the order this annotation is defined in the source.
* Numbering starts at 1 (thus the first occurrence is occurrence 1, not occurrence 0).
* * Two annotations ann1 and ann2 that are equal (e.g. 2 annotations with the same name on * the same type) can be distinguished using their occurrence counts. If annotation * ann1 appears first in the source, it will have an occurrence count of 1. If annotation * ann2 appears right after annotation ann1, it will have an occurrence count of 2. *
* This is a handle-only method. The annotation may or may not be present. *
* * @return the position relative to the order this annotation is defined in the source */ int getOccurrenceCount(); }