Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2012 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 org.eclipse.jdt.internal.compiler.lookup;
 
Represents JSR 175 Annotation instances in the type-system.
 
 public class AnnotationBinding {
 	// do not access directly - use getters instead (UnresolvedAnnotationBinding
 	// resolves types for type and pair contents just in time)
Add the standard annotations encoded in the tag bits to the recorded annotations.

Parameters:
recordedAnnotations existing annotations already created
annotationTagBits
env
Returns:
the combined list of annotations
 
 public static AnnotationBinding[] addStandardAnnotations(AnnotationBinding[] recordedAnnotationslong annotationTagBitsLookupEnvironment env) {
 	// NOTE: expect annotations to be requested just once so there is no need to store the standard annotations
 	// and all of the standard annotations created by this method are fully resolved since the sender is expected to use them immediately
 	if ((annotationTagBits & .) == 0) {
 		return recordedAnnotations;
 	}
 	int count = 0;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if ((annotationTagBits & .) != 0)
 		count++;
 	if (count == 0) {
 		// this is possible if bits were set for null annotations
 		return recordedAnnotations;
 	}
 
 	int index = recordedAnnotations.length;
 	AnnotationBinding[] result = new AnnotationBinding[index + count];
 	System.arraycopy(recordedAnnotations, 0, result, 0, index);
 	if ((annotationTagBits & .) != 0)
 		result[index++] = buildTargetAnnotation(annotationTagBitsenv);
 	if ((annotationTagBits & .) != 0)
 		result[index++] = buildRetentionAnnotation(annotationTagBitsenv);
 	if ((annotationTagBits & .) != 0)
 	if ((annotationTagBits & .) != 0)
 	if ((annotationTagBits & .) != 0)
 	if ((annotationTagBits & .) != 0)
 	if ((annotationTagBits & .) != 0)
 	if ((annotationTagBits & .) != 0)
 	if ((annotationTagBits & .) != 0)
 	return result;
 }
 
 private static AnnotationBinding buildMarkerAnnotationForMemberType(char[][] compoundNameLookupEnvironment env) {
 	ReferenceBinding type = env.getResolvedType(compoundNamenull);
 	// since this is a member type name using '$' the return binding is a
 	// problem reference binding with reason ProblemReasons.InternalNameProvided
 	if (!type.isValidBinding()) {
 	}
 }
 
 private static AnnotationBinding buildMarkerAnnotation(char[][] compoundNameLookupEnvironment env) {
 	ReferenceBinding type = env.getResolvedType(compoundNamenull);
 }
private static AnnotationBinding buildRetentionAnnotation(long bitsLookupEnvironment env) {
	ReferenceBinding retentionPolicy =
			null);
	Object value = null;
		value = retentionPolicy.getField(.true);
else if ((bits & .) != 0) {
		value = retentionPolicy.getField(.true);
else if ((bits & .) != 0) {
		value = retentionPolicy.getField(.true);
	}
	return env.createAnnotation(
		});
private static AnnotationBinding buildTargetAnnotation(long bitsLookupEnvironment env) {
	if ((bits & .) != 0)
	int arraysize = 0;
	if ((bits & .) != 0)
		arraysize++;
	if ((bits & .) != 0)
		arraysize++;
	if ((bits & .) != 0)
		arraysize++;
	if ((bits & .) != 0)
		arraysize++;
	if ((bits & .) != 0)
		arraysize++;
	if ((bits & .) != 0)
		arraysize++;
	if ((bits & .) != 0)
		arraysize++;
	if ((bits & .) != 0)
		arraysize++;
	Object[] value = new Object[arraysize];
	if (arraysize > 0) {
		int index = 0;
		if ((bits & .) != 0)
			value[index++] = elementType.getField(.true);
		if ((bits & .) != 0)
			value[index++] = elementType.getField(.true);
		if ((bits & .) != 0)
			value[index++] = elementType.getField(.true);
		if ((bits & .) != 0)
			value[index++] = elementType.getField(.true);
		if ((bits & .) != 0)
			value[index++] = elementType.getField(.true);
		if ((bits & .) != 0)
			value[index++] = elementType.getField(.true);
		if ((bits & .) != 0)
			value[index++] = elementType.getField(.true);
		if ((bits & .) != 0)
			value[index++] = elementType.getField(.true);
	}
	return env.createAnnotation(
			target,
			});
	this. = type;
	this. = pairs;
AnnotationBinding(Annotation astAnnotation) {
	this((ReferenceBindingastAnnotation.resolvedTypeastAnnotation.computeElementValuePairs());
/*
 * Computes a key that uniquely identifies this binding, using the given recipient's unique key.
 * recipientKey @ typeKey
 * @MyAnnot void bar() --> Lp/X;.bar()V@Lp/MyAnnot;
 */
public char[] computeUniqueKey(char[] recipientKey) {
	char[] typeKey = this..computeUniqueKey(false);
	int recipientKeyLength = recipientKey.length;
	char[] uniqueKey = new char[recipientKeyLength+1+typeKey.length];
	System.arraycopy(recipientKey, 0, uniqueKey, 0, recipientKeyLength);
	uniqueKey[recipientKeyLength] = '@';
	System.arraycopy(typeKey, 0, uniqueKeyrecipientKeyLength+1, typeKey.length);
	return uniqueKey;
	return this.;
	return this.;
public static void setMethodBindings(ReferenceBinding typeElementValuePair[] pairs) {
	// set the method bindings of each element value pair
	for (int i = pairs.length; --i >= 0;) {
		ElementValuePair pair = pairs[i];
		MethodBinding[] methods = type.getMethods(pair.getName());
		// there should be exactly one since the type is an annotation type.
		if (methods != null && methods.length == 1)
			pair.setMethodBinding(methods[0]);
	}
public String toString() {
	StringBuffer buffer = new StringBuffer(5);
	buffer.append('@').append(this..);
	if (this. != null && this..length > 0) {
		buffer.append("{ "); //$NON-NLS-1$
		for (int i = 0, max = this..lengthi < maxi++) {
			if (i > 0) buffer.append(", "); //$NON-NLS-1$
			buffer.append(this.[i]);
		}
		buffer.append('}');
	}
	return buffer.toString();
New to GrepCode? Check out our FAQ X