You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/06/15 17:03:45 UTC

svn commit: r414608 - in /incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc: com/ibm/oti/vm/ java/lang/ java/lang/reflect/ org/apache/harmony/kernel/ org/apache/harmony/kernel/vm/

Author: geirm
Date: Thu Jun 15 08:03:45 2006
New Revision: 414608

URL: http://svn.apache.org/viewvc?rev=414608&view=rev
Log:
Minor updates, including :

- genericizing 


Added:
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/kernel/
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/kernel/vm/
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/kernel/vm/VM.java
Removed:
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/com/ibm/oti/vm/VM.java
Modified:
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Constructor.java
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Field.java
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Method.java

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java?rev=414608&r1=414607&r2=414608&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java Thu Jun 15 08:03:45 2006
@@ -23,6 +23,13 @@
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
+
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.GenericDeclaration;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.lang.annotation.Annotation;
+
 import java.net.URL;
 import java.security.AccessController;
 import java.security.AllPermission;
@@ -44,7 +51,9 @@
  * @author Evgueni Brevnov
  * @version $Revision: 1.1.2.2.4.5 $
  */
-public final class Class implements Serializable {
+//public final class Class implements Serializable {
+
+public final class Class<T> implements Serializable, AnnotatedElement, GenericDeclaration, Type {
 
     private static final long serialVersionUID = 3206093459760846163L;
 
@@ -797,6 +806,48 @@
     }
 
     static final native Class[] getStackClasses(int maxDepth, boolean stopAtPrivileged);
+
+    /**
+     *  TODO - provide real implementation
+     * @param annotationType
+     * @return
+     */
+    public boolean isAnnotationPresent(Class<? extends Annotation> annotationType) {
+        return false;
+    }
+
+    /**
+     *  TODO - provide real implementation
+     * @param annotationType
+     * @return
+     */
+    public <T extends Annotation> T getAnnotation(Class<T> annotationType) {
+        return null;
+    }
+
+    /**
+     *  TODO - provide real implementatoin
+     * @return
+     */
+    public Annotation[] getAnnotations() {
+        return new Annotation[0];
+    }
+
+    /**
+     *  TODO - provide real implementatoin
+     * @return
+     */
+    public Annotation[] getDeclaredAnnotations() {
+        return new Annotation[0];
+    }
+
+    /**
+     *  TODO - provide real implementatoin
+     * @return
+     */
+    public TypeVariable<?>[] getTypeParameters() {
+        return new TypeVariable<?>[0];
+    }
 
     /* END OF IBM SPECIFIC PART */
 

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Constructor.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Constructor.java?rev=414608&r1=414607&r2=414608&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Constructor.java (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Constructor.java Thu Jun 15 08:03:45 2006
@@ -53,6 +53,13 @@
     Constructor(Object obj) {
         data = new ConstructorData(obj);
     }
+
+    /**
+     *  TODO : fix gmj
+     */
+    public boolean isSynthetic() {
+        return false;
+    }
     
     /**
      * Called by VM to obtain this constructor's handle.

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Field.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Field.java?rev=414608&r1=414607&r2=414608&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Field.java (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Field.java Thu Jun 15 08:03:45 2006
@@ -51,6 +51,13 @@
     Field(Object obj) {
         data = new FieldData(obj);
     }
+
+    /**
+     *  TODO : fix gmj
+     */
+    public boolean isSynthetic() {
+        return false;
+    }
     
     /**
      * Called by VM to obtain this field's handle.

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Method.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Method.java?rev=414608&r1=414607&r2=414608&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Method.java (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Method.java Thu Jun 15 08:03:45 2006
@@ -53,6 +53,13 @@
     Method(Object obj) {
         data = new MethodData(obj);
     }
+
+    /**
+     *  TODO : fix gmj
+     */
+    public boolean isSynthetic() {
+        return false;
+    }
     
     /**
      * Called by VM to obtain this method's handle.

Added: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/kernel/vm/VM.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/kernel/vm/VM.java?rev=414608&view=auto
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/kernel/vm/VM.java (added)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/kernel/vm/VM.java Thu Jun 15 08:03:45 2006
@@ -0,0 +1,110 @@
+/*
+ *  Copyright 2005-2006 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.
+ */
+/**
+ * @author Evgueni V. Brevnov
+ * @version $Revision: 1.1.2.3.4.3 $
+ */ 
+
+package org.apache.harmony.kernel.vm;
+
+import org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection;
+import org.apache.harmony.luni.util.DeleteOnExit;
+
+import org.apache.harmony.vm.VMStack;
+
+public final class VM {
+
+	private static boolean closeJars = false;
+	private static boolean deleteOnExit = false;
+
+    private VM() {
+    }
+
+    /* PUBLIC */
+
+    /**
+     * 1) Our implementation uses null for bootstrap class loader. So we return
+     *    first non-null class loader.
+     * 2) We expect this method will be removed since it's
+     *    not safe to return class loader from the stack with out security checks.
+     * @deprecated
+     */
+    public static ClassLoader getNonBootstrapClassLoader() {        
+        
+        for (int i = 0;;i++) {
+            Class clazz = VMStack.getCallerClass(i);
+            if (clazz == null) {
+                return null;
+            }
+            ClassLoader loader = getClassLoader(clazz); 
+            if (loader != null) {
+                return loader;
+            }
+        }        
+    }
+
+    /**
+     * 1) We expect this method will be removed since it's
+     *    not safe to return class loader from the stack with out security checks.
+     * @deprecated
+     */
+    public static ClassLoader callerClassLoader() {
+        return getClassLoader(VMStack.getCallerClass(1));
+    }
+
+    private static native ClassLoader getClassLoader(Class clazz);
+
+    /* PACKAGE PRIVATE */
+
+    static final ClassLoader getStackClassLoader(int depth) {
+        Class clazz = VMStack.getCallerClass(depth);
+        return clazz != null ? getClassLoader(clazz) : null;
+    }
+
+    /* PRIVATE */
+
+    /**
+     * 1) This is temporary implementation
+     * 2) We've proposed another approach to perform shutdown actions.
+     */
+    public static void closeJars() {
+    	class CloseJarsHook implements Runnable {
+    		public void run() {
+    			JarURLConnection.closeCachedFiles();
+    		}
+    	}
+    	if (!closeJars) {
+        	closeJars = true;
+        	Runtime.getRuntime().addShutdownHook(new Thread(new CloseJarsHook()));
+    	}
+    }
+
+    /**
+     * 1) This is temporary implementation
+     * 2) We've proposed another approach to perform shutdown actions.
+     */
+    public static void deleteOnExit() {
+    	class DeleteOnExitHook implements Runnable {
+    		public void run() {
+    			DeleteOnExit.deleteOnExit();
+    		}
+    	}
+    	if (!deleteOnExit) {
+        	deleteOnExit = true;
+        	Runtime.getRuntime().addShutdownHook(new Thread(new DeleteOnExitHook()));
+    	}
+    }
+}