From 501270975a91bb86caf11a27390868612ca897d3 Mon Sep 17 00:00:00 2001 From: tromey Date: Thu, 1 Feb 2007 20:34:08 +0000 Subject: [PATCH] * java/util/Calendar.java: Implement Comparable. Update comments. (clear): Call complete. (setTimeZone): Call computeTime, computeFields. (compareTo): New method. * java/nio/charset/Charset.java: Implement Comparable. (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121471 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 24 +++++++ libjava/classpath/lib/java/lang/Class.class | Bin 14910 -> 15250 bytes .../lang/ClassLoader$AnnotationsKey.class | Bin 1160 -> 1160 bytes .../classpath/lib/java/lang/ClassLoader.class | Bin 11741 -> 12510 bytes .../lib/java/nio/charset/Charset.class | Bin 7400 -> 7948 bytes .../classpath/lib/java/util/Calendar.class | Bin 13449 -> 13907 bytes libjava/java/lang/Class.java | 55 ++++++++++++++- libjava/java/lang/ClassLoader.java | 64 +++++++++++------- libjava/java/lang/Thread.h | 2 +- libjava/java/nio/charset/Charset.java | 30 ++++---- libjava/java/util/Calendar.java | 64 ++++++++++++++++-- 11 files changed, 193 insertions(+), 46 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 52598e5a2c5c..a19a97c57ae5 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,27 @@ +2007-02-01 Tom Tromey + + * java/util/Calendar.java: Implement Comparable. Update + comments. + (clear): Call complete. + (setTimeZone): Call computeTime, computeFields. + (compareTo): New method. + * java/nio/charset/Charset.java: Implement Comparable. + (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. + 2007-01-31 Keith Seitz * include/jvmti-int.h (JVMTI): Declare member "enabled". diff --git a/libjava/classpath/lib/java/lang/Class.class b/libjava/classpath/lib/java/lang/Class.class index 13b56116d94068cf6873523832537d2c03aa7973..7dbfdcee51d3cc64d56e2c485d89a80df5fbc72f 100644 GIT binary patch delta 650 zc-mD`J8#oa6#mXl52fyfgoXx~NKgf>-3Or!CJk+nx`sYjDkK&+vZ{zY5Q)T?gXourUG-|d1yYk*UB`i`Y^@xM6V6qd_x;+I|8%A5HJj#UMq>wSrkc~V z7qPQi-7;)lX_gw|7m`I>Zq%MM>VCat0ti+uv|9D7DDJjaZs%M2F%>$SnPO)@^NBWI zJ-_xc)s`thh|9!Z5rYz}+5z>um=M?x)QysJjLV1k{?K`iAAS5z()$1>0a4Em)KnLa z!1RE3^*`QQ;mPIfU;51#u*CMD3pVcvdTj}eVNA|hi~^j+FwY~-3rKPflk8%S^Kf|) z1ukHdm*Dd(lAEab^^6{3?ABz?Vg68F-BbOe97l#?tc%&v10|O(27*GWdkY->IU=U#t2MRGUX)u0c z05L=v1sRwa6oG6eCM^bjARPnbGl6tyX>ViFKE}YxvW9sL+$J`VIjnk<4XjOdbr~3e aU^gRB7b7E+9+cJx(LmD-z@#D6Y$E`#Yb>n* diff --git a/libjava/classpath/lib/java/lang/ClassLoader$AnnotationsKey.class b/libjava/classpath/lib/java/lang/ClassLoader$AnnotationsKey.class index 5f0b96d7acfdc3550c9addb23717ae75511c02fb..03de2da433497001e6c4ba1c6614d303d34d6d47 100644 GIT binary patch delta 87 zc-rgW?BLw+jEVIk13SaI$*-Bh6t^+3FzjaFWZ1*N$FP?{gkc|pB*T6N1%?9*sz6$U r;o#&X<|(2_8CV&PF$gdmXOLz%!Jx))lEH-G*ko>&0LF8ZV_0+mAY2zs delta 87 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 diff --git a/libjava/classpath/lib/java/nio/charset/Charset.class b/libjava/classpath/lib/java/nio/charset/Charset.class index ae2b11910658f6e0bc60cc83bb1e89f0da4aac47..54db32a285d2e492539c1ccf60c6c0917bb97d3d 100644 GIT binary patch delta 3222 zc-n%~$-p5b~GH{h#cgP}NY0AEwEk&t>JKy%m|^n?RJ6*pm%IAka&`MQcr z@eM*+sdI8IW~{|6DsIIVVNx17;8qpi#O(y7%M)7U?GF=lrOs>2xC3`8_?GBaY&wCv z#H~ty10lU7(BbJ`<_Y>d?cLs`>wCRR2fgAZR7C<*GxlOcK}6J=@^zzl zOthP7X`dK0*%QZLHDe6pDh}e1IAY4n8p9JRevS%)KIGfrm9xK8@gxolop}~LEo#iU z#;5Qr+0b8$c5}}Fq3B#|H1JEj;fs(}TO*tBf{GXMEWzmQ=?$-EPX#Z1NJ(q`u}X&9FgUR7}de_)FG{5^qHzSTZ4J7Hl-Nz0@V7pp;RO6bh{3n8w5 zs+lGFri#Deiv%;X7z~G6ec>)6&Iq%5!t!qw|HQi{{1+c7_>fQ_$`cFXReX%IA}_JZ zOhh_`c>Cna4kvR*oBSOC?x#w6iWeIbSJbhKqLPu~3D$uBYJZQXw^z!mkrm+SV1>va zW|b1~E+IbXmtDSLzhUlUwY?YQa%-k`V_a$QK|_!MGD#3%+%3Lm8xl$*qTyVA0G&JdHEPH@|NprWDewf zjY_knh78`deV*=+G}WqfnPfX9YHIHE2ZG*4Psl6AQXIx`Alf7eG=WnPHK|lZ(}m4q zFC$z&p_^B=ukm(-YbID413kS=Dw7-CafaxQ6V;ZPWE0(%l~b>R9*beb7ocJ(l5sVx zSOz08(T%z2K@$SFk`JHH zBgkt)=t7wP`mh!2u$|}bMZc(?@?g;|9AOL0d?=-08|(Q_q~UI4VFw)SlaE0Z-~pje zTSgCwYt!1S`?<~oNaEc%1&5G<$B~C8#M5cvqGx#Kd9MBij&zKpyu?wCbA*=}!7C`` z?`b$8+O4w&;y6DLhhB~WnhqT!0Ydw*wrw{;Be-tCDB2^~&@zM!_hYz`I1?>&l|`_b zpPO6Rb{k>m**8YvYthXcLZ#bY#r}(iV4Hf*e~#XjrRNp$=jPU_u_doN;0jIV^)u@VR-4<)J z$#@p$H2a)}_+bvJ=W&*65AqK~8O8I%@^yUfJ{)Vy9>MPx>S~8zDU(JAYx9-X%{p>q z51xIyY!tu0AiDzI@}P1kRDlGtR`F3f9X6VQT$%|Nk5yDHhBEU@PU4T8-Ol}RvT$^o zNMxNh-lr$=C!Ql#u7)D3<{~KM?CZjoRY-N>vaF1RQ+R`I7FPM~!jolPc{+l>?qu2Q zL2l~bwfA`aF5NB-vn(`;bApJyC>9;dA^2Bs-t?XhK8u-m)|p4^C|U= hw=q_s^Fmwsa){97p8?BHp=RNSB`$xjh;DhB{|UlpvLyfj delta 2786 zc-n&8GgT}&7Y)yFG-u;lJrKeNpEx@*3v$dS}xLdxFV$tWTE|SDt>*A)UEE1J${WnxxjV)rflFD(u zsp1aYDOM`A?0mP1Z()F-bh!PET3>*mD=1uU!ng5V1>X^el{DQp+$&BheH8|Lj}YJ5 z;r98pKuNdH+uPZu`Aqme<|^31TOkBpZclq@(|UhETWi7(@IwU;iF9L9S3i}Nb8#6b2{zb?Z*T-gCRQwzN;huk`ZgG80Z5<&;)Wjr+lGu2a z`*8sm75tZwA>N72h*EJ0-QDihU0N+Gf=QNAxImFA zMd2(V%BT5dF&9WtaUOqD$S7*!90mhLb8)1K21|0}QiWp0=D0`oiIk*}RTRai=#nW# z%#W`kMQn|qYfe}3SDZ0XCS@y>#hAA3%rGz{nnsu}=ENjQ(BfpQO`MNc@++lbE@Px= za+WW#gq#aivXPw$TfLgWvjnXwH>cIRw%hH~mUtOVn!!b-DwWZ6F=8$gPK%Ap@^{pF z+qmT}x=N)PQUiKzU5~rVFPAD*x<;}dKe4p1-Q)FXwQj#gFa*3!0bi%5U3e{aal$f_ zQiUO5RdFLCu^0wi4;4*_!xC6=1MEEJVi}xhK`EAF2EK|4tPuAlT&!tD6f_ud6D;UJ z3ObR4n^A@}n2j#f!Gr72%`w+u1$=D5w*~(VpaYL^dC^oz|uFxcJ1{VjW|g`w`2sPrxB0<1jMuoY0a2xkq{D1fze2 zBfZK|UgIdQbA&gzf;UmX@6&NoTuPeNPwWdaLdO*V{xNu4hOur0J&Q)MI*7jdK_t8O z;a1}4)Zi=%;&%Su+RSTr5q6BfKZ?$JUDY7UT=sIdZyZEg@n!pKBAuy`>>(dpn~TFP zr?y0p-F0x+_%Y|`O58KVc_T25pI0Gy5x%&cG{N=VIo?jXY+^gf@;5 zVt~8Dvg6TixqlQ7EONd8vvU*=2C?%n+Us3I&7*i^h;4u*X8N%(;&jdmdi_?$o0S zb0!g&FiRja^kjufNl2t*Mw^0c9$l1%nPkHpa-fDXa2;ibxXom6D(hYH2d=RQzru?g zx`y@o5`N8V=FoR*AU&r)Kjfi?n2KVx<%M?R@SAX<4|1$X9%nh9LDmr{!+3c}P7lr= z!|@i|2wrK>RS&{kBo`g5sMnge=*VH)HGaNm6u+MmOEw=+P!SX=Ml_Z2Wi=gX6jP22 z`VyQ}j&hnIHl}4+|A0TTi=Eq0$V$*Lj*}Bub1S|8tK5AnjI}~)LL5&`Sx_CaObWH= zvZb88jd$3_j6d<2o$zU78yU~e_%kf;2Jz<|tRy-Afak(vORA`4;;)5`YOhFdp9mUB zEcMf&k?+&c$lrw!taBI;2W(mNW%0Jn+Rs;YIN`%wl1_rD4 zGW^@vaucJ!U83)IlI!#6sfhJ7fxb43K2EmJ#n%}RK`PnvKQ-KWg*M_QwGl_Gxs3>^P%p!LJ@|`hlghIPaJ1@PW9D$bW^!wWz*?iE>a+gwqJoE YWfDWmB!Y8#j7n9X0jrHs3jhEB diff --git a/libjava/classpath/lib/java/util/Calendar.class b/libjava/classpath/lib/java/util/Calendar.class index f6d96a901ed7a42ac693d4839bb934b4cc32aec3..9ffbe347ebb3cecfdbce980a78c10b68207c7901 100644 GIT binary patch literal 13907 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 literal 13449 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 bwEX~H^+%IfW0PWy#h-+oBThJ&mdO5p{{peR diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java index a071ee36cd0e..b0151db7e2d5 100644 --- a/libjava/java/lang/Class.java +++ b/libjava/java/lang/Class.java @@ -1,5 +1,5 @@ /* Class.java -- Representation of a Java class. - Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -1290,6 +1290,59 @@ public final class Class return v.toArray(new Annotation[v.size()]); } + /** + *

+ * Returns the canonical name of this class, as defined by section + * 6.7 of the Java language specification. Each package, top-level class, + * top-level interface and primitive type has a canonical name. A member + * class has a canonical name, if its parent class has one. Likewise, + * an array type has a canonical name, if its component type does. + * Local or anonymous classes do not have canonical names. + *

+ *

+ * The canonical name for top-level classes, top-level interfaces and + * primitive types is always the same as the fully-qualified name. + * For array types, the canonical name is the canonical name of its + * component type with `[]' appended. + *

+ *

+ * The canonical name of a member class always refers to the place where + * the class was defined, and is composed of the canonical name of the + * defining class and the simple name of the member class, joined by `.'. + * For example, if a Person class has an inner class, + * M, then both its fully-qualified name and canonical name + * is Person.M. A subclass, Staff, of + * Person refers to the same inner class by the fully-qualified + * name of Staff.M, but its canonical name is still + * Person.M. + *

+ *

+ * Where no canonical name is present, null is returned. + *

+ * + * @return the canonical name of the class, or null if the + * class doesn't have a canonical name. + * @since 1.5 + */ + public String getCanonicalName() + { + if (isArray()) + { + String componentName = getComponentType().getCanonicalName(); + if (componentName != null) + return componentName + "[]"; + } + if (isMemberClass()) + { + String memberName = getDeclaringClass().getCanonicalName(); + if (memberName != null) + return memberName + "." + getSimpleName(); + } + if (isLocalClass() || isAnonymousClass()) + return null; + return getName(); + } + /** * Returns all annotations directly defined by this class. If there are * no annotations associated with this class, then a zero-length array diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java index faec9a7ebd2a..92b2f0ad8b7d 100644 --- a/libjava/java/lang/ClassLoader.java +++ b/libjava/java/lang/ClassLoader.java @@ -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 final prior to 1.5 */ - public final Enumeration getResources(String name) throws IOException + public final Enumeration getResources(String name) throws IOException { - Enumeration parentResources; + Enumeration parentResources; if (parent == null) parentResources = VMClassLoader.getResources(name); else parentResources = parent.getResources(name); - return new DoubleEnumeration(parentResources, findResources(name)); + return new DoubleEnumeration(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 findResources(String name) throws IOException { - return EmptyEnumeration.getInstance(); + return (Enumeration) 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 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"); + } } diff --git a/libjava/java/lang/Thread.h b/libjava/java/lang/Thread.h index d5fce8638771..bef9dd8d5f76 100644 --- a/libjava/java/lang/Thread.h +++ b/libjava/java/lang/Thread.h @@ -145,7 +145,7 @@ public: // actually package-private ::java::lang::Object * accessControlState; ::gnu::gcj::RawData * interp_frame; ::gnu::gcj::RawData * frame; - volatile jint state; + jint volatile state; ::gnu::gcj::RawDataManaged * data; public: static ::java::lang::Class class$; diff --git a/libjava/java/nio/charset/Charset.java b/libjava/java/nio/charset/Charset.java index 48093bc9d3d0..04b3819481aa 100644 --- a/libjava/java/nio/charset/Charset.java +++ b/libjava/java/nio/charset/Charset.java @@ -1,5 +1,5 @@ /* Charset.java -- - Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -61,14 +61,15 @@ import java.util.TreeMap; /** * @author Jesse Rosenstock * @since 1.4 + * @status updated to 1.5 */ -public abstract class Charset implements Comparable +public abstract class Charset implements Comparable { private CharsetEncoder cachedEncoder; private CharsetDecoder cachedDecoder; /** - * Charset providers. + * Extra Charset providers. */ private static CharsetProvider[] providers; @@ -174,7 +175,7 @@ public abstract class Charset implements Comparable * Returns the Charset instance for the charset of the given name. * * @param charsetName - * @return + * @return the Charset instance for the indicated charset * @throws UnsupportedCharsetException if this VM does not support * the charset of the given name. * @throws IllegalCharsetNameException if the given charset name is @@ -221,19 +222,20 @@ public abstract class Charset implements Comparable return cs; } - public static SortedMap availableCharsets() + public static SortedMap availableCharsets() { - TreeMap charsets = new TreeMap(String.CASE_INSENSITIVE_ORDER); - for (Iterator i = provider().charsets(); i.hasNext(); ) + TreeMap charsets + = new TreeMap(String.CASE_INSENSITIVE_ORDER); + for (Iterator i = provider().charsets(); i.hasNext(); ) { - Charset cs = (Charset) i.next(); + Charset cs = i.next(); charsets.put(cs.name(), cs); } CharsetProvider[] providers = providers2(); for (int j = 0; j < providers.length; j++) { - for (Iterator i = providers[j].charsets(); i.hasNext(); ) + for (Iterator i = providers[j].charsets(); i.hasNext(); ) { Charset cs = (Charset) i.next(); charsets.put(cs.name(), cs); @@ -295,14 +297,14 @@ public abstract class Charset implements Comparable return canonicalName; } - public final Set aliases () + public final Set aliases () { if (aliases == null) - return Collections.EMPTY_SET; + return Collections.emptySet(); // should we cache the aliasSet instead? int n = aliases.length; - HashSet aliasSet = new HashSet (n); + HashSet aliasSet = new HashSet (n); for (int i = 0; i < n; ++i) aliasSet.add (aliases[i]); return Collections.unmodifiableSet (aliasSet); @@ -387,9 +389,9 @@ public abstract class Charset implements Comparable } } - public final int compareTo (Object ob) + public final int compareTo (Charset other) { - return canonicalName.compareToIgnoreCase (((Charset) ob).canonicalName); + return canonicalName.compareToIgnoreCase (other.canonicalName); } public final int hashCode () diff --git a/libjava/java/util/Calendar.java b/libjava/java/util/Calendar.java index 5559d8c53f41..6c0d7213dea2 100644 --- a/libjava/java/util/Calendar.java +++ b/libjava/java/util/Calendar.java @@ -1,5 +1,6 @@ /* Calendar.java -- - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -103,7 +104,8 @@ day_of_week + week_of_year * @see TimeZone * @see java.text.DateFormat */ -public abstract class Calendar implements Serializable, Cloneable +public abstract class Calendar + implements Serializable, Cloneable, Comparable { /** * Constant representing the era time field. @@ -460,6 +462,8 @@ public abstract class Calendar implements Serializable, Cloneable /** * Creates a calendar representing the actual time, using the default * time zone and locale. + * + * @return The new calendar. */ public static synchronized Calendar getInstance() { @@ -469,7 +473,12 @@ public abstract class Calendar implements Serializable, Cloneable /** * Creates a calendar representing the actual time, using the given * time zone and the default locale. - * @param zone a time zone. + * + * @param zone a time zone (null not permitted). + * + * @return The new calendar. + * + * @throws NullPointerException if zone is null. */ public static synchronized Calendar getInstance(TimeZone zone) { @@ -479,7 +488,12 @@ public abstract class Calendar implements Serializable, Cloneable /** * Creates a calendar representing the actual time, using the default * time zone and the given locale. - * @param locale a locale. + * + * @param locale a locale (null not permitted). + * + * @return The new calendar. + * + * @throws NullPointerException if locale is null. */ public static synchronized Calendar getInstance(Locale locale) { @@ -501,8 +515,14 @@ public abstract class Calendar implements Serializable, Cloneable /** * Creates a calendar representing the actual time, using the given * time zone and locale. - * @param zone a time zone. - * @param locale a locale. + * + * @param zone a time zone (null not permitted). + * @param locale a locale (null not permitted). + * + * @return The new calendar. + * + * @throws NullPointerException if zone or locale + * is null. */ public static synchronized Calendar getInstance(TimeZone zone, Locale locale) { @@ -600,6 +620,10 @@ public abstract class Calendar implements Serializable, Cloneable /** * Sets this Calendar's time to the given Date. All time fields * are invalidated by this method. + * + * @param date the date (null not permitted). + * + * @throws NullPointerException if date is null. */ public final void setTime(Date date) { @@ -860,6 +884,7 @@ public abstract class Calendar implements Serializable, Cloneable 1, 1970, JANUARY, 1, 1, 1, 1, THURSDAY, 1, AM, 0, 0, 0, 0, 0, zone.getRawOffset(), 0 }; + complete(); isTimeSet = false; areFieldsSet = false; isSet[field] = false; @@ -1020,6 +1045,8 @@ public abstract class Calendar implements Serializable, Cloneable public void setTimeZone(TimeZone zone) { this.zone = zone; + computeTime(); + computeFields(); } /** @@ -1175,6 +1202,31 @@ public abstract class Calendar implements Serializable, Cloneable return max; } + /** + * Compares the time of two calendar instances. + * @param calendar the calendar to which the time should be compared. + * @return 0 if the two calendars are set to the same time, + * less than 0 if the time of this calendar is before that of + * cal, or more than 0 if the time of this calendar is after + * that of cal. + * + * @param cal the calendar to compare this instance with. + * @throws NullPointerException if cal is null. + * @throws IllegalArgumentException if either calendar has fields set to + * invalid values. + * @since 1.5 + */ + public int compareTo(Calendar cal) + { + long t1 = getTimeInMillis(); + long t2 = cal.getTimeInMillis(); + if(t1 == t2) + return 0; + if(t1 > t2) + return 1; + return -1; + } + /** * Return a clone of this object. */ -- 2.47.3