aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/obsolete/classpath
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/obsolete/classpath')
-rw-r--r--recipes/obsolete/classpath/files/cp-byte-loophelper.patch68
-rw-r--r--recipes/obsolete/classpath/files/decimalformat.patch31
-rw-r--r--recipes/obsolete/classpath/files/gjar-prefix-patch.diff40
-rw-r--r--recipes/obsolete/classpath/files/netif_16.patch269
-rw-r--r--recipes/obsolete/classpath/files/sun-security-getproperty_0.96.1.patch503
-rw-r--r--recipes/obsolete/classpath/files/xmlstream-fix.patch93
6 files changed, 1004 insertions, 0 deletions
diff --git a/recipes/obsolete/classpath/files/cp-byte-loophelper.patch b/recipes/obsolete/classpath/files/cp-byte-loophelper.patch
new file mode 100644
index 0000000000..4fac362cba
--- /dev/null
+++ b/recipes/obsolete/classpath/files/cp-byte-loophelper.patch
@@ -0,0 +1,68 @@
+Index: gnu/java/nio/charset/ByteDecodeLoopHelper.java
+===================================================================
+RCS file: /sources/classpath/classpath/gnu/java/nio/charset/ByteDecodeLoopHelper.java,v
+retrieving revision 1.1
+diff -u -r1.1 ByteDecodeLoopHelper.java
+--- gnu/java/nio/charset/ByteDecodeLoopHelper.java 23 Nov 2007 16:11:17 -0000 1.1
++++ gnu/java/nio/charset/ByteDecodeLoopHelper.java 3 Sep 2008 23:11:29 -0000
+@@ -119,6 +119,8 @@
+ int inRemaining = in.remaining();
+ int outRemaining = out.remaining();
+ CoderResult result;
++
++ bailOut:
+ if (inRemaining <= outRemaining)
+ {
+ for (int i = 0; i < inRemaining; i++)
+@@ -129,7 +131,7 @@
+ {
+ inPos--;
+ result = CoderResult.unmappableForLength(1);
+- break;
++ break bailOut;
+ }
+ char c = mapToChar(b);
+ outArray[outPos] = c;
+@@ -147,7 +149,7 @@
+ {
+ inPos--;
+ result = CoderResult.unmappableForLength(1);
+- break;
++ break bailOut;
+ }
+ char c = mapToChar(b);
+ outArray[outPos] = c;
+Index: gnu/java/nio/charset/ByteEncodeLoopHelper.java
+===================================================================
+RCS file: /sources/classpath/classpath/gnu/java/nio/charset/ByteEncodeLoopHelper.java,v
+retrieving revision 1.1
+diff -u -r1.1 ByteEncodeLoopHelper.java
+--- gnu/java/nio/charset/ByteEncodeLoopHelper.java 23 Nov 2007 16:11:17 -0000 1.1
++++ gnu/java/nio/charset/ByteEncodeLoopHelper.java 3 Sep 2008 23:11:29 -0000
+@@ -120,6 +120,8 @@
+ int inRemaining = in.remaining();
+ int outRemaining = out.remaining();
+ CoderResult result;
++
++ bailOut:
+ if (inRemaining <= outRemaining)
+ {
+ for (int i = 0; i < inRemaining; i++)
+@@ -130,7 +132,7 @@
+ {
+ inPos--;
+ result = CoderResult.unmappableForLength(1);
+- break;
++ break bailOut;
+ }
+ byte b = mapToByte(inChar);
+ outArray[outPos] = b;
+@@ -148,7 +150,7 @@
+ {
+ inPos--;
+ result = CoderResult.unmappableForLength(1);
+- break;
++ break bailOut;
+ }
+ byte b = mapToByte(inChar);
+ outArray[outPos] = b;
diff --git a/recipes/obsolete/classpath/files/decimalformat.patch b/recipes/obsolete/classpath/files/decimalformat.patch
new file mode 100644
index 0000000000..4997523830
--- /dev/null
+++ b/recipes/obsolete/classpath/files/decimalformat.patch
@@ -0,0 +1,31 @@
+Index: classpath-0.97.2/java/text/DecimalFormat.java
+===================================================================
+--- classpath-0.97.2.orig/java/text/DecimalFormat.java
++++ classpath-0.97.2/java/text/DecimalFormat.java
+@@ -1296,7 +1296,7 @@ public class DecimalFormat extends Numbe
+ currencySymbol = this.symbols.getCurrencySymbol();
+
+ // if \u00A4 is doubled, we use the international currency symbol
+- if (i < len && pattern.charAt(i + 1) == '\u00A4')
++ if ((i + 1) < len && pattern.charAt(i + 1) == '\u00A4')
+ {
+ currencySymbol = this.symbols.getInternationalCurrencySymbol();
+ i++;
+@@ -1320,7 +1320,7 @@ public class DecimalFormat extends Numbe
+ else if (ch == '\'')
+ {
+ // QUOTE
+- if (i < len && pattern.charAt(i + 1) == '\'')
++ if ((i + 1) < len && pattern.charAt(i + 1) == '\'')
+ {
+ // we need to add ' to the buffer
+ buffer.append(ch);
+@@ -1692,7 +1692,7 @@ public class DecimalFormat extends Numbe
+ else if (ch == '\'')
+ {
+ // QUOTE
+- if (i < len && pattern.charAt(i + 1) == '\'')
++ if ((i + 1) < len && pattern.charAt(i + 1) == '\'')
+ {
+ // we need to add ' to the buffer
+ buffer.append(ch);
diff --git a/recipes/obsolete/classpath/files/gjar-prefix-patch.diff b/recipes/obsolete/classpath/files/gjar-prefix-patch.diff
new file mode 100644
index 0000000000..64b262cb41
--- /dev/null
+++ b/recipes/obsolete/classpath/files/gjar-prefix-patch.diff
@@ -0,0 +1,40 @@
+Index: tools/gnu/classpath/tools/jar/Entry.java
+===================================================================
+RCS file: /sources/classpath/classpath/tools/gnu/classpath/tools/jar/Entry.java,v
+retrieving revision 1.1
+diff -u -r1.1 Entry.java
+--- tools/gnu/classpath/tools/jar/Entry.java 8 May 2006 18:38:20 -0000 1.1
++++ tools/gnu/classpath/tools/jar/Entry.java 10 Dec 2007 22:20:05 -0000
+@@ -1,5 +1,5 @@
+ /* Entry.java - represent a single file to write to a jar
+- Copyright (C) 2006 Free Software Foundation, Inc.
++ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This file is part of GNU Classpath.
+
+@@ -49,12 +49,22 @@
+ public Entry(File file, String name)
+ {
+ this.file = file;
+- this.name = name;
++
++ /* Removes any './' prefixes automatically. Those caused trouble
++ * in (boot) classpath use-cases. See #32516.
++ */
++ int start = 0;
++ while (name.length() > start + 2
++ && name.codePointAt(start) == '.'
++ && name.codePointAt(start + 1) == File.separatorChar)
++ start += 2;
++
++ this.name = name.substring(start);
+ }
+
+ public Entry(File file)
+ {
+- this.file = file;
+- this.name = file.toString();
++ this(file, file.toString());
+ }
++
+ }
diff --git a/recipes/obsolete/classpath/files/netif_16.patch b/recipes/obsolete/classpath/files/netif_16.patch
new file mode 100644
index 0000000000..f9dbe6c4cd
--- /dev/null
+++ b/recipes/obsolete/classpath/files/netif_16.patch
@@ -0,0 +1,269 @@
+Index: java/net/NetworkInterface.java
+===================================================================
+--- java/net/NetworkInterface.java.orig 2006-12-18 22:37:39.000000000 +0100
++++ java/net/NetworkInterface.java 2008-06-06 14:00:44.000000000 +0200
+@@ -1,5 +1,5 @@
+ /* NetworkInterface.java --
+- Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
+
+ This file is part of GNU Classpath.
+
+@@ -265,4 +265,50 @@
+
+ return result.toString();
+ }
++
++ /**
++ * Determines whether this interface is ready to transfer data.
++ *
++ * @return whether the interface is up
++ */
++ public boolean isUp()
++ throws SocketException
++ {
++ return VMNetworkInterface.isUp(netif.name);
++ }
++
++ /**
++ * Determines whether this interface does point to point
++ * transmission.
++ *
++ * @return whether the interface does point to point transmission
++ */
++ public boolean isPointToPoint()
++ throws SocketException
++ {
++ return VMNetworkInterface.isPointToPoint(netif.name);
++ }
++
++ /**
++ * Determines whether this interface is the loopback interface.
++ *
++ * @return whether the interface is the loopback interface
++ */
++ public boolean isLoopback()
++ throws SocketException
++ {
++ return VMNetworkInterface.isLoopback(netif.name);
++ }
++
++ /**
++ * Determines whether this interface supports multicast transmission.
++ *
++ * @return whether the interface supports multicast transmission.
++ */
++ public boolean supportsMulticast()
++ throws SocketException
++ {
++ return VMNetworkInterface.supportsMulticast(netif.name);
++ }
++
+ }
+Index: vm/reference/java/net/VMNetworkInterface.java
+===================================================================
+--- vm/reference/java/net/VMNetworkInterface.java.orig 2006-12-18 22:37:39.000000000 +0100
++++ vm/reference/java/net/VMNetworkInterface.java 2008-06-06 14:00:44.000000000 +0200
+@@ -1,5 +1,5 @@
+ /* VMNetworkInterface.java --
+- Copyright (C) 2005 Free Software Foundation, Inc.
++ Copyright (C) 2005, 2008 Free Software Foundation, Inc.
+
+ This file is part of GNU Classpath.
+
+@@ -119,4 +119,13 @@
+ else
+ throw new SocketException("invalid interface address");
+ }
++
++ static native boolean isUp(String name) throws SocketException;
++
++ static native boolean isLoopback(String name) throws SocketException;
++
++ static native boolean isPointToPoint(String name) throws SocketException;
++
++ static native boolean supportsMulticast(String name) throws SocketException;
++
+ }
+Index: native/jni/java-net/java_net_VMNetworkInterface.c
+===================================================================
+--- native/jni/java-net/java_net_VMNetworkInterface.c.orig 2007-04-05 14:34:19.000000000 +0200
++++ native/jni/java-net/java_net_VMNetworkInterface.c 2008-06-06 14:00:44.000000000 +0200
+@@ -1,5 +1,5 @@
+ /* VMNetworkInterface.c - Native methods for NetworkInterface class
+- Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
++ Copyright (C) 2003, 2005, 2006, 2008 Free Software Foundation, Inc.
+
+ This file is part of GNU Classpath.
+
+@@ -50,11 +50,18 @@
+ #include <stdio.h>
+ #include <string.h>
+
++#include <net/if.h>
++#include <sys/ioctl.h>
++
+ #include <jni.h>
+ #include <jcl.h>
+
++#include <cpnative.h>
++#include <cpnet.h>
++
+ #include "java_net_VMNetworkInterface.h"
+
++int iff_flags(JNIEnv *, jstring, jint *);
+
+ static jmethodID java_net_VMNetworkInterface_init;
+ static jmethodID java_net_VMNetworkInterface_addAddress;
+@@ -251,4 +258,136 @@
+ #endif /* HAVE_IFADDRS_H && HAVE_GETIFADDRS */
+ }
+
++int iff_flags(JNIEnv *env, jstring name, jint *flags)
++{
++ struct ifreq iff;
++ const char *iff_name;
++ jint socket;
++ int error, retval;
++
++ if ((error = cpnet_openSocketDatagram(env, &socket, AF_INET)))
++ {
++ return error;
++ }
++
++ iff_name = JCL_jstring_to_cstring(env, name);
++ memset(&iff, 0, sizeof(iff));
++ strcpy(iff.ifr_name, iff_name);
++
++ if (ioctl(socket, SIOCGIFFLAGS, &iff) >= 0)
++ {
++ *flags = (jint) iff.ifr_flags;
++
++ retval = 0;
++ }
++ else
++ {
++ retval = errno;
++ }
++
++ cpnet_close(env, socket);
++
++ JCL_free_cstring(env, name, iff_name);
++
++ return retval;
++}
++
++JNIEXPORT jboolean JNICALL
++Java_java_net_VMNetworkInterface_isUp (JNIEnv *env, jclass class UNUSED,
++ jstring name)
++{
++ jint flags;
++ int error;
++ jboolean retval;
++
++ if ((error = iff_flags(env, name, &flags)))
++ {
++ JCL_ThrowException(env, "java/net/SocketException",
++ cpnative_getErrorString(error));
++
++ retval = JNI_FALSE;
++ }
++ else
++ {
++ retval = (flags & (IFF_UP | IFF_RUNNING))
++ ? JNI_TRUE
++ : JNI_FALSE;
++ }
++
++ return retval;
++}
++
++JNIEXPORT jboolean JNICALL
++Java_java_net_VMNetworkInterface_isPointToPoint (JNIEnv *env,
++ jclass class UNUSED,
++ jstring name)
++{
++ jint flags;
++ int error;
++ jboolean retval;
++
++ if ((error = iff_flags(env, name, &flags)))
++ {
++ JCL_ThrowException(env, "java/net/SocketException",
++ cpnative_getErrorString(error));
++
++ retval = JNI_FALSE;
++ }
++ else
++ {
++ retval = (flags & IFF_POINTOPOINT) ? JNI_TRUE
++ : JNI_FALSE;
++ }
++
++ return retval;
++}
++
++JNIEXPORT jboolean JNICALL
++Java_java_net_VMNetworkInterface_isLoopback (JNIEnv *env,
++ jclass class UNUSED,
++ jstring name)
++{
++ jint flags;
++ int error;
++ jboolean retval;
++
++ if ((error = iff_flags(env, name, &flags)))
++ {
++ JCL_ThrowException(env, "java/net/SocketException",
++ cpnative_getErrorString(error));
++
++ retval = JNI_FALSE;
++ }
++ else
++ {
++ retval = (flags & IFF_LOOPBACK) ? JNI_TRUE : JNI_FALSE;
++ }
++
++ return retval;
++}
++
++JNIEXPORT jboolean JNICALL
++Java_java_net_VMNetworkInterface_supportsMulticast (JNIEnv *env,
++ jclass class UNUSED,
++ jstring name)
++{
++ jint flags;
++ int error;
++ jboolean retval;
++
++ if ((error = iff_flags(env, name, &flags)))
++ {
++ JCL_ThrowException(env, "java/net/SocketException",
++ cpnative_getErrorString(error));
++
++ retval = JNI_FALSE;
++ }
++ else
++ {
++ retval = (flags & IFF_MULTICAST) ? JNI_TRUE : JNI_FALSE;
++ }
++
++ return retval;
++}
++
+ /* end of file */
+Index: include/java_net_VMNetworkInterface.h
+===================================================================
+--- include/java_net_VMNetworkInterface.h.orig 2008-06-06 14:21:27.000000000 +0200
++++ include/java_net_VMNetworkInterface.h 2008-06-06 14:22:12.000000000 +0200
+@@ -12,6 +12,10 @@
+
+ JNIEXPORT void JNICALL Java_java_net_VMNetworkInterface_initIds (JNIEnv *env, jclass);
+ JNIEXPORT jobjectArray JNICALL Java_java_net_VMNetworkInterface_getVMInterfaces (JNIEnv *env, jclass);
++JNIEXPORT jboolean JNICALL Java_java_net_VMNetworkInterface_isUp (JNIEnv *env, jclass, jstring);
++JNIEXPORT jboolean JNICALL Java_java_net_VMNetworkInterface_isLoopback (JNIEnv *env, jclass, jstring);
++JNIEXPORT jboolean JNICALL Java_java_net_VMNetworkInterface_isPointToPoint (JNIEnv *env, jclass, jstring);
++JNIEXPORT jboolean JNICALL Java_java_net_VMNetworkInterface_supportsMulticast (JNIEnv *env, jclass, jstring);
+
+ #ifdef __cplusplus
+ }
diff --git a/recipes/obsolete/classpath/files/sun-security-getproperty_0.96.1.patch b/recipes/obsolete/classpath/files/sun-security-getproperty_0.96.1.patch
new file mode 100644
index 0000000000..6af03e75ea
--- /dev/null
+++ b/recipes/obsolete/classpath/files/sun-security-getproperty_0.96.1.patch
@@ -0,0 +1,503 @@
+Index: gnu/classpath/debug/Simple1LineFormatter.java
+===================================================================
+--- gnu/classpath/debug/Simple1LineFormatter.java.orig 2006-07-11 18:03:59.000000000 +0200
++++ gnu/classpath/debug/Simple1LineFormatter.java 2008-06-04 11:14:14.000000000 +0200
+@@ -38,8 +38,6 @@
+
+ package gnu.classpath.debug;
+
+-import gnu.java.security.action.GetPropertyAction;
+-
+ import java.io.PrintWriter;
+ import java.io.StringWriter;
+ import java.security.AccessController;
+@@ -51,6 +49,8 @@
+ import java.util.logging.Formatter;
+ import java.util.logging.LogRecord;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * A simple 1-line formatter to use instead of the 2-line SimpleFormatter used
+ * by default in the JDK logging handlers.
+Index: gnu/classpath/debug/SystemLogger.java
+===================================================================
+--- gnu/classpath/debug/SystemLogger.java.orig 2006-12-10 21:25:41.000000000 +0100
++++ gnu/classpath/debug/SystemLogger.java 2008-06-04 11:14:14.000000000 +0200
+@@ -38,13 +38,13 @@
+
+ package gnu.classpath.debug;
+
+-import gnu.java.security.action.GetPropertyAction;
+-
+ import java.security.AccessController;
+ import java.util.StringTokenizer;
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+
++import sun.security.action.GetPropertyAction;
++
+ public final class SystemLogger extends Logger
+ {
+ public static final SystemLogger SYSTEM = new SystemLogger();
+Index: gnu/java/security/PolicyFile.java
+===================================================================
+--- gnu/java/security/PolicyFile.java.orig 2006-07-11 18:03:59.000000000 +0200
++++ gnu/java/security/PolicyFile.java 2008-06-04 11:14:50.000000000 +0200
+@@ -39,7 +39,6 @@
+
+ import gnu.classpath.debug.Component;
+ import gnu.classpath.debug.SystemLogger;
+-import gnu.java.security.action.GetPropertyAction;
+
+ import java.io.File;
+ import java.io.IOException;
+@@ -72,6 +71,8 @@
+ import java.util.StringTokenizer;
+ import java.util.logging.Logger;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * An implementation of a {@link java.security.Policy} object whose
+ * permissions are specified by a <em>policy file</em>.
+Index: gnu/java/security/action/GetPropertyAction.java
+===================================================================
+--- gnu/java/security/action/GetPropertyAction.java 2006-12-10 21:25:42.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,89 +0,0 @@
+-/* GetPropertyAction.java
+- Copyright (C) 2004 Free Software Foundation, Inc.
+-
+-This file is part of GNU Classpath.
+-
+-GNU Classpath is free software; you can redistribute it and/or modify
+-it under the terms of the GNU General Public License as published by
+-the Free Software Foundation; either version 2, or (at your option)
+-any later version.
+-
+-GNU Classpath is distributed in the hope that it will be useful, but
+-WITHOUT ANY WARRANTY; without even the implied warranty of
+-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-General Public License for more details.
+-
+-You should have received a copy of the GNU General Public License
+-along with GNU Classpath; see the file COPYING. If not, write to the
+-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-02110-1301 USA.
+-
+-Linking this library statically or dynamically with other modules is
+-making a combined work based on this library. Thus, the terms and
+-conditions of the GNU General Public License cover the whole
+-combination.
+-
+-As a special exception, the copyright holders of this library give you
+-permission to link this library with independent modules to produce an
+-executable, regardless of the license terms of these independent
+-modules, and to copy and distribute the resulting executable under
+-terms of your choice, provided that you also meet, for each linked
+-independent module, the terms and conditions of the license of that
+-module. An independent module is a module which is not derived from
+-or based on this library. If you modify this library, you may extend
+-this exception to your version of the library, but you are not
+-obligated to do so. If you do not wish to do so, delete this
+-exception statement from your version. */
+-
+-package gnu.java.security.action;
+-
+-import java.security.PrivilegedAction;
+-
+-/**
+- * PrivilegedAction implementation that calls System.getProperty() with
+- * the property name passed to its constructor.
+- *
+- * Example of use:
+- * <code>
+- * GetPropertyAction action = new GetPropertyAction("http.proxyPort");
+- * String port = AccessController.doPrivileged(action);
+- * </code>
+- */
+-public class GetPropertyAction implements PrivilegedAction<String>
+-{
+- String name;
+- String value = null;
+-
+- public GetPropertyAction()
+- {
+- }
+-
+- public GetPropertyAction(String propName)
+- {
+- setParameters(propName);
+- }
+-
+- public GetPropertyAction(String propName, String defaultValue)
+- {
+- setParameters(propName, defaultValue);
+- }
+-
+- public String run()
+- {
+- return System.getProperty(name, value);
+- }
+-
+- public GetPropertyAction setParameters(String propName)
+- {
+- this.name = propName;
+- this.value = null;
+- return this;
+- }
+-
+- public GetPropertyAction setParameters(String propName, String defaultValue)
+- {
+- this.name = propName;
+- this.value = defaultValue;
+- return this;
+- }
+-}
+Index: gnu/java/security/key/dss/DSSKey.java
+===================================================================
+--- gnu/java/security/key/dss/DSSKey.java.orig 2006-08-05 05:23:27.000000000 +0200
++++ gnu/java/security/key/dss/DSSKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -39,7 +39,6 @@
+ package gnu.java.security.key.dss;
+
+ import gnu.java.security.Registry;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.util.FormatUtil;
+
+ import java.math.BigInteger;
+@@ -49,6 +48,8 @@
+ import java.security.interfaces.DSAParams;
+ import java.security.spec.DSAParameterSpec;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * A base asbtract class for both public and private DSS (Digital Signature
+ * Standard) keys. It encapsulates the three DSS numbers: <code>p</code>,
+Index: gnu/java/security/key/dss/DSSPrivateKey.java
+===================================================================
+--- gnu/java/security/key/dss/DSSPrivateKey.java.orig 2006-07-11 18:04:00.000000000 +0200
++++ gnu/java/security/key/dss/DSSPrivateKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -40,7 +40,6 @@
+
+ import gnu.java.security.Configuration;
+ import gnu.java.security.Registry;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.key.IKeyPairCodec;
+
+ import java.math.BigInteger;
+@@ -48,6 +47,8 @@
+ import java.security.PrivateKey;
+ import java.security.interfaces.DSAPrivateKey;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * An object that embodies a DSS (Digital Signature Standard) private key.
+ *
+Index: gnu/java/security/key/dss/DSSPublicKey.java
+===================================================================
+--- gnu/java/security/key/dss/DSSPublicKey.java.orig 2006-07-11 18:04:00.000000000 +0200
++++ gnu/java/security/key/dss/DSSPublicKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -39,7 +39,6 @@
+ package gnu.java.security.key.dss;
+
+ import gnu.java.security.Registry;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.key.IKeyPairCodec;
+
+ import java.math.BigInteger;
+@@ -47,6 +46,8 @@
+ import java.security.PublicKey;
+ import java.security.interfaces.DSAPublicKey;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * An object that embodies a DSS (Digital Signature Standard) public key.
+ *
+Index: gnu/java/security/key/rsa/GnuRSAKey.java
+===================================================================
+--- gnu/java/security/key/rsa/GnuRSAKey.java.orig 2006-07-11 18:04:00.000000000 +0200
++++ gnu/java/security/key/rsa/GnuRSAKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -39,7 +39,6 @@
+ package gnu.java.security.key.rsa;
+
+ import gnu.java.security.Registry;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.util.FormatUtil;
+
+ import java.math.BigInteger;
+@@ -47,6 +46,8 @@
+ import java.security.Key;
+ import java.security.interfaces.RSAKey;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * A base asbtract class for both public and private RSA keys.
+ */
+Index: gnu/java/security/key/rsa/GnuRSAPrivateKey.java
+===================================================================
+--- gnu/java/security/key/rsa/GnuRSAPrivateKey.java.orig 2006-07-11 18:04:00.000000000 +0200
++++ gnu/java/security/key/rsa/GnuRSAPrivateKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -39,7 +39,6 @@
+ package gnu.java.security.key.rsa;
+
+ import gnu.java.security.Configuration;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.Registry;
+ import gnu.java.security.key.IKeyPairCodec;
+
+@@ -49,6 +48,8 @@
+ import java.security.interfaces.RSAPrivateCrtKey;
+ import java.security.interfaces.RSAPrivateKey;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * An object that embodies an RSA private key.
+ * <p>
+Index: gnu/java/security/key/rsa/GnuRSAPublicKey.java
+===================================================================
+--- gnu/java/security/key/rsa/GnuRSAPublicKey.java.orig 2006-07-11 18:04:00.000000000 +0200
++++ gnu/java/security/key/rsa/GnuRSAPublicKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -39,7 +39,6 @@
+ package gnu.java.security.key.rsa;
+
+ import gnu.java.security.Registry;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.key.IKeyPairCodec;
+
+ import java.math.BigInteger;
+@@ -47,6 +46,8 @@
+ import java.security.PublicKey;
+ import java.security.interfaces.RSAPublicKey;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * An object that encapsulates an RSA public key.
+ * <p>
+Index: gnu/javax/crypto/key/dh/GnuDHKey.java
+===================================================================
+--- gnu/javax/crypto/key/dh/GnuDHKey.java.orig 2006-07-11 18:03:59.000000000 +0200
++++ gnu/javax/crypto/key/dh/GnuDHKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -39,7 +39,6 @@
+ package gnu.javax.crypto.key.dh;
+
+ import gnu.java.security.Registry;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.util.FormatUtil;
+
+ import java.math.BigInteger;
+@@ -49,6 +48,8 @@
+ import javax.crypto.interfaces.DHKey;
+ import javax.crypto.spec.DHParameterSpec;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * A base asbtract class for both public and private Diffie-Hellman keys. It
+ * encapsulates the two DH numbers: <code>p</code>, and <code>g</code>.
+Index: gnu/javax/crypto/key/dh/GnuDHPrivateKey.java
+===================================================================
+--- gnu/javax/crypto/key/dh/GnuDHPrivateKey.java.orig 2006-07-11 18:03:59.000000000 +0200
++++ gnu/javax/crypto/key/dh/GnuDHPrivateKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -40,7 +40,6 @@
+
+ import gnu.java.security.Configuration;
+ import gnu.java.security.Registry;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.key.IKeyPairCodec;
+
+ import java.math.BigInteger;
+@@ -48,6 +47,8 @@
+
+ import javax.crypto.interfaces.DHPrivateKey;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * An implementation of the Diffie-Hellman private key.
+ * <p>
+Index: gnu/javax/crypto/key/dh/GnuDHPublicKey.java
+===================================================================
+--- gnu/javax/crypto/key/dh/GnuDHPublicKey.java.orig 2006-07-11 18:03:59.000000000 +0200
++++ gnu/javax/crypto/key/dh/GnuDHPublicKey.java 2008-06-04 11:14:14.000000000 +0200
+@@ -39,7 +39,6 @@
+ package gnu.javax.crypto.key.dh;
+
+ import gnu.java.security.Registry;
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.key.IKeyPairCodec;
+
+ import java.math.BigInteger;
+@@ -47,6 +46,8 @@
+
+ import javax.crypto.interfaces.DHPublicKey;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * An implementation of the Diffie-Hellman public key.
+ * <p>
+Index: gnu/javax/crypto/sasl/plain/PasswordFile.java
+===================================================================
+--- gnu/javax/crypto/sasl/plain/PasswordFile.java.orig 2006-07-11 18:03:59.000000000 +0200
++++ gnu/javax/crypto/sasl/plain/PasswordFile.java 2008-06-04 11:14:14.000000000 +0200
+@@ -38,7 +38,6 @@
+
+ package gnu.javax.crypto.sasl.plain;
+
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.javax.crypto.sasl.NoSuchUserException;
+ import gnu.javax.crypto.sasl.UserAlreadyExistsException;
+
+@@ -56,6 +55,8 @@
+ import java.util.NoSuchElementException;
+ import java.util.StringTokenizer;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * A representation of a Plain password file.
+ */
+Index: gnu/javax/net/ssl/provider/X509TrustManagerFactory.java
+===================================================================
+--- gnu/javax/net/ssl/provider/X509TrustManagerFactory.java.orig 2006-12-10 21:25:43.000000000 +0100
++++ gnu/javax/net/ssl/provider/X509TrustManagerFactory.java 2008-06-04 11:14:14.000000000 +0200
+@@ -66,11 +66,12 @@
+ import javax.net.ssl.TrustManagerFactorySpi;
+ import javax.net.ssl.X509TrustManager;
+
+-import gnu.java.security.action.GetPropertyAction;
+ import gnu.java.security.x509.X509CertPath;
+ import gnu.javax.net.ssl.NullManagerParameters;
+ import gnu.javax.net.ssl.StaticTrustAnchors;
+
++import sun.security.action.GetPropertyAction;
++
+ /**
+ * This class implements a {@link javax.net.ssl.TrustManagerFactory} engine
+ * for the ``JessieX509'' algorithm.
+Index: gnu/xml/aelfred2/XmlParser.java
+===================================================================
+--- gnu/xml/aelfred2/XmlParser.java.orig 2007-09-21 20:05:21.000000000 +0200
++++ gnu/xml/aelfred2/XmlParser.java 2008-06-04 11:14:14.000000000 +0200
+@@ -53,8 +53,6 @@
+
+ package gnu.xml.aelfred2;
+
+-import gnu.java.security.action.GetPropertyAction;
+-
+ import java.io.BufferedInputStream;
+ import java.io.CharConversionException;
+ import java.io.EOFException;
+@@ -74,6 +72,7 @@
+ import org.xml.sax.InputSource;
+ import org.xml.sax.SAXException;
+
++import sun.security.action.GetPropertyAction;
+
+ /**
+ * Parse XML documents and return parse events through call-backs.
+Index: sun/security/action/GetPropertyAction.java
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ sun/security/action/GetPropertyAction.java 2008-06-04 11:14:14.000000000 +0200
+@@ -0,0 +1,92 @@
++/* GetPropertyAction.java
++ Copyright (C) 2004, 2008 Free Software Foundation, Inc.
++
++This file is part of GNU Classpath.
++
++GNU Classpath is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 2, or (at your option)
++any later version.
++
++GNU Classpath is distributed in the hope that it will be useful, but
++WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with GNU Classpath; see the file COPYING. If not, write to the
++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++02110-1301 USA.
++
++Linking this library statically or dynamically with other modules is
++making a combined work based on this library. Thus, the terms and
++conditions of the GNU General Public License cover the whole
++combination.
++
++As a special exception, the copyright holders of this library give you
++permission to link this library with independent modules to produce an
++executable, regardless of the license terms of these independent
++modules, and to copy and distribute the resulting executable under
++terms of your choice, provided that you also meet, for each linked
++independent module, the terms and conditions of the license of that
++module. An independent module is a module which is not derived from
++or based on this library. If you modify this library, you may extend
++this exception to your version of the library, but you are not
++obligated to do so. If you do not wish to do so, delete this
++exception statement from your version. */
++
++package sun.security.action;
++
++import java.security.PrivilegedAction;
++
++/**
++ * PrivilegedAction implementation that calls System.getProperty() with
++ * the property name passed to its constructor.
++ *
++ * Example of use:
++ * <code>
++ * GetPropertyAction action = new GetPropertyAction("http.proxyPort");
++ * String port = AccessController.doPrivileged(action);
++ * </code>
++ *
++ * Note: Usage of this class is discouraged as it is not a part of the
++ * J2SE API.
++ */
++public class GetPropertyAction implements PrivilegedAction<String>
++{
++ String name;
++ String value = null;
++
++ public GetPropertyAction()
++ {
++ }
++
++ public GetPropertyAction(String propName)
++ {
++ setParameters(propName);
++ }
++
++ public GetPropertyAction(String propName, String defaultValue)
++ {
++ setParameters(propName, defaultValue);
++ }
++
++ public String run()
++ {
++ return System.getProperty(name, value);
++ }
++
++ public GetPropertyAction setParameters(String propName)
++ {
++ this.name = propName;
++ this.value = null;
++ return this;
++ }
++
++ public GetPropertyAction setParameters(String propName, String defaultValue)
++ {
++ this.name = propName;
++ this.value = defaultValue;
++ return this;
++ }
++}
diff --git a/recipes/obsolete/classpath/files/xmlstream-fix.patch b/recipes/obsolete/classpath/files/xmlstream-fix.patch
new file mode 100644
index 0000000000..30b44178d7
--- /dev/null
+++ b/recipes/obsolete/classpath/files/xmlstream-fix.patch
@@ -0,0 +1,93 @@
+Index: gnu/xml/stream/AttributeImpl.java
+===================================================================
+RCS file: /sources/classpath/classpath/gnu/xml/stream/AttributeImpl.java,v
+retrieving revision 1.1
+diff -u -r1.1 AttributeImpl.java
+--- gnu/xml/stream/AttributeImpl.java 4 Sep 2005 09:52:10 -0000 1.1
++++ gnu/xml/stream/AttributeImpl.java 4 Mar 2008 16:02:43 -0000
+@@ -56,11 +56,11 @@
+
+ protected final QName name;
+ protected final String value;
+- protected final QName type;
++ protected final String type;
+ protected final boolean specified;
+
+ protected AttributeImpl(Location location,
+- QName name, String value, QName type,
++ QName name, String value, String type,
+ boolean specified)
+ {
+ super(location);
+@@ -85,7 +85,7 @@
+ return value;
+ }
+
+- public QName getDTDType()
++ public String getDTDType()
+ {
+ return type;
+ }
+Index: gnu/xml/stream/XMLEventAllocatorImpl.java
+===================================================================
+RCS file: /sources/classpath/classpath/gnu/xml/stream/XMLEventAllocatorImpl.java,v
+retrieving revision 1.3
+diff -u -r1.3 XMLEventAllocatorImpl.java
+--- gnu/xml/stream/XMLEventAllocatorImpl.java 3 Mar 2006 12:30:59 -0000 1.3
++++ gnu/xml/stream/XMLEventAllocatorImpl.java 4 Mar 2008 16:02:44 -0000
+@@ -165,7 +165,7 @@
+ attributes.add(new AttributeImpl(location,
+ reader.getAttributeName(i),
+ reader.getAttributeValue(i),
+- QName.valueOf(reader.getAttributeType(i)),
++ reader.getAttributeType(i),
+ reader.isAttributeSpecified(i)));
+ return new StartElementImpl(location,
+ reader.getName(),
+Index: gnu/xml/stream/XMLEventFactoryImpl.java
+===================================================================
+RCS file: /sources/classpath/classpath/gnu/xml/stream/XMLEventFactoryImpl.java,v
+retrieving revision 1.2
+diff -u -r1.2 XMLEventFactoryImpl.java
+--- gnu/xml/stream/XMLEventFactoryImpl.java 3 Mar 2006 12:30:59 -0000 1.2
++++ gnu/xml/stream/XMLEventFactoryImpl.java 4 Mar 2008 16:02:44 -0000
+@@ -79,20 +79,20 @@
+ {
+ return new AttributeImpl(location,
+ new QName(namespaceURI, localName, prefix),
+- value, QName.valueOf("CDATA"), true);
++ value, "CDATA", true);
+ }
+
+ public Attribute createAttribute(String localName, String value)
+ {
+ return new AttributeImpl(location,
+ new QName(localName),
+- value, QName.valueOf("CDATA"), true);
++ value, "CDATA", true);
+ }
+
+ public Attribute createAttribute(QName name, String value)
+ {
+ return new AttributeImpl(location, name, value,
+- QName.valueOf("CDATA"), true);
++ "CDATA", true);
+ }
+
+ public Namespace createNamespace(String namespaceURI)
+Index: javax/xml/stream/events/Attribute.java
+===================================================================
+RCS file: /sources/classpath/classpath/javax/xml/stream/events/Attribute.java,v
+retrieving revision 1.2
+diff -u -r1.2 Attribute.java
+--- javax/xml/stream/events/Attribute.java 4 Sep 2005 09:44:30 -0000 1.2
++++ javax/xml/stream/events/Attribute.java 4 Mar 2008 16:02:48 -0000
+@@ -59,7 +59,7 @@
+ /**
+ * Returns the type of this attribute.
+ */
+- QName getDTDType();
++ String getDTDType();
+
+ /**
+ * Indicates whether this attribute was specified in the input source, or