You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/03/31 17:34:51 UTC
svn commit: r390443 [4/5] - in /incubator/harmony/enhanced/classlib/trunk:
make/ make/patternsets/ modules/kernel/ modules/luni-kernel/
modules/luni-kernel/META-INF/ modules/luni-kernel/src/
modules/luni-kernel/src/main/ modules/luni-kernel/src/main/ja...
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/PhantomReference.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/PhantomReference.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/PhantomReference.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/PhantomReference.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,49 @@
+/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.ref;
+
+/**
+ * PhantomReference objects are used to detect referents which are no longer
+ * visible and are eligible to have their storage reclaimed.
+ *
+ * @since JDK1.2
+ */
+public class PhantomReference extends java.lang.ref.Reference {
+
+ /**
+ * Return the referent of the reference object. Phantom reference objects
+ * referents are inaccessible, and so null is returned.
+ *
+ *
+ * @return Object Returns null.
+ */
+ public Object get() {
+ return null;
+ }
+
+ /**
+ * Constructs a new instance of this class.
+ *
+ *
+ * @param r
+ * referent to track.
+ * @param q
+ * queue to register to the reference object with.
+ */
+ public PhantomReference(Object r, ReferenceQueue q) {
+ super();
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/Reference.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/Reference.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/Reference.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/Reference.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,120 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.ref;
+
+/**
+ * This class must be implemented by the vm vendor. The documented methods must
+ * be implemented to support the provided subclass implementations. As the
+ * provided subclass implementations are trivial and simply call
+ * initReference(Object) and initReference(Object, ReferenceQueue) from their
+ * constructors, the vm vendor may elect to implement the subclasses as well.
+ * Abstract class which describes behavior common to all reference objects.
+ *
+ * @since JDK1.2
+ */
+public abstract class Reference extends Object {
+
+ /**
+ * Make the referent null. This does not force the reference object to be
+ * enqueued.
+ *
+ */
+ public void clear() {
+ return;
+ }
+
+ /**
+ * Force the reference object to be enqueued if it has been associated with
+ * a queue.
+ *
+ * @return boolean true if Reference is enqueued. false otherwise.
+ */
+ public boolean enqueue() {
+ return false;
+ }
+
+ /**
+ * Return the referent of the reference object.
+ *
+ * @return Object Referent to which reference refers, or null if object has
+ * been cleared.
+ */
+ public Object get() {
+ return null;
+ }
+
+ /**
+ * Return whether the reference object has been enqueued.
+ *
+ * @return boolean true if Reference has been enqueued. false otherwise.
+ */
+ public boolean isEnqueued() {
+ return false;
+ }
+
+ /**
+ * Enqueue the reference object on the associated queue.
+ *
+ * @return boolean true if the Reference was successfully enqueued. false
+ * otherwise.
+ */
+ boolean enqueueImpl() {
+ return false;
+ }
+
+ /**
+ * Constructs a new instance of this class.
+ *
+ */
+ Reference() {
+ super();
+ }
+
+ /**
+ * Implement this method to support the provided subclass implementations.
+ * Initialize a newly created reference object. Associate the reference
+ * object with the referent.
+ *
+ * @param r
+ * the referent
+ */
+ void initReference(Object r) {
+ return;
+ }
+
+ /**
+ * Implement this method to support the provided subclass implementations.
+ * Initialize a newly created reference object. Associate the reference
+ * object with the referent, and the specified ReferenceQueue.
+ *
+ * @param r
+ * the referent
+ * @param q
+ * the ReferenceQueue
+ */
+ void initReference(Object r, ReferenceQueue q) {
+ return;
+ }
+
+ /**
+ * Called when a Reference has been removed from its ReferenceQueue.
+ * Set the enqueued field to false.
+ */
+ void dequeue() {
+ return;
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/SoftReference.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/SoftReference.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/SoftReference.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/SoftReference.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,62 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.ref;
+
+/**
+ * SoftReference objects are used to detect referents which are no longer
+ * visible and who's memory is to be reclaimed.
+ *
+ * @since JDK1.2
+ */
+public class SoftReference extends java.lang.ref.Reference {
+ private int age;
+
+ /**
+ * Constructs a new instance of this class.
+ *
+ *
+ * @param r
+ * referent to track.
+ * @param q
+ * queue to register to the reference object with.
+ */
+ public SoftReference(Object r, ReferenceQueue q) {
+ initReference(r, q);
+ }
+
+ /**
+ * Constructs a new instance of this class.
+ *
+ *
+ * @param r
+ * referent to track.
+ */
+ public SoftReference(Object r) {
+ initReference(r);
+ }
+
+ /**
+ * Return the referent of the reference object.
+ *
+ *
+ * @return Object Referent to which reference refers, or null if object has
+ * been cleared.
+ */
+ public Object get() {
+ return super.get();
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/WeakReference.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/WeakReference.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/WeakReference.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/ref/WeakReference.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,49 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.ref;
+
+/**
+ * WeakReference objects are used to detect referents which are no longer
+ * visible.
+ *
+ * @since JDK1.2
+ */
+public class WeakReference extends java.lang.ref.Reference {
+
+ /**
+ * Constructs a new instance of this class.
+ *
+ *
+ * @param r
+ * referent to track.
+ * @param q
+ * queue to register to the reference object with.
+ */
+ public WeakReference(Object r, ReferenceQueue q) {
+ initReference(r, q);
+ }
+
+ /**
+ * Constructs a new instance of this class.
+ *
+ *
+ * @param r
+ * referent to track.
+ */
+ public WeakReference(Object r) {
+ initReference(r);
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/AccessibleObject.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/AccessibleObject.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/AccessibleObject.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/AccessibleObject.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,146 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.reflect;
+
+/**
+ * This class must be implemented by the vm vendor. This class is the superclass
+ * of all member reflect classes (Field, Constructor, Method). AccessibleObject
+ * provides the ability to toggle access checks for these objects. By default
+ * accessing a member (for example, setting a field or invoking a method) checks
+ * the validity of the access (for example, invoking a private method from
+ * outside the defining class is prohibited) and throws IllegalAccessException
+ * if the operation is not permitted. If the accessible flag is set to true,
+ * these checks are omitted. This allows privileged applications such as Java
+ * Object Serialization, inspectors, and debuggers to have complete access to
+ * objects.
+ *
+ * @see Field
+ * @see Constructor
+ * @see Method
+ * @see ReflectPermission
+ */
+public class AccessibleObject {
+ static final Object[] emptyArgs = new Object[0];
+
+ /**
+ * AccessibleObject constructor. AccessibleObjects can only be created by
+ * the Virtual Machine.
+ */
+ protected AccessibleObject() {
+ super();
+ }
+
+ /**
+ * Returns the value of the accessible flag. This is false if access checks
+ * are performed, true if they are skipped.
+ *
+ * @return the value of the accessible flag
+ */
+ public boolean isAccessible() {
+ return false;
+ }
+
+ /**
+ * Attempts to set the value of the accessible flag for all the objects in
+ * the array provided. Only one security check is performed. Setting this
+ * flag to false will enable access checks, setting to true will disable
+ * them. If there is a security manager, checkPermission is called with a
+ * ReflectPermission("suppressAccessChecks").
+ *
+ * @param objects
+ * the accessible objects
+ * @param flag
+ * the new value for the accessible flag
+ * @see #setAccessible(boolean)
+ * @see ReflectPermission
+ * @throws SecurityException
+ * if the request is denied
+ */
+ public static void setAccessible(AccessibleObject[] objects, boolean flag)
+ throws SecurityException {
+ return;
+ }
+
+ /**
+ * Attempts to set the value of the accessible flag. Setting this flag to
+ * false will enable access checks, setting to true will disable them. If
+ * there is a security manager, checkPermission is called with a
+ * ReflectPermission("suppressAccessChecks").
+ *
+ * @param flag
+ * the new value for the accessible flag
+ * @see ReflectPermission
+ * @throws SecurityException
+ * if the request is denied
+ */
+ public void setAccessible(boolean flag) throws SecurityException {
+ return;
+ }
+
+ static Object[] marshallArguments(Class[] parameterTypes, Object[] args)
+ throws IllegalArgumentException {
+ return null;
+ }
+
+ void invokeV(Object receiver, Object args[])
+ throws InvocationTargetException {
+ return;
+ }
+
+ Object invokeL(Object receiver, Object args[])
+ throws InvocationTargetException {
+ return null;
+ }
+
+ int invokeI(Object receiver, Object args[])
+ throws InvocationTargetException {
+ return 0;
+ }
+
+ long invokeJ(Object receiver, Object args[])
+ throws InvocationTargetException {
+ return 0L;
+ }
+
+ float invokeF(Object receiver, Object args[])
+ throws InvocationTargetException {
+ return 0.0F;
+ }
+
+ double invokeD(Object receiver, Object args[])
+ throws InvocationTargetException {
+ return 0.0D;
+ }
+
+ native Class[] getParameterTypesImpl();
+
+ native int getModifiers();
+
+ native Class[] getExceptionTypesImpl();
+
+ native String getSignature();
+
+ native boolean checkAccessibility(Class senderClass, Object receiver);
+
+ static native void initializeClass(Class clazz);
+
+ /**
+ * Answer the class at depth. Notes: 1) This method operates on the defining
+ * classes of methods on stack. NOT the classes of receivers. 2) The item at
+ * index zero describes the caller of this method.
+ */
+ static final native Class getStackClass(int depth);
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Array.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Array.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Array.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Array.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,481 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.reflect;
+
+/**
+ * This class must be implemented by the vm vendor. This class provides methods
+ * to dynamically create and access arrays.
+ *
+ */
+public final class Array {
+
+ /**
+ * Return the element of the array at the specified index. This reproduces
+ * the effect of <code>array[index]</code> If the array component is a
+ * base type, the result is automatically wrapped.
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element, possibly wrapped
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native Object get(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Return the element of the array at the specified index, converted to a
+ * boolean if possible. This reproduces the effect of
+ * <code>array[index]</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the element cannot be
+ * converted to the requested type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native boolean getBoolean(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Return the element of the array at the specified index, converted to a
+ * byte if possible. This reproduces the effect of <code>array[index]</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the element cannot be
+ * converted to the requested type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native byte getByte(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Return the element of the array at the specified index, converted to a
+ * char if possible. This reproduces the effect of <code>array[index]</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the element cannot be
+ * converted to the requested type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native char getChar(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Return the element of the array at the specified index, converted to a
+ * double if possible. This reproduces the effect of
+ * <code>array[index]</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the element cannot be
+ * converted to the requested type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native double getDouble(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Return the element of the array at the specified index, converted to a
+ * float if possible. This reproduces the effect of
+ * <code>array[index]</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the element cannot be
+ * converted to the requested type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native float getFloat(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Return the element of the array at the specified index, converted to an
+ * int if possible. This reproduces the effect of <code>array[index]</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the element cannot be
+ * converted to the requested type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native int getInt(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Return the length of the array. This reproduces the effect of
+ * <code>array.length</code>
+ *
+ * @param array
+ * the array
+ * @return the length
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array
+ */
+ public static native int getLength(Object array)
+ throws IllegalArgumentException;
+
+ /**
+ * Return the element of the array at the specified index, converted to a
+ * long if possible. This reproduces the effect of <code>array[index]</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the element cannot be
+ * converted to the requested type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native long getLong(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Return the element of the array at the specified index, converted to a
+ * short if possible. This reproduces the effect of
+ * <code>array[index]</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @return the requested element
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the element cannot be
+ * converted to the requested type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native short getShort(Object array, int index)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ private static native Object multiNewArrayImpl(Class componentType,
+ int dimensions, int[] dimensionsArray);
+
+ private static native Object newArrayImpl(Class componentType, int dimension);
+
+ /**
+ * Return a new multidimensional array of the specified component type and
+ * dimensions. This reproduces the effect of
+ * <code>new componentType[d0][d1]...[dn]</code> for a dimensions array of {
+ * d0, d1, ... , dn }
+ *
+ * @param componentType
+ * the component type of the new array
+ * @param dimensions
+ * the dimensions of the new array
+ * @return the new array
+ * @exception java.lang.NullPointerException
+ * if the component type is null
+ * @exception java.lang.NegativeArraySizeException
+ * if any of the dimensions are negative
+ * @exception java.lang.IllegalArgumentException
+ * if the array of dimensions is of size zero, or exceeds the
+ * limit of the number of dimension for an array (currently
+ * 255)
+ */
+ public static Object newInstance(Class componentType, int[] dimensions)
+ throws NegativeArraySizeException, IllegalArgumentException {
+ return null;
+ }
+
+ /**
+ * Return a new array of the specified component type and length. This
+ * reproduces the effect of <code>new componentType[size]</code>
+ *
+ * @param componentType
+ * the component type of the new array
+ * @param size
+ * the length of the new array
+ * @return the new array
+ * @exception java.lang.NullPointerException
+ * if the component type is null
+ * @exception java.lang.NegativeArraySizeException
+ * if the size if negative
+ */
+ public static Object newInstance(Class componentType, int size)
+ throws NegativeArraySizeException {
+ return null;
+ }
+
+ /**
+ * Set the element of the array at the specified index to the value. This
+ * reproduces the effect of <code>array[index] = value</code> If the array
+ * component is a base type, the value is automatically unwrapped
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void set(Object array, int index, Object value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Set the element of the array at the specified index to the boolean value.
+ * This reproduces the effect of <code>array[index] = value</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void setBoolean(Object array, int index, boolean value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Set the element of the array at the specified index to the byte value.
+ * This reproduces the effect of <code>array[index] = value</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void setByte(Object array, int index, byte value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Set the element of the array at the specified index to the char value.
+ * This reproduces the effect of <code>array[index] = value</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void setChar(Object array, int index, char value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Set the element of the array at the specified index to the double value.
+ * This reproduces the effect of <code>array[index] = value</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void setDouble(Object array, int index, double value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Set the element of the array at the specified index to the float value.
+ * This reproduces the effect of <code>array[index] = value</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void setFloat(Object array, int index, float value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Set the element of the array at the specified index to the int value.
+ * This reproduces the effect of <code>array[index] = value</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void setInt(Object array, int index, int value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Set the element of the array at the specified index to the long value.
+ * This reproduces the effect of <code>array[index] = value</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void setLong(Object array, int index, long value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+ /**
+ * Set the element of the array at the specified index to the short value.
+ * This reproduces the effect of <code>array[index] = value</code>
+ *
+ * @param array
+ * the array
+ * @param index
+ * the index
+ * @param value
+ * the new value
+ * @exception java.lang.NullPointerException
+ * if the array is null
+ * @exception java.lang.IllegalArgumentException
+ * if the array is not an array or the value cannot be
+ * converted to the array type by a widening conversion
+ * @exception java.lang.ArrayIndexOutOfBoundsException
+ * if the index is out of bounds -- negative or greater than
+ * or equal to the array length
+ */
+ public static native void setShort(Object array, int index, short value)
+ throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,167 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.reflect;
+
+/**
+ * This class must be implemented by the vm vendor. This class models a
+ * constructor. Information about the constructor can be accessed, and the
+ * constructor can be invoked dynamically.
+ *
+ */
+public final class Constructor extends AccessibleObject implements Member {
+
+ /**
+ * Compares the specified object to this Constructor and answer if they are
+ * equal. The object must be an instance of Constructor with the same
+ * defining class and parameter types.
+ *
+ * @param object
+ * the object to compare
+ * @return true if the specified object is equal to this Constructor, false
+ * otherwise
+ * @see #hashCode
+ */
+ public boolean equals(Object object) {
+ return false;
+ }
+
+ /**
+ * Return the java.lang.Class associated with the class that defined this
+ * constructor.
+ *
+ * @return the declaring class
+ */
+ public Class getDeclaringClass() {
+ return null;
+ }
+
+ /**
+ * Return an array of the java.lang.Class objects associated with the
+ * exceptions declared to be thrown by this constructor. If the constructor
+ * was not declared to throw any exceptions, the array returned will be
+ * empty.
+ *
+ * @return the declared exception classes
+ */
+ public Class[] getExceptionTypes() {
+ return null;
+ }
+
+ /**
+ * Return the modifiers for the modelled constructor. The Modifier class
+ * should be used to decode the result.
+ *
+ * @return the modifiers
+ * @see java.lang.reflect.Modifier
+ */
+ public int getModifiers() {
+ return 0;
+ }
+
+ /**
+ * Return the name of the modelled constructor. This is the name of the
+ * declaring class.
+ *
+ * @return the name
+ */
+ public String getName() {
+ return null;
+ }
+
+ /**
+ * Return an array of the java.lang.Class objects associated with the
+ * parameter types of this constructor. If the constructor was declared with
+ * no parameters, the array returned will be empty.
+ *
+ * @return the parameter types
+ */
+ public Class[] getParameterTypes() {
+ return null;
+ }
+
+ /**
+ * Answers an integer hash code for the receiver. Objects which are equal
+ * answer the same value for this method. The hash code for a Constructor is
+ * the hash code of the declaring class' name.
+ *
+ * @return the receiver's hash
+ * @see #equals
+ */
+ public int hashCode() {
+ return 0;
+ }
+
+ /**
+ * Return a new instance of the declaring class, initialized by dynamically
+ * invoking the modelled constructor. This reproduces the effect of
+ * <code>new declaringClass(arg1, arg2, ... , argN)</code> This method
+ * performs the following:
+ * <ul>
+ * <li>A new instance of the declaring class is created. If the declaring
+ * class cannot be instantiated (i.e. abstract class, an interface, an array
+ * type, or a base type) then an InstantiationException is thrown.</li>
+ * <li>If this Constructor object is enforcing access control (see
+ * AccessibleObject) and the modelled constructor is not accessible from the
+ * current context, an IllegalAccessException is thrown.</li>
+ * <li>If the number of arguments passed and the number of parameters do
+ * not match, an IllegalArgumentException is thrown.</li>
+ * <li>For each argument passed:
+ * <ul>
+ * <li>If the corresponding parameter type is a base type, the argument is
+ * unwrapped. If the unwrapping fails, an IllegalArgumentException is
+ * thrown.</li>
+ * <li>If the resulting argument cannot be converted to the parameter type
+ * via a widening conversion, an IllegalArgumentException is thrown.</li>
+ * </ul>
+ * <li>The modelled constructor is then invoked. If an exception is thrown
+ * during the invocation, it is caught and wrapped in an
+ * InvocationTargetException. This exception is then thrown. If the
+ * invocation completes normally, the newly initialized object is returned.
+ * </ul>
+ *
+ * @param args
+ * the arguments to the constructor
+ * @return the new, initialized, object
+ * @exception java.lang.InstantiationException
+ * if the class cannot be instantiated
+ * @exception java.lang.IllegalAccessException
+ * if the modelled constructor is not accessible
+ * @exception java.lang.IllegalArgumentException
+ * if an incorrect number of arguments are passed, or an
+ * argument could not be converted by a widening conversion
+ * @exception java.lang.reflect.InvocationTargetException
+ * if an exception was thrown by the invoked constructor
+ * @see java.lang.reflect.AccessibleObject
+ */
+ public Object newInstance(Object args[]) throws InstantiationException,
+ IllegalAccessException, IllegalArgumentException,
+ InvocationTargetException {
+ return null;
+ }
+
+ /**
+ * Answers a string containing a concise, human-readable description of the
+ * receiver. The format of the string is modifiers (if any) declaring class
+ * name '(' parameter types, separated by ',' ')' If the constructor throws
+ * exceptions, ' throws ' exception types, separated by ',' For example:
+ * <code>public String(byte[],String) throws UnsupportedEncodingException</code>
+ *
+ * @return a printable representation for the receiver
+ */
+ public String toString() {
+ return null;
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Field.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Field.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Field.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Field.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,624 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.reflect;
+
+/**
+ * This class must be implemented by the vm vendor. This class models a field.
+ * Information about the field can be accessed, and the field's value can be
+ * accessed dynamically.
+ *
+ */
+public final class Field extends AccessibleObject implements Member {
+
+ /**
+ * Compares the specified object to this Field and answer if they are equal.
+ * The object must be an instance of Field with the same defining class and
+ * name.
+ *
+ * @param object
+ * the object to compare
+ * @return true if the specified object is equal to this Field, false
+ * otherwise
+ * @see #hashCode
+ */
+ public boolean equals(Object object) {
+ return false;
+ }
+
+ /**
+ * Return the value of the field in the specified object. This reproduces
+ * the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * The value of the field is returned. If the type of this field is a base
+ * type, the field value is automatically wrapped.
+ *
+ * @param object
+ * the object to access
+ * @return the field value, possibly wrapped
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native Object get(Object object) throws IllegalAccessException,
+ IllegalArgumentException;
+
+ /**
+ * Return the value of the field in the specified object as a boolean. This
+ * reproduces the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @return the field value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native boolean getBoolean(Object object)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Return the value of the field in the specified object as a byte. This
+ * reproduces the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @return the field value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native byte getByte(Object object) throws IllegalAccessException,
+ IllegalArgumentException;
+
+ /**
+ * Return the value of the field in the specified object as a char. This
+ * reproduces the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @return the field value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native char getChar(Object object) throws IllegalAccessException,
+ IllegalArgumentException;
+
+ /**
+ * Return the java.lang.Class associated with the class that defined this
+ * field.
+ *
+ * @return the declaring class
+ */
+ public Class getDeclaringClass() {
+ return null;
+ }
+
+ /**
+ * Return the value of the field in the specified object as a double. This
+ * reproduces the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @return the field value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native double getDouble(Object object)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Return the value of the field in the specified object as a float. This
+ * reproduces the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @return the field value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native float getFloat(Object object) throws IllegalAccessException,
+ IllegalArgumentException;
+
+ /**
+ * Return the value of the field in the specified object as an int. This
+ * reproduces the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @return the field value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native int getInt(Object object) throws IllegalAccessException,
+ IllegalArgumentException;
+
+ /**
+ * Return the value of the field in the specified object as a long. This
+ * reproduces the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @return the field value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native long getLong(Object object) throws IllegalAccessException,
+ IllegalArgumentException;
+
+ /**
+ * Return the modifiers for the modelled field. The Modifier class should be
+ * used to decode the result.
+ *
+ * @return the modifiers
+ * @see java.lang.reflect.Modifier
+ */
+ public native int getModifiers();
+
+ /**
+ * Return the name of the modelled field.
+ *
+ * @return the name
+ */
+ public String getName() {
+ return null;
+ }
+
+ /**
+ * Return the value of the field in the specified object as a short. This
+ * reproduces the effect of <code>object.fieldName</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ *
+ * @param object
+ * the object to access
+ * @return the field value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native short getShort(Object object) throws IllegalAccessException,
+ IllegalArgumentException;
+
+ native String getSignature();
+
+ /**
+ * Return the java.lang.Class associated with the type of this field.
+ *
+ * @return the type
+ */
+ public Class getType() {
+ return null;
+ }
+
+ /**
+ * Answers an integer hash code for the receiver. Objects which are equal
+ * answer the same value for this method.
+ * <p>
+ * The hash code for a Field is the hash code of the field's name.
+ *
+ * @return the receiver's hash
+ * @see #equals
+ */
+ public int hashCode() {
+ return 0;
+ }
+
+ /**
+ * Set the value of the field in the specified object to the boolean value.
+ * This reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the field type is a base type, the value is automatically unwrapped.
+ * If the unwrap fails, an IllegalArgumentException is thrown. If the value
+ * cannot be converted to the field type via a widening conversion, an
+ * IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void set(Object object, Object value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Set the value of the field in the specified object to the boolean value.
+ * This reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the value cannot be converted to the field type via a widening
+ * conversion, an IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void setBoolean(Object object, boolean value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Set the value of the field in the specified object to the byte value.
+ * This reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the value cannot be converted to the field type via a widening
+ * conversion, an IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void setByte(Object object, byte value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Set the value of the field in the specified object to the char value.
+ * This reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the value cannot be converted to the field type via a widening
+ * conversion, an IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void setChar(Object object, char value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Set the value of the field in the specified object to the double value.
+ * This reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the value cannot be converted to the field type via a widening
+ * conversion, an IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void setDouble(Object object, double value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Set the value of the field in the specified object to the float value.
+ * This reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the value cannot be converted to the field type via a widening
+ * conversion, an IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void setFloat(Object object, float value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Set the value of the field in the specified object to the int value. This
+ * reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the value cannot be converted to the field type via a widening
+ * conversion, an IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void setInt(Object object, int value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Set the value of the field in the specified object to the long value.
+ * This reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the value cannot be converted to the field type via a widening
+ * conversion, an IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void setLong(Object object, long value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Set the value of the field in the specified object to the short value.
+ * This reproduces the effect of <code>object.fieldName = value</code>
+ * <p>
+ * If the modelled field is static, the object argument is ignored.
+ * Otherwise, if the object is null, a NullPointerException is thrown. If
+ * the object is not an instance of the declaring class of the method, an
+ * IllegalArgumentException is thrown.
+ * <p>
+ * If this Field object is enforcing access control (see AccessibleObject)
+ * and the modelled field is not accessible from the current context, an
+ * IllegalAccessException is thrown.
+ * <p>
+ * If the value cannot be converted to the field type via a widening
+ * conversion, an IllegalArgumentException is thrown.
+ *
+ * @param object
+ * the object to access
+ * @param value
+ * the new value
+ * @throws NullPointerException
+ * if the object is null and the field is non-static
+ * @throws IllegalArgumentException
+ * if the object is not compatible with the declaring class
+ * @throws IllegalAccessException
+ * if modelled field is not accessible
+ */
+ public native void setShort(Object object, short value)
+ throws IllegalAccessException, IllegalArgumentException;
+
+ /**
+ * Answers a string containing a concise, human-readable description of the
+ * receiver.
+ * <p>
+ * The format of the string is:
+ * <ul>
+ * <li>modifiers (if any)
+ * <li>return type
+ * <li>declaring class name
+ * <li>'.'
+ * <li>field name
+ * </ul>
+ * <p>
+ * For example:
+ * <code>public static java.io.InputStream java.lang.System.in</code>
+ *
+ * @return a printable representation for the receiver
+ */
+ public String toString() {
+ return null;
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Method.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Method.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Method.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Method.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,186 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.lang.reflect;
+
+/**
+ * This class must be implemented by the vm vendor. This class models a method.
+ * Information about the method can be accessed, and the method can be invoked
+ * dynamically.
+ *
+ */
+public final class Method extends AccessibleObject implements Member {
+ /**
+ * Compares the specified object to this Method and answer if they are
+ * equal. The object must be an instance of Method with the same defining
+ * class and parameter types.
+ *
+ * @param object
+ * the object to compare
+ * @return true if the specified object is equal to this Method, false
+ * otherwise
+ * @see #hashCode
+ */
+ public boolean equals(Object object) {
+ return false;
+ }
+
+ /**
+ * Return the java.lang.Class associated with the class that defined this
+ * constructor.
+ *
+ * @return the declaring class
+ */
+ public Class getDeclaringClass() {
+ return null;
+ }
+
+ /**
+ * Return an array of the java.lang.Class objects associated with the
+ * exceptions declared to be thrown by this method. If the method was not
+ * declared to throw any exceptions, the array returned will be empty.
+ *
+ * @return the declared exception classes
+ */
+ public Class[] getExceptionTypes() {
+ return null;
+ }
+
+ /**
+ * Return the modifiers for the modelled constructor. The Modifier class
+ * should be used to decode the result.
+ *
+ * @return the modifiers
+ * @see java.lang.reflect.Modifier
+ */
+ public int getModifiers() {
+ return 0;
+ }
+
+ /**
+ * Return the name of the modelled method.
+ *
+ * @return the name
+ */
+ public String getName() {
+ return null;
+ }
+
+ /**
+ * Return an array of the java.lang.Class objects associated with the
+ * parameter types of this method. If the method was declared with no
+ * parameters, the array returned will be empty.
+ *
+ * @return the parameter types
+ */
+ public Class[] getParameterTypes() {
+ return null;
+ }
+
+ /**
+ * Return the java.lang.Class associated with the return type of this
+ * method.
+ *
+ * @return the return type
+ */
+ public Class getReturnType() {
+ return null;
+ }
+
+ /**
+ * Answers an integer hash code for the receiver. Objects which are equal
+ * answer the same value for this method. The hash code for a Method is the
+ * hash code of the method's name.
+ *
+ * @return the receiver's hash
+ * @see #equals
+ */
+ public int hashCode() {
+ return 0;
+ }
+
+ /**
+ * Return the result of dynamically invoking the modelled method. This
+ * reproduces the effect of
+ * <code>receiver.methodName(arg1, arg2, ... , argN)</code> This method
+ * performs the following:
+ * <ul>
+ * <li>If the modelled method is static, the receiver argument is ignored.
+ * </li>
+ * <li>Otherwise, if the receiver is null, a NullPointerException is
+ * thrown.</li>
+ * If the receiver is not an instance of the declaring class of the method,
+ * an IllegalArgumentException is thrown.
+ * <li>If this Method object is enforcing access control (see
+ * AccessibleObject) and the modelled method is not accessible from the
+ * current context, an IllegalAccessException is thrown.</li>
+ * <li>If the number of arguments passed and the number of parameters do
+ * not match, an IllegalArgumentException is thrown.</li>
+ * <li>For each argument passed:
+ * <ul>
+ * <li>If the corresponding parameter type is a base type, the argument is
+ * unwrapped. If the unwrapping fails, an IllegalArgumentException is
+ * thrown.</li>
+ * <li>If the resulting argument cannot be converted to the parameter type
+ * via a widening conversion, an IllegalArgumentException is thrown.</li>
+ * </ul>
+ * <li>If the modelled method is static, it is invoked directly. If it is
+ * non-static, the modelled method and the receiver are then used to perform
+ * a standard dynamic method lookup. The resulting method is then invoked.
+ * </li>
+ * <li>If an exception is thrown during the invocation it is caught and
+ * wrapped in an InvocationTargetException. This exception is then thrown.
+ * </li>
+ * <li>If the invocation completes normally, the return value is itself
+ * returned. If the method is declared to return a base type, the return
+ * value is first wrapped. If the return type is void, null is returned.
+ * </li>
+ * </ul>
+ *
+ * @param args
+ * the arguments to the constructor
+ * @return the new, initialized, object
+ * @exception java.lang.NullPointerException
+ * if the receiver is null for a non-static method
+ * @exception java.lang.IllegalAccessException
+ * if the modelled method is not accessible
+ * @exception java.lang.IllegalArgumentException
+ * if an incorrect number of arguments are passed, the
+ * receiver is incompatible with the declaring class, or an
+ * argument could not be converted by a widening conversion
+ * @exception java.lang.reflect.InvocationTargetException
+ * if an exception was thrown by the invoked constructor
+ * @see java.lang.reflect.AccessibleObject
+ */
+ public Object invoke(Object receiver, Object args[])
+ throws IllegalAccessException, IllegalArgumentException,
+ InvocationTargetException {
+ return null;
+ }
+
+ /**
+ * Answers a string containing a concise, human-readable description of the
+ * receiver. The format of the string is modifiers (if any) return type
+ * declaring class name '.' method name '(' parameter types, separated by
+ * ',' ')' If the method throws exceptions, ' throws ' exception types,
+ * separated by ',' For example:
+ * <code>public native Object java.lang.Method.invoke(Object,Object) throws IllegalAccessException,IllegalArgumentException,InvocationTargetException</code>
+ *
+ * @return a printable representation for the receiver
+ */
+ public String toString() {
+ return null;
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/security-kernel/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/security-kernel/META-INF/MANIFEST.MF?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security-kernel/META-INF/MANIFEST.MF (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security-kernel/META-INF/MANIFEST.MF Fri Mar 31 07:34:47 2006
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Harmony Security Kernel
+Fragment-Host: org.apache.harmony.security;bundle-version="1.0.0"
+Bundle-SymbolicName: org.apache.harmony.security.kernel
+Bundle-Version: 1.0.0
+Bundle-ClassPath: .
+Eclipse-JREBundle: true
+Export-Package: java.security
Added: incubator/harmony/enhanced/classlib/trunk/modules/security-kernel/src/main/java/java/security/AccessControlContext.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/security-kernel/src/main/java/java/security/AccessControlContext.java?rev=390443&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security-kernel/src/main/java/java/security/AccessControlContext.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security-kernel/src/main/java/java/security/AccessControlContext.java Fri Mar 31 07:34:47 2006
@@ -0,0 +1,163 @@
+/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * 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 java.security;
+
+/**
+ * The vm vendor may choose to implement this class. The reference
+ * implementation must be used if the reference implementation of
+ * AccessController is used.
+ *
+ * An AccessControlContext encapsulates the information which is needed by class
+ * AccessController to detect if a Permission would be granted at a particular
+ * point in a programs execution.
+ *
+ */
+
+public final class AccessControlContext {
+ DomainCombiner domainCombiner;
+
+ ProtectionDomain[] domainsArray;
+
+ private static final SecurityPermission createAccessControlContext = new SecurityPermission(
+ "createAccessControlContext");
+
+ private static final SecurityPermission getDomainCombiner = new SecurityPermission(
+ "getDomainCombiner");
+
+ /**
+ * Constructs a new instance of this class given an array of protection
+ * domains.
+ *
+ */
+ public AccessControlContext(ProtectionDomain[] context) {
+ int length = context.length;
+ int domainIndex = 0;
+ this.domainsArray = new ProtectionDomain[length];
+ next: for (int i = 0; i < length; i++) {
+ ProtectionDomain current = context[i];
+ for (int j = 0; j < i; j++)
+ if (current == this.domainsArray[j])
+ continue next;
+ this.domainsArray[domainIndex++] = current;
+ }
+ if (domainIndex != length) {
+ ProtectionDomain[] copy = new ProtectionDomain[domainIndex];
+ System.arraycopy(this.domainsArray, 0, copy, 0, domainIndex);
+ this.domainsArray = copy;
+ }
+ }
+
+ AccessControlContext(ProtectionDomain[] context, boolean ignored) {
+ domainsArray = context;
+ }
+
+ /**
+ * Constructs a new instance of this class given a context and a
+ * DomainCombiner
+ */
+ public AccessControlContext(AccessControlContext acc,
+ DomainCombiner combiner) {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null)
+ security.checkPermission(createAccessControlContext);
+ this.domainsArray = acc.domainsArray;
+ this.domainCombiner = combiner;
+ }
+
+ /**
+ * Checks if the permission <code>perm</code> is allowed in this context.
+ * All ProtectionDomains must grant the permission for it to be granted.
+ *
+ * @param perm
+ * java.security.Permission the permission to check
+ * @exception java.security.AccessControlException
+ * thrown when perm is not granted.
+ */
+ public void checkPermission(Permission perm) throws AccessControlException {
+ if (perm == null)
+ throw new NullPointerException();
+ int i = domainsArray.length;
+ while (--i >= 0 && domainsArray[i].implies(perm))
+ ;
+ if (i >= 0) {
+ throw new AccessControlException("Access Denied", perm);
+ }
+ }
+
+ /**
+ * Compares the argument to the receiver, and answers true if they represent
+ * the <em>same</em> object using a class specific comparison. In this
+ * case, they must both be AccessControlContexts and contain the same
+ * protection domains.
+ *
+ *
+ * @param o
+ * the object to compare with this object
+ * @return <code>true</code> if the object is the same as this object
+ * <code>false</code> if it is different from this object
+ * @see #hashCode
+ */
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || this.getClass() != o.getClass())
+ return false;
+ AccessControlContext otherContext = (AccessControlContext) o;
+ ProtectionDomain[] otherDomains = otherContext.domainsArray;
+ int length = domainsArray.length;
+ if (length != otherDomains.length)
+ return false;
+
+ next: for (int i = 0; i < length; i++) {
+ ProtectionDomain current = domainsArray[i];
+ for (int j = 0; j < length; j++)
+ if (current == otherDomains[j])
+ continue next;
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Answers an integer hash code for the receiver. Any two objects which
+ * answer <code>true</code> when passed to <code>equals</code> must
+ * answer the same value for this method.
+ *
+ *
+ * @return the receiver's hash
+ *
+ * @see #equals
+ */
+ public int hashCode() {
+ int result = 0;
+ int i = domainsArray.length;
+ while (--i >= 0)
+ result ^= domainsArray[i].hashCode();
+ return result;
+ }
+
+ /**
+ * Answers the DomainCombiner for the receiver.
+ *
+ */
+ public DomainCombiner getDomainCombiner() {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null)
+ security.checkPermission(getDomainCombiner);
+ return domainCombiner;
+ }
+
+}