>>>>> "Mark" == Mark Wielaard <[EMAIL PROTECTED]> writes:

Mark> Hi,
Mark> As reported on the GNU Classpath mailinglist Eclipse (2) doesn't
Mark> start up anymore under kaffe since the URLClassLoader now calls
Mark> super.setSigners() for classes loaded from signed jar files.

Mark> For people that want to play with this anyway it would be nice
Mark> to change the exception into a warning message:

Mark> 2004-11-13  Mark Wielaard  <[EMAIL PROTECTED]>

Mark>         * libraries/javalib/java/lang/ClassLoader.java
Mark>         (setSigners): Print warning.

Mark> With this Eclipse 2.1 starts again, but is not completely
Mark> usable, while printing lots of warning messages... (an
Mark> alternative would be to actually implement setSigners() by
Mark> adopting the GNU Classpath ClassLoader implementation).

Or, why not implement Class.getSigners and Class.setSigners?

-- 
Casey Marshall || [EMAIL PROTECTED]
Index: kaffe/kaffevm/classMethod.h
===================================================================
RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/classMethod.h,v
retrieving revision 1.68
diff -u -b -B -r1.68 classMethod.h
--- kaffe/kaffevm/classMethod.h	19 Aug 2004 19:29:02 -0000	1.68
+++ kaffe/kaffevm/classMethod.h	14 Nov 2004 19:39:20 -0000
@@ -163,6 +163,9 @@
 	/** Stab type ID. */
 	int stab_id;
 #endif
+
+	/** The array of 'signer' objects; usually Certificates. */
+	HArrayOfObject*		signers;
 };
 
 #ifndef __DEFINED_CLASS
Index: libraries/clib/native/Class.c
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/clib/native/Class.c,v
retrieving revision 1.74
diff -u -b -B -r1.74 Class.c
--- libraries/clib/native/Class.c	5 Jul 2004 16:40:53 -0000	1.74
+++ libraries/clib/native/Class.c	14 Nov 2004 19:39:20 -0000
@@ -280,16 +280,16 @@
 	return (this->accflags & (ACC_MASK & ~ACC_SUPER));
 }
 
-HArrayOfObject* NONRETURNING
-java_lang_Class_getSigners(struct Hjava_lang_Class* this UNUSED)
+HArrayOfObject*
+java_lang_Class_getSigners0(struct Hjava_lang_Class* this)
 {
-	unimp("java.lang.Class:getSigners unimplemented");
+	return this->signers;
 }
 
-void NONRETURNING
-java_lang_Class_setSigners(struct Hjava_lang_Class* this UNUSED, HArrayOfObject* sigs UNUSED)
+void
+java_lang_Class_setSigners(struct Hjava_lang_Class* this, HArrayOfObject* sigs)
 {
-	unimp("java.lang.Class:setSigners unimplemented");
+	this->signers = sigs;
 }
 
 /*
Index: libraries/javalib/java/lang/Class.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/Class.java,v
retrieving revision 1.49
diff -u -b -B -r1.49 Class.java
--- libraries/javalib/java/lang/Class.java	22 Mar 2004 11:24:46 -0000	1.49
+++ libraries/javalib/java/lang/Class.java	14 Nov 2004 19:39:20 -0000
@@ -356,7 +356,14 @@
 	return loader.getResourceAsStream(name);
 }
 
-native public Object[] getSigners();
+public Object[] getSigners()
+{
+        Object[] signers = getSigners0();
+        return signers == null ? null : (Object[]) signers.clone();
+}
+
+private native Object[] getSigners0();
+
 native void setSigners(Object[] signers);
 
 native public Class getSuperclass();
Index: libraries/javalib/java/lang/ClassLoader.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/ClassLoader.java,v
retrieving revision 1.32
diff -u -b -B -r1.32 ClassLoader.java
--- libraries/javalib/java/lang/ClassLoader.java	22 Mar 2004 11:24:46 -0000	1.32
+++ libraries/javalib/java/lang/ClassLoader.java	14 Nov 2004 19:39:20 -0000
@@ -201,9 +201,8 @@
 	return parent;
 }
 
-protected final void setSigners(Class cl, Object signers[]) {
-	throw new kaffe.util.NotImplemented(getClass().getName()
-		+ ".setSigners()");
+protected final void setSigners(Class cl, Object[] signers) {
+        cl.setSigners (signers);
 }
 
 protected final Class findLoadedClass(String name) {
_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to