re PR libgcj/7416 (java.security startup refs "GNU libgcj.security")
Fix for PR libgcj/7416: * javax/naming/InitialContext.java (init): Use gnu.classpath.home.url. * java/security/Security.java: Use new properties. (loadProviders): Accept base url; use it. * java/lang/System.java: Document gnu.classpath.vm.shortname, and gnu.classpath.home.url. (gnu.classpath.home.url): Define. (gnu.classpath.vm.shortname): Likewise. From-SVN: r60722
This commit is contained in:
parent
3d1252a94a
commit
9f17a7afd2
4 changed files with 61 additions and 27 deletions
|
@ -1,3 +1,15 @@
|
|||
2002-12-31 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
Fix for PR libgcj/7416:
|
||||
* javax/naming/InitialContext.java (init): Use
|
||||
gnu.classpath.home.url.
|
||||
* java/security/Security.java: Use new properties.
|
||||
(loadProviders): Accept base url; use it.
|
||||
* java/lang/System.java: Document gnu.classpath.vm.shortname, and
|
||||
gnu.classpath.home.url.
|
||||
(gnu.classpath.home.url): Define.
|
||||
(gnu.classpath.vm.shortname): Likewise.
|
||||
|
||||
2002-12-31 Tom Tromey <tromey@redhat.com>
|
||||
Ranjit Mathew <rmathew@hotmail.com>
|
||||
|
||||
|
|
|
@ -73,15 +73,32 @@ public final class System
|
|||
loadLibrary("javalang");
|
||||
|
||||
Properties defaultProperties = Runtime.defaultProperties;
|
||||
defaultProperties.put("gnu.cpu.endian",
|
||||
isWordsBigEndian() ? "big" : "little");
|
||||
|
||||
// Set base URL if not already set.
|
||||
if (defaultProperties.get("gnu.classpath.home.url") == null)
|
||||
defaultProperties.put("gnu.classpath.home.url",
|
||||
"file://"
|
||||
+ defaultProperties.get("gnu.classpath.home")
|
||||
+ "/lib");
|
||||
|
||||
// Set short name if not already set.
|
||||
if (defaultProperties.get("gnu.classpath.vm.shortname") == null)
|
||||
{
|
||||
String value = defaultProperties.getProperty("java.vm.name");
|
||||
int index = value.lastIndexOf(' ');
|
||||
if (index != -1)
|
||||
value = value.substring(index + 1);
|
||||
defaultProperties.put("gnu.classpath.vm.shortname", value);
|
||||
}
|
||||
|
||||
defaultProperties.put("gnu.cpu.endian",
|
||||
isWordsBigEndian() ? "big" : "little");
|
||||
// XXX FIXME - Temp hack for old systems that set the wrong property
|
||||
if (defaultProperties.get("java.io.tmpdir") == null)
|
||||
defaultProperties.put("java.io.tmpdir",
|
||||
defaultProperties.get("java.tmpdir"));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Stores the current system properties. This can be modified by
|
||||
* {@link #setProperties(Properties)}, but will never be null, because
|
||||
|
@ -101,7 +118,7 @@ public final class System
|
|||
* however.
|
||||
*/
|
||||
public static final InputStream in
|
||||
= new BufferedInputStream (new FileInputStream(FileDescriptor.in));
|
||||
= new BufferedInputStream(new FileInputStream(FileDescriptor.in));
|
||||
/**
|
||||
* The standard output PrintStream. This is assigned at startup and
|
||||
* starts its life perfectly valid. Although it is marked final, you can
|
||||
|
@ -113,7 +130,7 @@ public final class System
|
|||
* you, however.
|
||||
*/
|
||||
public static final PrintStream out
|
||||
= new PrintStream(new BufferedOutputStream (new FileOutputStream(FileDescriptor.out)), true);
|
||||
= new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)), true);
|
||||
/**
|
||||
* The standard output PrintStream. This is assigned at startup and
|
||||
* starts its life perfectly valid. Although it is marked final, you can
|
||||
|
@ -125,7 +142,7 @@ public final class System
|
|||
* you, however.
|
||||
*/
|
||||
public static final PrintStream err
|
||||
= new PrintStream(new BufferedOutputStream (new FileOutputStream(FileDescriptor.err)), true);
|
||||
= new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.err)), true);
|
||||
|
||||
/**
|
||||
* This class is uninstantiable.
|
||||
|
@ -312,6 +329,10 @@ public final class System
|
|||
* In addition, gnu defines several other properties, where ? stands for
|
||||
* each character in '0' through '9':
|
||||
* <dl>
|
||||
* <dl> gnu.classpath.vm.shortname <dd> Succinct version of the VM name;
|
||||
* used for finding property files in file system
|
||||
* <dl> gnu.classpath.home.url <dd> Base URL; used for finding
|
||||
* property files in file system
|
||||
* <dt> gnu.cpu.endian <dd>big or little
|
||||
* <dt> gnu.java.io.encoding_scheme_alias.ISO-8859-? <dd>8859_?
|
||||
* <dt> gnu.java.io.encoding_scheme_alias.iso-8859-? <dd>8859_?
|
||||
|
|
|
@ -37,9 +37,10 @@ exception statement from your version. */
|
|||
|
||||
package java.security;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.net.URL;
|
||||
import java.security.Provider;
|
||||
import java.util.Vector;
|
||||
import java.util.Enumeration;
|
||||
|
@ -59,9 +60,9 @@ public final class Security extends Object
|
|||
|
||||
static
|
||||
{
|
||||
loadProviders(System.getProperty("java.home"),
|
||||
System.getProperty("java.vm.name"));
|
||||
loadProviders(System.getProperty("gnu.classpath.home"), "classpath");
|
||||
String base = System.getProperty("gnu.classpath.home.url");
|
||||
loadProviders(base, System.getProperty("gnu.classpath.vm.shortname"));
|
||||
loadProviders(base, "classpath");
|
||||
}
|
||||
|
||||
// This class can't be instantiated.
|
||||
|
@ -69,20 +70,16 @@ public final class Security extends Object
|
|||
{
|
||||
}
|
||||
|
||||
private static void loadProviders(String dir, String vendor)
|
||||
private static void loadProviders(String baseUrl, String vendor)
|
||||
{
|
||||
if (dir == null || vendor == null)
|
||||
if (baseUrl == null || vendor == null)
|
||||
return;
|
||||
|
||||
String separator = System.getProperty("file.separator");
|
||||
String secfilestr = (dir +
|
||||
separator + "lib" +
|
||||
separator + "security" +
|
||||
separator + vendor + ".security");
|
||||
String secfilestr = baseUrl + "/security/" + vendor + ".security";
|
||||
|
||||
try
|
||||
{
|
||||
FileInputStream fin = new FileInputStream(secfilestr);
|
||||
InputStream fin = new URL(secfilestr).openStream();
|
||||
secprops = new Properties();
|
||||
secprops.load(fin);
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* InitialContext.java --
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -126,18 +126,22 @@ public class InitialContext implements Context
|
|||
}
|
||||
catch (IOException e) {}
|
||||
|
||||
String home = System.getProperty("java.home");
|
||||
String home = System.getProperty("gnu.classpath.home.url");
|
||||
if (home != null)
|
||||
{
|
||||
String fileName = home + File.separator
|
||||
+ "lib" + File.separator + "jndi.properties";
|
||||
String url = home + "/jndi.properties";
|
||||
Properties p = new Properties ();
|
||||
|
||||
try {
|
||||
InputStream is = new FileInputStream (fileName);
|
||||
p.load (is);
|
||||
is.close ();
|
||||
} catch (IOException e) {}
|
||||
try
|
||||
{
|
||||
InputStream is = new URL(url).openStream();
|
||||
p.load (is);
|
||||
is.close ();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
// Ignore.
|
||||
}
|
||||
|
||||
merge (myProps, p);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue