Calendar.java: Implement Comparable<Calendar>.
* java/util/Calendar.java: Implement Comparable<Calendar>. Update comments. (clear): Call complete. (setTimeZone): Call computeTime, computeFields. (compareTo): New method. * java/nio/charset/Charset.java: Implement Comparable<Charset>. (availableCharsets): Genericized. (aliases): Likewise. (compareTo): Changed argument type. * java/lang/ClassLoader.java (loadClass): Genericized. (findClass): Likewise. (defineClass): Likewise. (resolveClass): Likewise. (findSystemClass): Likewise. (setSigners): Likewise. (findLoadedClass): Likewise. (getResources): Likewise. (findResources): Likewise. (getSystemResources): Likewise. (checkInitialized): New method. * java/lang/Class.java (getCanonicalName): New method. From-SVN: r121471
This commit is contained in:
parent
62e5bf5d42
commit
0a32f469ac
11 changed files with 193 additions and 46 deletions
|
@ -1,5 +1,5 @@
|
|||
/* ClassLoader.java -- responsible for loading classes into the VM
|
||||
Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -118,7 +118,6 @@ import java.lang.annotation.Annotation;
|
|||
* @author Eric Blake (ebb9@email.byu.edu)
|
||||
* @see Class
|
||||
* @since 1.0
|
||||
* @status still missing 1.4 functionality
|
||||
*/
|
||||
public abstract class ClassLoader
|
||||
{
|
||||
|
@ -373,7 +372,7 @@ public abstract class ClassLoader
|
|||
* @return the loaded class
|
||||
* @throws ClassNotFoundException if the class cannot be found
|
||||
*/
|
||||
public Class loadClass(String name) throws ClassNotFoundException
|
||||
public Class<?> loadClass(String name) throws ClassNotFoundException
|
||||
{
|
||||
return loadClass(name, false);
|
||||
}
|
||||
|
@ -401,7 +400,7 @@ public abstract class ClassLoader
|
|||
* @return the loaded class
|
||||
* @throws ClassNotFoundException if the class cannot be found
|
||||
*/
|
||||
protected synchronized Class loadClass(String name, boolean resolve)
|
||||
protected synchronized Class<?> loadClass(String name, boolean resolve)
|
||||
throws ClassNotFoundException
|
||||
{
|
||||
SecurityManager sm = SecurityManager.current;
|
||||
|
@ -490,7 +489,7 @@ public abstract class ClassLoader
|
|||
* @throws ClassNotFoundException when the class can not be found
|
||||
* @since 1.2
|
||||
*/
|
||||
protected Class findClass(String name) throws ClassNotFoundException
|
||||
protected Class<?> findClass(String name) throws ClassNotFoundException
|
||||
{
|
||||
throw new ClassNotFoundException(name);
|
||||
}
|
||||
|
@ -508,7 +507,7 @@ public abstract class ClassLoader
|
|||
* offset + len exceeds data
|
||||
* @deprecated use {@link #defineClass(String, byte[], int, int)} instead
|
||||
*/
|
||||
protected final Class defineClass(byte[] data, int offset, int len)
|
||||
protected final Class<?> defineClass(byte[] data, int offset, int len)
|
||||
throws ClassFormatError
|
||||
{
|
||||
return defineClass(null, data, offset, len);
|
||||
|
@ -533,8 +532,8 @@ public abstract class ClassLoader
|
|||
* @throws SecurityException if name starts with "java."
|
||||
* @since 1.1
|
||||
*/
|
||||
protected final Class defineClass(String name, byte[] data, int offset,
|
||||
int len) throws ClassFormatError
|
||||
protected final Class<?> defineClass(String name, byte[] data, int offset,
|
||||
int len) throws ClassFormatError
|
||||
{
|
||||
return defineClass(name, data, offset, len, null);
|
||||
}
|
||||
|
@ -562,15 +561,14 @@ public abstract class ClassLoader
|
|||
* do not match up
|
||||
* @since 1.2
|
||||
*/
|
||||
protected final synchronized Class defineClass(String name, byte[] data,
|
||||
int offset, int len,
|
||||
ProtectionDomain domain)
|
||||
protected final synchronized Class<?> defineClass(String name, byte[] data,
|
||||
int offset, int len,
|
||||
ProtectionDomain domain)
|
||||
throws ClassFormatError
|
||||
{
|
||||
checkInitialized();
|
||||
if (domain == null)
|
||||
domain = defaultProtectionDomain;
|
||||
if (! initialized)
|
||||
throw new SecurityException("attempt to define class from uninitialized class loader");
|
||||
|
||||
Class retval = VMClassLoader.defineClass(this, name, data,
|
||||
offset, len, domain);
|
||||
|
@ -615,8 +613,9 @@ public abstract class ClassLoader
|
|||
* @throws NullPointerException if c is null
|
||||
* @throws LinkageError if linking fails
|
||||
*/
|
||||
protected final void resolveClass(Class c)
|
||||
protected final void resolveClass(Class<?> c)
|
||||
{
|
||||
checkInitialized();
|
||||
VMClassLoader.resolveClass(c);
|
||||
}
|
||||
|
||||
|
@ -629,9 +628,10 @@ public abstract class ClassLoader
|
|||
* @return the found class
|
||||
* @throws ClassNotFoundException if the class cannot be found
|
||||
*/
|
||||
protected final Class findSystemClass(String name)
|
||||
protected final Class<?> findSystemClass(String name)
|
||||
throws ClassNotFoundException
|
||||
{
|
||||
checkInitialized();
|
||||
return Class.forName(name, false, systemClassLoader);
|
||||
}
|
||||
|
||||
|
@ -666,8 +666,9 @@ public abstract class ClassLoader
|
|||
* @param signers the signers to set
|
||||
* @since 1.1
|
||||
*/
|
||||
protected final void setSigners(Class c, Object[] signers)
|
||||
protected final void setSigners(Class<?> c, Object[] signers)
|
||||
{
|
||||
checkInitialized();
|
||||
c.setSigners(signers);
|
||||
}
|
||||
|
||||
|
@ -678,8 +679,9 @@ public abstract class ClassLoader
|
|||
* @return the found Class, or null if it is not found
|
||||
* @since 1.1
|
||||
*/
|
||||
protected final synchronized Class findLoadedClass(String name)
|
||||
protected final synchronized Class<?> findLoadedClass(String name)
|
||||
{
|
||||
checkInitialized();
|
||||
// NOTE: If the VM is keeping its own cache, it may make sense to have
|
||||
// this method be native.
|
||||
return (Class) loadedClasses.get(name);
|
||||
|
@ -732,15 +734,16 @@ public abstract class ClassLoader
|
|||
* @return an enumaration of all resources found
|
||||
* @throws IOException if I/O errors occur in the process
|
||||
* @since 1.2
|
||||
* @specnote this was <code>final</code> prior to 1.5
|
||||
*/
|
||||
public final Enumeration getResources(String name) throws IOException
|
||||
public final Enumeration<URL> getResources(String name) throws IOException
|
||||
{
|
||||
Enumeration parentResources;
|
||||
Enumeration<URL> parentResources;
|
||||
if (parent == null)
|
||||
parentResources = VMClassLoader.getResources(name);
|
||||
else
|
||||
parentResources = parent.getResources(name);
|
||||
return new DoubleEnumeration(parentResources, findResources(name));
|
||||
return new DoubleEnumeration<URL>(parentResources, findResources(name));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -760,9 +763,9 @@ public abstract class ClassLoader
|
|||
* @throws IOException if I/O errors occur in the process
|
||||
* @since 1.2
|
||||
*/
|
||||
protected Enumeration findResources(String name) throws IOException
|
||||
protected Enumeration<URL> findResources(String name) throws IOException
|
||||
{
|
||||
return EmptyEnumeration.getInstance();
|
||||
return (Enumeration<URL>) EmptyEnumeration.getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -807,7 +810,8 @@ public abstract class ClassLoader
|
|||
* @throws IOException if I/O errors occur in the process
|
||||
* @since 1.2
|
||||
*/
|
||||
public static Enumeration getSystemResources(String name) throws IOException
|
||||
public static Enumeration<URL> getSystemResources(String name)
|
||||
throws IOException
|
||||
{
|
||||
return systemClassLoader.getResources(name);
|
||||
}
|
||||
|
@ -939,7 +943,7 @@ public abstract class ClassLoader
|
|||
throw new IllegalArgumentException("Package " + name
|
||||
+ " already defined");
|
||||
Package p = new Package(name, specTitle, specVendor, specVersion,
|
||||
implTitle, implVendor, implVersion, sealed);
|
||||
implTitle, implVendor, implVersion, sealed, this);
|
||||
synchronized (definedPackages)
|
||||
{
|
||||
definedPackages.put(name, p);
|
||||
|
@ -1115,4 +1119,16 @@ public abstract class ClassLoader
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Before doing anything "dangerous" please call this method to make sure
|
||||
* this class loader instance was properly constructed (and not obtained
|
||||
* by exploiting the finalizer attack)
|
||||
* @see #initialized
|
||||
*/
|
||||
private void checkInitialized()
|
||||
{
|
||||
if (! initialized)
|
||||
throw new SecurityException("attempt to use uninitialized class loader");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue