All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xmlbeans.impl.jam.JAnnotationValue Maven / Gradle / Ivy

Go to download

The Apache Commons Codec package contains simple encoder and decoders for various formats such as Base64 and Hexadecimal. In addition to these widely used encoders and decoders, the codec package also maintains a collection of phonetic encoding utilities.

The newest version!
/*   Copyright 2004 The Apache Software Foundation
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.apache.xmlbeans.impl.jam;



/**
 * 

Represents a member value of a JAnnotation.

* *

A note regarding enums

* *

The presence of metadata of 'enum' types poses a bit of a challenge * in the untyped view of metadata that is presented by JAnnotationValue. * Because JAM cannot assume that the enum definitions have been compiled, * it is not possible for JAM to return an instance of an enumuerated type. * In other words, it is not possible for JAnnotationValue to provide an * asEnum() method.

* *

If JAM encounters an annotation value of an enumerated type, it will * represent it with a JAnnotationValue such that calling * myAnnotationValue.getType().isEnumType() will return true. * Moreover, calling myAnnotationValue.asString() will return * the name of the enumeration field, exactly as it appears in the * type declaration. *

* * @author Patrick Calahan */ public interface JAnnotationValue { //docme public String getName(); //docme public JClass getType(); /** *

If this member is complex (i.e. an instance of another annotation * type), this method returns a representation of the annotation instance. * Returns null in all other samples. This method always returns null if the * annotation is a javdoc tag, as such tags only support one level of * nesting.

*/ public JAnnotation asAnnotation(); /** *

Returns the value of this member as a JClass. Returns null if the * value cannot be understood as a class name or if the type of the member * is known to be something other than java.lang.Class.

*/ public JClass asClass(); /** *

Returns the String value of the annotation. If the value is * known to be a simple, non-array type other than String, it will be * converted in a resonable manner (with an appropriate toString() or * String.valueOf() method). If the value is known to be complex or is an * array, this method will return null.

* *

If no type information is available for the annotation member (i.e. * it's a javadoc tag), then the raw textual value of the member is * returned.

*/ public String asString(); /** *

Returns the member's value as an int. If the value is not known to be * an int, (because it's a javadoc tag or because it's a 175 annotation * member of a type other than int) asString() is called. If the result is * null, NumberFormatException is thrown. Otherwise, the String is * converted to an int with Integer.valueOf(), which again may throw * NumberFormatException.

*/ public int asInt() throws NumberFormatException; /** *

Returns the member's value as a boolean. If necessary, type * conversion is performed in a similar manner as described for * asInt(), except that IllegalArgumentException is * thrown instead of NumberFormatException.

*/ public boolean asBoolean() throws IllegalArgumentException; /** *

Returns the member's value as a long. If necessary, type * conversion is performed in a similar manner as described for * asInt().

*/ public long asLong() throws NumberFormatException; /** *

Returns the member's value as a short. If necessary, type * conversion is performed in a similar manner as described for * asInt().

*/ public short asShort() throws NumberFormatException; /** *

Returns the member's value as a double. If necessary, type * conversion is performed in a similar manner as described for * asInt().

*/ public double asDouble() throws NumberFormatException; /** *

Returns the member's value as a float. If necessary, type * conversion is performed in a similar manner as described for * asInt().

*/ public float asFloat() throws NumberFormatException; /** *

Returns the member's value as a byte. If necessary, type * conversion is performed in a similar manner as described for * asInt().

*/ public byte asByte() throws NumberFormatException; /** *

Returns the member's value as a char. If necessary, type * conversion is performed by calling getStringValue(). If the result * is null or is a String that is not exactly of length 1, * IllegalArgumentException is thrown.

*/ public char asChar() throws IllegalArgumentException; /** *

If this member is known to be of an array type, returns the value * as an array of Objects. If the array component type is primitive, * the array objects will be instances of an appropriate java.lang * wrapper (e.g., Integer). Returns null if the member type is * not an array.

* *

This method always returns null for javadoc tags.

*/ //public Object[] asArray(); /** *

If this member is known to be an array of classes, returns an * array of JClass representations of those classes. If the memeber * is known to be an array of a simple non-array type, this method * will call asStringArray() and attempt to return a JClass * by treating each string in the returned array as a qualified classname. * Returns null otherwise. *

* *

This method always returns null for javadoc tags.

*/ public JClass[] asClassArray(); /** *

If this member is known to be an array of annotations (i.e. * complex, nested types), this method returns an array containing * each complex value as a JAnnotation. Returns null in all other samples. *

* *

This method always returns null for javadoc tags.

*/ public JAnnotation[] asAnnotationArray(); /** *

Returns this member's value as an array of Strings. If this member is * not of an array type, or is an array of arrays or complex annotations, * this method returns null. If it is an array of a simple, non-array type * other than String, conversion on each component will be attempted as * described under getStringValue().

* *

This method always returns null for javadoc tags.

*/ public String[] asStringArray(); /** *

Returns this member's value as an array of ints. If this member is * not of an array type, or is an array of arrays or complex annotations, * this method returns null. If it is an array of a simple, non-array type * other than int, conversion on each component will be attempted as * described under getIntValue().

* *

This method always returns null for javadoc tags.

*/ public int[] asIntArray() throws NumberFormatException; /** *

Returns this member's value as an array of booleans. If necessary, * type conversion is performed in a similar manner as described for * asIntArray(), except that IllegalArgumentException may be * thrown instead of NumberFormatException.

* *

This method always returns null for javadoc tags.

*/ public boolean[] asBooleanArray() throws IllegalArgumentException; /** *

Returns this member's value as an array of shorts. If necessary, * type conversion is performed in a similar manner as described for * asIntArray(). * *

This method always returns null for javadoc tags.

*/ public short[] asShortArray() throws NumberFormatException; /** *

Returns this member's value as an array of longs. If necessary, * type conversion is performed in a similar manner as described for * asIntArray(). * *

This method always returns null for javadoc tags.

*/ public long[] asLongArray() throws NumberFormatException; /** *

Returns this member's value as an array of doubles. If necessary, * type conversion is performed in a similar manner as described for * asIntArray(). * *

This method always returns null for javadoc tags.

*/ public double[] asDoubleArray() throws NumberFormatException; /** *

Returns this member's value as an array of floats. If necessary, * type conversion is performed in a similar manner as described for * asIntArray(). * *

This method always returns null for javadoc tags.

*/ public float[] asFloatArray() throws NumberFormatException; /** *

Returns this member's value as an array of bytes. If necessary, * type conversion is performed in a similar manner as described for * asIntArray(). * *

This method always returns null for javadoc tags.

*/ public byte[] asByteArray() throws NumberFormatException; /** *

Returns this member's value as an array of bytes. If necessary, * type conversion is performed in a similar manner as described for * asIntArray() and asChar().. * *

This method always returns null for javadoc tags.

*/ public char[] asCharArray() throws IllegalArgumentException; /** *

Returns true if the member's value was not explicitly set in the * annotation instance but was instead taken from the member definition's * default.

* *

Note that not all JAM implementations may be able to distinguish * the case where the value is explicitly declared to be the same value * as the member's default from the case where the value is not declared * and the value is implicitly default. In this event, this method * will return true if and only if the effective value of the annotation * is the same as the default value (regardless of how that value was * declared).

*/ public boolean isDefaultValueUsed(); //return the 175 type accessor method? //public JMethod getAccessor(); /** * @deprecated DO NOT CALL THIS METHOD. IT WILL BE REMOVED SOON. This * method is a bad thing because it forces/allows the caller to make * assumptions about how the annotation value is actually represented * in the underlying implementation. Please use a combination * of getType() and the various as...() methods instead. */ public Object getValue(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy