|
From: <ls...@us...> - 2007-01-14 20:18:40
|
Revision: 3075
http://jnode.svn.sourceforge.net/jnode/?rev=3075&view=rev
Author: lsantha
Date: 2007-01-14 12:18:39 -0800 (Sun, 14 Jan 2007)
Log Message:
-----------
Fixed instance method lookup in invoke(), java.lang.reflect.Proxy works now.
Modified Paths:
--------------
trunk/core/src/core/org/jnode/vm/VmReflection.java
Modified: trunk/core/src/core/org/jnode/vm/VmReflection.java
===================================================================
--- trunk/core/src/core/org/jnode/vm/VmReflection.java 2007-01-14 17:06:45 UTC (rev 3074)
+++ trunk/core/src/core/org/jnode/vm/VmReflection.java 2007-01-14 20:18:39 UTC (rev 3075)
@@ -24,6 +24,7 @@
import java.lang.reflect.InvocationTargetException;
import org.jnode.vm.annotation.MagicPermission;
+import org.jnode.vm.annotation.PrivilegedActionPragma;
import org.jnode.vm.classmgr.VmField;
import org.jnode.vm.classmgr.VmInstanceField;
import org.jnode.vm.classmgr.VmMethod;
@@ -309,7 +310,8 @@
* @return Object
* @throws InvocationTargetException
*/
- public static Object invoke(VmMethod method, Object o, Object[] args)
+ @PrivilegedActionPragma //todo verify this wrt. security implications
+ public static Object invoke(VmMethod method, Object o, Object[] args)
throws InvocationTargetException {
int argCount = method.getNoArguments();
int argsLength = (args == null) ? 0 : args.length;
@@ -321,7 +323,9 @@
if( o == null )
throw new NullPointerException();
Unsafe.pushObject(o);
- } else {
+ if(!method.isConstructor())
+ method = o.getClass().getVmClass().getMethod(method.getName(), method.getSignature());
+ } else {
method.getDeclaringClass().initialize();
}
for (int i = 0; i < argCount; i++) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|