History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg2/java/util (48 of 18352 files). Show all

Unified · Split

48 files
  1. java/pkg2/java/util/BitSet.java +0 −0
  2. java/pkg2/java/util/Calendar.java +782 −0
  3. java/pkg2/java/util/Date.java +0 −0
  4. java/pkg2/java/util/Date_L.b +180 −0
  5. java/pkg2/java/util/Date_L.m +30 −0
  6. java/pkg2/java/util/Dictionary.java +0 −0
  7. java/pkg2/java/util/EmptyStackException.java +0 −0
  8. java/pkg2/java/util/Enumeration.java +0 −0
  9. java/pkg2/java/util/EventListener.java +0 −0
  10. java/pkg2/java/util/EventObject.java +0 −0
  11. java/pkg2/java/util/GregorianCalendar.java +557 −0
  12. java/pkg2/java/util/Hashtable.java +0 −0
  13. java/pkg2/java/util/ListResourceBundle.java +169 −0
  14. java/pkg2/java/util/Locale.java +631 −0
  15. java/pkg2/java/util/MissingResourceException.java +73 −0
  16. java/pkg2/java/util/NoSuchElementException.java +0 −0
  17. java/pkg2/java/util/Observable.java +0 −0
  18. java/pkg2/java/util/Observer.java +0 −0
  19. java/pkg2/java/util/Properties.java +0 −0
  20. java/pkg2/java/util/PropertyResourceBundle.java +121 −0
  21. java/pkg2/java/util/Random.java +0 −0
  22. java/pkg2/java/util/ResourceBundle.java +536 −0
  23. java/pkg2/java/util/ResourceBundle_L.b +48 −0
  24. java/pkg2/java/util/ResourceBundle_L.m +14 −0
  25. java/pkg2/java/util/SimpleTimeZone.java +246 −0
  26. java/pkg2/java/util/Stack.java +0 −0
  27. java/pkg2/java/util/StringTokenizer.java +0 −0
  28. java/pkg2/java/util/TimeZone.java +193 −0
  29. java/pkg2/java/util/TooManyListenersException.java +65 −0
  30. java/pkg2/java/util/Vector.java +0 −0
  31. java/pkg2/java/util/mkfile +88 −0
  32. java/pkg2/java/util/zip/CRC32.java +0 −0
  33. java/pkg2/java/util/zip/CRC32_L.b +51 −0
  34. java/pkg2/java/util/zip/CRC32_L.m +15 −0
  35. java/pkg2/java/util/zip/CheckedInputStream.java +0 −0
  36. java/pkg2/java/util/zip/CheckedOutputStream.java +0 −0
  37. java/pkg2/java/util/zip/Checksum.java +0 −0
  38. java/pkg2/java/util/zip/DataFormatException.java +0 −0
  39. java/pkg2/java/util/zip/GZIPInputStream.java +0 −0
  40. java/pkg2/java/util/zip/Inflater.java +0 −0
  41. java/pkg2/java/util/zip/InflaterInputStream.java +0 −0
  42. java/pkg2/java/util/zip/Inflater_L.b +77 −0
  43. java/pkg2/java/util/zip/Inflater_L.m +24 −0
  44. java/pkg2/java/util/zip/ZipConstants.java +0 −0
  45. java/pkg2/java/util/zip/ZipEntry.java +0 −0
  46. java/pkg2/java/util/zip/ZipException.java +0 −0
  47. java/pkg2/java/util/zip/ZipInputStream.java +0 −0
  48. java/pkg2/java/util/zip/mkfile +38 −0
java/pkg2/java/util/BitSet.java+0−0

Empty file added.

java/pkg2/java/util/Calendar.java+782−0
@@ -0,0 +1,782 @@
1+/*
2+ * @(#)Calendar.java 1.23 97/01/29
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+
31+package java.util;
32+
33+import java.io.Serializable;
34+import java.io.ObjectInputStream;
35+
36+/**
37+ * <code>Calendar</code> is an abstract base class for converting between
38+ * a <code>Date</code> object and a set of integer fields such as
39+ * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
40+ * and so on. (A <code>Date</code> object represents a specific instant in
41+ * time with millisecond precision. See
42+ * <a href="java.util.Date.html"><code>java.util.Date</code></a>
43+ * for information about the <code>Date</code> class.)
44+ *
45+ * <p>
46+ * Subclasses of <code>Calendar</code> interpret a <code>Date</code>
47+ * according to the rules of a specific calendar system. The JDK
48+ * provides one concrete subclass of <code>Calendar</code>:
49+ * <code>GregorianCalendar</code>. Future subclasses could represent
50+ * the various types of lunar calendars in use in many parts of the world.
51+ *
52+ * <p>
53+ * Like other locale-sensitive classes, <code>Calendar</code> provides a
54+ * class method, <code>getInstance</code>, for getting a generally useful
55+ * object of this type. <code>Calendar</code>'s <code>getInstance</code> method
56+ * returns a <code>GregorianCalendar</code> object whose
57+ * time fields have been initialized with the current date and time:
58+ * <blockquote>
59+ * <pre>
60+ * Calendar rightNow = Calendar.getInstance();
61+ * </pre>
62+ * </blockquote>
63+ *
64+ * <p>
65+ * A <code>Calendar</code> object can produce all the time field values
66+ * needed to implement the date-time formatting for a particular language
67+ * and calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
68+ *
69+ * <p>
70+ * When computing a <code>Date</code> from time fields, two special circumstances
71+ * may arise: there may be insufficient information to compute the
72+ * <code>Date</code> (such as only year and month but no day in the month),
73+ * or there may be inconsistent information (such as "Tuesday, July 15, 1996"
74+ * -- July 15, 1996 is actually a Monday).
75+ *
76+ * <p>
77+ * <strong>Insufficient information.</strong> The calendar will use default
78+ * information to specify the missing fields. This may vary by calendar; for
79+ * the Gregorian calendar, the default for a field is the same as that of the
80+ * start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc.
81+ *
82+ * <p>
83+ * <strong>Inconsistent information.</strong> The calendar will give preference
84+ * to the combinations of fields in the following order (and disregard other
85+ * inconsistent information).
86+ *
87+ * <blockquote>
88+ * <pre>
89+ * month + day-of-month
90+ * month + week-of-month + day-of-week
91+ * month + day-of-week-of-month + day-of-week
92+ * day-of-year
93+ * day-of-week + week-of-year
94+ * hour-of-day
95+ * ampm + hour-of-ampm
96+ * </pre>
97+ * </blockquote>
98+ *
99+ * <p>
100+ * <strong>Note:</strong> for some non-Gregorian calendars, different
101+ * fields may be necessary for complete disambiguation. For example, a full
102+ * specification of the historial Arabic astronomical calendar requires year,
103+ * month, day-of-month <em>and</em> day-of-week in some cases.
104+ *
105+ * <p>
106+ * <strong>Note:</strong> There are certain possible ambiguities in
107+ * interpretation of certain singular times, which are resolved in the
108+ * following ways:
109+ * <ol>
110+ * <li> 24:00:00 "belongs" to the following day. That is,
111+ * 23:59 on Dec 31, 1969 &lt; 24:00 on Jan 1, 1970 &lt; 24:01:00 on Jan 1, 1970
112+ *
113+ * <li> Although historically not precise, midnight also belongs to "am",
114+ * and noon belongs to "pm", so on the same day,
115+ * 12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm
116+ * </ol>
117+ *
118+ * <p>
119+ * The date or time format strings are not part of the definition of a
120+ * calendar, as those must be modifiable or overridable by the user at
121+ * runtime. Use <a href="java.text.DateFormat.html">java.text.DateFormat</a>
122+ * to format dates.
123+ *
124+ * <p>
125+ * <code>Calendar</code> provides an API for field "rolling", where fields
126+ * can be incremented or decremented, but wrap around. For example, rolling the
127+ * month up in the date "September 12, 1996" results in "October 12, 1996".
128+ *
129+ * <p>
130+ * <code>Calendar</code> also provides a date arithmetic function for
131+ * adding the specified (signed) amount of time to a particular time field.
132+ * For example, subtracting 5 days from the date "September 12, 1996" results
133+ * in "September 7, 1996".
134+ *
135+ * @see Date
136+ * @see GregorianCalendar
137+ * @see TimeZone
138+ * @see java.text.DateFormat
139+ * @version 1.17 06 Jan 1997
140+ * @author Mark Davis, David Goldsmith, Chen-Lieh Huang
141+ */
142+public abstract class Calendar implements Serializable, Cloneable {
143+
144+ /**
145+ * Useful constant for date and time. Used in time fields.
146+ * ERA is calendar specific.
147+ */
148+ public final static int ERA = 0;
149+ /**
150+ * Useful constant for date and time. Used in time fields.
151+ */
152+ public final static int YEAR = 1;
153+ /**
154+ * Useful constant for date and time. Used in time fields.
155+ */
156+ public final static int MONTH = 2;
157+ /**
158+ * Useful constant for date and time. Used in time fields.
159+ */
160+ public final static int WEEK_OF_YEAR = 3;
161+ /**
162+ * Useful constant for date and time. Used in time fields.
163+ */
164+ public final static int WEEK_OF_MONTH = 4;
165+ /**
166+ * Useful constant for date and time. Used in time fields.
167+ * DATE is the time field name for day-of-month.
168+ */
169+ public final static int DATE = 5;
170+ /**
171+ * Useful constant for date and time. Used in time fields.
172+ * This is a synonym for DATE.
173+ */
174+ public final static int DAY_OF_MONTH = 5;
175+ /**
176+ * Useful constant for date and time. Used in time fields.
177+ */
178+ public final static int DAY_OF_YEAR = 6;
179+ /**
180+ * Useful constant for date and time. Used in time fields.
181+ */
182+ public final static int DAY_OF_WEEK = 7;
183+ /**
184+ * Useful constant for date and time. Used in time fields.
185+ */
186+ public final static int DAY_OF_WEEK_IN_MONTH = 8;
187+ /**
188+ * Useful constant for date and time. Used in time fields.
189+ */
190+ public final static int AM_PM = 9;
191+ /**
192+ * Useful constant for date and time. Used in time fields.
193+ * HOUR is used for the 12-hour clock.
194+ */
195+ public final static int HOUR = 10;
196+ /**
197+ * Useful constant for date and time. Used in time fields.
198+ * HOUR_OF_DAY is used for the 24-hour clock.
199+ */
200+ public final static int HOUR_OF_DAY = 11;
201+ /**
202+ * Useful constant for date and time. Used in time fields.
203+ */
204+ public final static int MINUTE = 12;
205+ /**
206+ * Useful constant for date and time. Used in time fields.
207+ */
208+ public final static int SECOND = 13;
209+ /**
210+ * Useful constant for date and time. Used in time fields.
211+ */
212+ public final static int MILLISECOND = 14;
213+ /**
214+ * Useful constant for date and time. Used in time fields.
215+ */
216+ public final static int ZONE_OFFSET = 15;
217+ /**
218+ * Useful constant for date and time. Used in time fields.
219+ */
220+ public final static int DST_OFFSET = 16;
221+ /**
222+ * Useful constant for date and time.
223+ * FIELD_COUNT is used for the time field array creation.
224+ */
225+ public final static int FIELD_COUNT = 17;
226+
227+ /**
228+ * Useful constant for days of week. Used in GregorianCalendar.
229+ */
230+ public final static int SUNDAY = 1;
231+ /**
232+ * Useful constant for days of week. Used in GregorianCalendar.
233+ */
234+ public final static int MONDAY = 2;
235+ /**
236+ * Useful constant for days of week. Used in GregorianCalendar.
237+ */
238+ public final static int TUESDAY = 3;
239+ /**
240+ * Useful constant for days of week. Used in GregorianCalendar.
241+ */
242+ public final static int WEDNESDAY = 4;
243+ /**
244+ * Useful constant for days of week. Used in GregorianCalendar.
245+ */
246+ public final static int THURSDAY = 5;
247+ /**
248+ * Useful constant for days of week. Used in GregorianCalendar.
249+ */
250+ public final static int FRIDAY = 6;
251+ /**
252+ * Useful constant for days of week. Used in GregorianCalendar.
253+ */
254+ public final static int SATURDAY = 7;
255+ /**
256+ * Useful constant for month. Used in GregorianCalendar.
257+ * Note: Calendar month is now 0-based.
258+ */
259+ public final static int JANUARY = 0;
260+ /**
261+ * Useful constant for month. Used in GregorianCalendar.
262+ */
263+ public final static int FEBRUARY = 1;
264+ /**
265+ * Useful constant for month. Used in GregorianCalendar.
266+ */
267+ public final static int MARCH = 2;
268+ /**
269+ * Useful constant for month. Used in GregorianCalendar.
270+ */
271+ public final static int APRIL = 3;
272+ /**
273+ * Useful constant for month. Used in GregorianCalendar.
274+ */
275+ public final static int MAY = 4;
276+ /**
277+ * Useful constant for month. Used in GregorianCalendar.
278+ */
279+ public final static int JUNE = 5;
280+ /**
281+ * Useful constant for month. Used in GregorianCalendar.
282+ */
283+ public final static int JULY = 6;
284+ /**
285+ * Useful constant for month. Used in GregorianCalendar.
286+ */
287+ public final static int AUGUST = 7;
288+ /**
289+ * Useful constant for month. Used in GregorianCalendar.
290+ */
291+ public final static int SEPTEMBER = 8;
292+ /**
293+ * Useful constant for month. Used in GregorianCalendar.
294+ */
295+ public final static int OCTOBER = 9;
296+ /**
297+ * Useful constant for month. Used in GregorianCalendar.
298+ */
299+ public final static int NOVEMBER = 10;
300+ /**
301+ * Useful constant for month. Used in GregorianCalendar.
302+ */
303+ public final static int DECEMBER = 11;
304+ /**
305+ * Useful constant for month. Used in GregorianCalendar.
306+ * UNDECIMBER is an artifical name. This 13th month is for lunar
307+ * calendars.
308+ */
309+ public final static int UNDECIMBER = 12;
310+ /**
311+ * Useful constant for hour in 12-hour clock. Used in GregorianCalendar.
312+ */
313+ public final static int AM = 0;
314+ /**
315+ * Useful constant for hour in 12-hour clock. Used in GregorianCalendar.
316+ */
317+ public final static int PM = 1;
318+
319+ //
320+ // Internal notes:
321+ // Calendar contains two kinds of time representations: current "time" in
322+ // milliseconds, and a set of time "fields" representing the current time.
323+ // Calling setTime() method only sets the current time without recomputing
324+ // the time fields until the next get() method is called. Similarly,
325+ // calling one of the set() methods only sets time fields without
326+ // recomputing the current time value until the next getTime() method is
327+ // called.
328+ //
329+
330+ /**
331+ * The time fields containing values into which the millis is computed.
332+ */
333+ protected int fields[];
334+ /**
335+ * The flags which tell if a specified time field for the calendar is set.
336+ */
337+ protected boolean isSet[];
338+ /**
339+ * The current time set for the calendar.
340+ */
341+ protected long time;
342+ /**
343+ * The flag which indicates if the current time is set for the calendar.
344+ */
345+ protected boolean isTimeSet;
346+ /**
347+ * The flag which tells if the time fields are set for the calendar.
348+ */
349+ protected boolean areFieldsSet;
350+
351+ /**
352+ * @see #setLenient
353+ */
354+ private boolean lenient=true;
355+
356+ /**
357+ * Time zone affects the time calculation done by Calendar. Calendar uses
358+ * the time zone data to produce the local time. Both firstDayOfWeek
359+ * and minimalDaysInFirstWeek are locale-dependent. For example,
360+ * in US locale, firstDayOfWeek is SUNDAY; minimalDaysInFirstWeek is 1.
361+ * They are used to figure out the week count for a specific date for
362+ * a given locale. These must be set when a Calendar is constructed.
363+ */
364+ private TimeZone zone;
365+ private int firstDayOfWeek;
366+ private int minimalDaysInFirstWeek;
367+
368+ /**
369+ * Constructs a Calendar with the default time zone as returned
370+ * by TimeZone.getDefault(), and the default locale.
371+ * @see TimeZone#getDefault
372+ */
373+ protected Calendar()
374+ {
375+ throw new NoSuchElementException();
376+ }
377+
378+ /**
379+ * Constructs a Calendar with the given time zone and locale.
380+ * @param zone the given time zone.
381+ */
382+ protected Calendar(TimeZone zone, Locale aLocale)
383+ {
384+ throw new NoSuchElementException();
385+ }
386+
387+ /**
388+ * Gets a Calendar using the default timezone and locale.
389+ * @return a Calendar.
390+ */
391+ public static synchronized Calendar getInstance()
392+ {
393+ throw new NoSuchElementException();
394+ }
395+
396+ /**
397+ * Gets a Calendar using the given timezone and default locale.
398+ * @param zone the given timezone.
399+ * @return a Calendar.
400+ */
401+ public static synchronized Calendar getInstance(TimeZone zone)
402+ {
403+ throw new NoSuchElementException();
404+ }
405+
406+ /**
407+ * Gets a Calendar using the default timezone and given locale.
408+ * @param aLocale the given locale.
409+ * @return a Calendar.
410+ */
411+ public static synchronized Calendar getInstance(Locale aLocale)
412+ {
413+ throw new NoSuchElementException();
414+ }
415+
416+ /**
417+ * Gets a Calendar using the given timezone and given locale.
418+ * @param zone the given timezone.
419+ * @param aLocale the given locale.
420+ * @return a Calendar.
421+ */
422+ public static synchronized Calendar getInstance(TimeZone zone,
423+ Locale aLocale)
424+ {
425+ throw new NoSuchElementException();
426+ }
427+
428+ /**
429+ * Gets the set of locales for which Calendars are installed.
430+ * @return the set of locales for which Calendars are installed.
431+ */
432+ public static synchronized Locale[] getAvailableLocales()
433+ {
434+ throw new NoSuchElementException();
435+ }
436+
437+ /**
438+ * Converts Calendar's time field values to UTC as milliseconds.
439+ */
440+ protected abstract void computeTime();
441+
442+ /**
443+ * Converts UTC as milliseconds to time field values.
444+ * This allows you to sync up the time field values with
445+ * a new time that is set for the calendar.
446+ */
447+ protected abstract void computeFields();
448+
449+ /**
450+ * Gets this Calendar's current time.
451+ * @return the current time.
452+ */
453+ public final Date getTime() {
454+ throw new NoSuchElementException();
455+ }
456+
457+ /**
458+ * Sets this Calendar's current time with the given Date.
459+ * @param date the given Date.
460+ */
461+ public final void setTime(Date date) {
462+ throw new NoSuchElementException();
463+ }
464+
465+ /**
466+ * Gets this Calendar's current time as a long.
467+ * @return the current time as milliseconds from the epoch.
468+ */
469+ protected long getTimeInMillis() {
470+ throw new NoSuchElementException();
471+ }
472+
473+ /**
474+ * Sets this Calendar's current time from the given long value.
475+ * @param date the new time in milliseconds from the epoch.
476+ */
477+ protected void setTimeInMillis( long millis ) {
478+ throw new NoSuchElementException();
479+ }
480+
481+
482+ /**
483+ * Gets the value for a given time field.
484+ * @param field the given time field.
485+ * @return the value for the given time field.
486+ */
487+ public final int get(int field)
488+ {
489+ throw new NoSuchElementException();
490+ }
491+
492+ /**
493+ * Gets the value for a given time field. This is an internal
494+ * fast time field value getter for the subclasses.
495+ * @param field the given time field.
496+ * @return the value for the given time field.
497+ */
498+ protected final int internalGet(int field)
499+ {
500+ throw new NoSuchElementException();
501+ }
502+
503+ /**
504+ * Sets the time field with the given value.
505+ * @param field the given time field.
506+ * @param value the value to be set for the given time field.
507+ */
508+ public final void set(int field, int value)
509+ {
510+ throw new NoSuchElementException();
511+ }
512+
513+ /**
514+ * Sets the values for the fields year, month, and date.
515+ * @param year the value used to set the YEAR time field.
516+ * @param month the value used to set the MONTH time field.
517+ * Month value is 0-based. e.g., 0 for January.
518+ * @param date the value used to set the DATE time field.
519+ */
520+ public final void set(int year, int month, int date)
521+ {
522+ throw new NoSuchElementException();
523+ }
524+
525+ /**
526+ * Sets the values for the fields year, month, date, hour, and minute.
527+ * @param year the value used to set the YEAR time field.
528+ * @param month the value used to set the MONTH time field.
529+ * Month value is 0-based. e.g., 0 for January.
530+ * @param date the value used to set the DATE time field.
531+ * @param hour the value used to set the HOUR_OF_DAY time field.
532+ * @param minute the value used to set the MINUTE time field.
533+ */
534+ public final void set(int year, int month, int date, int hour, int minute)
535+ {
536+ throw new NoSuchElementException();
537+ }
538+
539+ /**
540+ * Sets the values for the fields year, month, date, hour, minute,
541+ * and second.
542+ * @param year the value used to set the YEAR time field.
543+ * @param month the value used to set the MONTH time field.
544+ * Month value is 0-based. e.g., 0 for January.
545+ * @param date the value used to set the DATE time field.
546+ * @param hour the value used to set the HOUR_OF_DAY time field.
547+ * @param minute the value used to set the MINUTE time field.
548+ * @param second the value used to set the SECOND time field.
549+ */
550+ public final void set(int year, int month, int date, int hour, int minute,
551+ int second)
552+ {
553+ throw new NoSuchElementException();
554+ }
555+
556+ /**
557+ * Clears the values of all the time fields.
558+ */
559+ public final void clear()
560+ {
561+ throw new NoSuchElementException();
562+ }
563+
564+ /**
565+ * Clears the value in the given time field.
566+ * @param field the time field to be cleared.
567+ */
568+ public final void clear(int field)
569+ {
570+ throw new NoSuchElementException();
571+ }
572+
573+ /**
574+ * Determines if the given time field has a value set.
575+ * @return true if the given time field has a value set; false otherwise.
576+ */
577+ public final boolean isSet(int field)
578+ {
579+ throw new NoSuchElementException();
580+ }
581+
582+ /**
583+ * Fills in any unset fields in the time field list.
584+ */
585+ protected void complete()
586+ {
587+ throw new NoSuchElementException();
588+ }
589+
590+ /**
591+ * Compares the time field records.
592+ * Equivalent to comparing result of conversion to UTC.
593+ * @param when the Calendar to be compared with this Calendar.
594+ * @return true if the current time of this Calendar is before
595+ * the time of Calendar when; false otherwise.
596+ */
597+ abstract public boolean before(Object when);
598+
599+ /**
600+ * Compares the time field records.
601+ * Equivalent to comparing result of conversion to UTC.
602+ * @param when the Calendar to be compared with this Calendar.
603+ * @return true if the current time of this Calendar is after
604+ * the time of Calendar when; false otherwise.
605+ */
606+ abstract public boolean after(Object when);
607+
608+ /**
609+ * Date Arithmetic function.
610+ * Adds the specified (signed) amount of time to the given time field,
611+ * based on the calendar's rules. For example, to subtract 5 days from
612+ * the current time of the calendar, you can achieve it by calling:
613+ * <p>add(Calendar.DATE, -5).
614+ * @param field the time field.
615+ * @param amount the amount of date or time to be added to the field.
616+ */
617+ abstract public void add(int field, int amount);
618+
619+ /**
620+ * Time Field Rolling function.
621+ * Rolls (up/down) a single unit of time on the given time field. For
622+ * example, to roll the current date up by one day, you can achieve it
623+ * by calling:
624+ * <p>roll(Calendar.DATE, true).
625+ * When rolling on the year or Calendar.YEAR field, it will roll the year
626+ * value in the range between 1 and the value returned by calling
627+ * getMaximum(Calendar.YEAR).
628+ * When rolling on the month or Calendar.MONTH field, other fields like
629+ * date might conflict and, need to be changed. For instance,
630+ * rolling the month on the date 01/31/96 will result in 03/02/96.
631+ * When rolling on the hour-in-day or Calendar.HOUR_OF_DAY field, it will
632+ * roll the hour value in the range between 0 and 23, which is zero-based.
633+ * @param field the time field.
634+ * @param up indicates if the value of the specified time field is to be
635+ * rolled up or rolled down. Use true if rolling up, false otherwise.
636+ */
637+ abstract public void roll(int field, boolean up);
638+
639+ /**
640+ * Sets the time zone with the given time zone value.
641+ * @param value the given time zone.
642+ */
643+ public void setTimeZone(TimeZone value)
644+ {
645+ throw new NoSuchElementException();
646+ }
647+
648+ /**
649+ * Gets the time zone.
650+ * @return the time zone object associated with this calendar.
651+ */
652+ public TimeZone getTimeZone()
653+ {
654+ throw new NoSuchElementException();
655+ }
656+
657+ /**
658+ * Specify whether or not date/time interpretation is to be lenient. With
659+ * lenient interpretation, a date such as "February 942, 1996" will be
660+ * treated as being equivalent to the 941st day after February 1, 1996.
661+ * With strict interpretation, such dates will cause an exception to be
662+ * thrown.
663+ *
664+ * @see java.text.DateFormat#setLenient
665+ */
666+ public void setLenient(boolean lenient)
667+ {
668+ throw new NoSuchElementException();
669+ }
670+
671+ /**
672+ * Tell whether date/time interpretation is to be lenient.
673+ */
674+ public boolean isLenient()
675+ {
676+ throw new NoSuchElementException();
677+ }
678+
679+ /**
680+ * Sets what the first day of the week is; e.g., Sunday in US,
681+ * Monday in France.
682+ * @param value the given first day of the week.
683+ */
684+ public void setFirstDayOfWeek(int value)
685+ {
686+ throw new NoSuchElementException();
687+ }
688+
689+ /**
690+ * Gets what the first day of the week is; e.g., Sunday in US,
691+ * Monday in France.
692+ * @return the first day of the week.
693+ */
694+ public int getFirstDayOfWeek()
695+ {
696+ throw new NoSuchElementException();
697+ }
698+
699+ /**
700+ * Sets what the minimal days required in the first week of the year are;
701+ * For example, if the first week is defined as one that contains the first
702+ * day of the first month of a year, call the method with value 1. If it
703+ * must be a full week, use value 7.
704+ * @param value the given minimal days required in the first week
705+ * of the year.
706+ */
707+ public void setMinimalDaysInFirstWeek(int value)
708+ {
709+ throw new NoSuchElementException();
710+ }
711+
712+ /**
713+ * Gets what the minimal days required in the first week of the year are;
714+ * e.g., if the first week is defined as one that contains the first day
715+ * of the first month of a year, getMinimalDaysInFirstWeek returns 1. If
716+ * the minimal days required must be a full week, getMinimalDaysInFirstWeek
717+ * returns 7.
718+ * @return the minimal days required in the first week of the year.
719+ */
720+ public int getMinimalDaysInFirstWeek()
721+ {
722+ throw new NoSuchElementException();
723+ }
724+
725+ /**
726+ * Gets the minimum value for the given time field.
727+ * e.g., for Gregorian DAY_OF_MONTH, 1.
728+ * @param field the given time field.
729+ * @return the minimum value for the given time field.
730+ */
731+ abstract public int getMinimum(int field);
732+
733+ /**
734+ * Gets the maximum value for the given time field.
735+ * e.g. for Gregorian DAY_OF_MONTH, 31.
736+ * @param field the given time field.
737+ * @return the maximum value for the given time field.
738+ */
739+ abstract public int getMaximum(int field);
740+
741+ /**
742+ * Gets the highest minimum value for the given field if varies.
743+ * Otherwise same as getMinimum(). For Gregorian, no difference.
744+ * @param field the given time field.
745+ * @return the highest minimum value for the given time field.
746+ */
747+ abstract public int getGreatestMinimum(int field);
748+
749+ /**
750+ * Gets the lowest maximum value for the given field if varies.
751+ * Otherwise same as getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
752+ * @param field the given time field.
753+ * @return the lowest maximum value for the given time field.
754+ */
755+ abstract public int getLeastMaximum(int field);
756+
757+ /**
758+ * Overrides Cloneable
759+ */
760+ public Object clone()
761+ {
762+ throw new NoSuchElementException();
763+ }
764+
765+
766+ // =======================privates===============================
767+
768+ /**
769+ * Both firstDayOfWeek and minimalDaysInFirstWeek are locale-dependent.
770+ * They are used to figure out the week count for a specific date for
771+ * a given locale. These must be set when a Calendar is constructed.
772+ * @param desiredLocale the given locale.
773+ */
774+ private void setWeekCountData(Locale desiredLocale)
775+ {
776+ throw new NoSuchElementException();
777+ }
778+
779+ private void readObject(ObjectInputStream s) {
780+ throw new NoSuchElementException();
781+ }
782+}
java/pkg2/java/util/Date.java+0−0

Empty file added.

java/pkg2/java/util/Date_L.b+180−0
@@ -0,0 +1,180 @@
1+implement Date_L;
2+
3+# javal v1.3 generated file: edit with care
4+
5+include "jni.m";
6+ jni : JNI;
7+ ClassModule,
8+ JString,
9+ JArray,
10+ JArrayI,
11+ JArrayC,
12+ JArrayB,
13+ JArrayS,
14+ JArrayJ,
15+ JArrayF,
16+ JArrayD,
17+ JArrayZ,
18+ JArrayJObject,
19+ JArrayJClass,
20+ JArrayJString,
21+ JClass,
22+ JThread,
23+ JObject : import jni;
24+
25+#>> extra pre includes here
26+include "daytime.m";
27+ localtime : ref Daytime->Tm;
28+ gmttime : ref Daytime->Tm;
29+ daytime : Daytime;
30+ sys : import jni;
31+ FALSE : import jni;
32+ TRUE : import jni;
33+month := array[] of {
34+ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
35+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
36+};
37+
38+#<<
39+
40+include "Date_L.m";
41+
42+#>> extra post includes here
43+
44+#<<
45+
46+init( jni_p : JNI )
47+{
48+ # save java native inteface mod instance
49+ jni = jni_p;
50+ #>>extra initialization here
51+ sys = jni->sys;
52+ daytime = load Daytime Daytime->PATH;
53+ if(daytime == nil)
54+ jni->InitError( sys->sprint( "java.util.Date: could not load %s: %r", Daytime->PATH ) );
55+ #<<
56+}
57+
58+toString_rString( this : ref Date_obj) : JString
59+{#>>
60+ if (this.expanded != byte TRUE)
61+ expand_V(this);
62+ if (this.expanded != byte TRUE)
63+ jni->ThrowException("java.lang.IllegalArgumentException", "could not expand time");
64+ s := daytime->text(localtime);
65+ return (jni->NewString( s));
66+}#<<
67+
68+toLocaleString_rString( this : ref Date_obj) : JString
69+{#>>
70+ s : string;
71+ #
72+ # put the date in the following format
73+ # 09-Sep-97 9:15:24 PM
74+ #
75+ if (this.expanded != byte TRUE)
76+ expand_V(this);
77+ if (this.expanded != byte TRUE)
78+ jni->ThrowException("java.lang.IllegalArgumentException", "could not expand time");
79+
80+ if ((int this.tm_hour) >= 12) {
81+ s = sys->sprint( "%.2d-%s-%.2d %d:%.2d:%.2d PM",
82+ int this.tm_mday,
83+ month[int this.tm_mon],
84+ this.tm_year,
85+ (int this.tm_hour) - 12,
86+ int this.tm_min,
87+ int this.tm_sec);
88+ } else {
89+ s = sys->sprint( "%.2d-%s-%.2d %d:%.2d:%.2d AM",
90+ int this.tm_mday,
91+ month[int this.tm_mon],
92+ this.tm_year,
93+ int this.tm_hour,
94+ int this.tm_min,
95+ int this.tm_sec);
96+ }
97+ return (jni->NewString( s));
98+}#<<
99+
100+toGMTString_rString( this : ref Date_obj) : JString
101+{#>>
102+ s : string;
103+ if (this.valueValid != byte TRUE)
104+ computeValue_V( this);
105+ if (this.valueValid != byte TRUE)
106+ jni->ThrowException("java.lang.IllegalArgumentException", "could not compute time");
107+ t := (big this.value) / big 1000;
108+ #10 Sep 1997 02:15:24 GMT
109+ s = sys->sprint( "%.2d %s %d %.2d:%.2d:%.2d GMT",
110+ int this.tm_mday,
111+ month[int this.tm_mon],
112+ this.tm_year + 1900,
113+ int this.tm_hour,
114+ int this.tm_min,
115+ int this.tm_sec);
116+
117+ gmttime = daytime->gmt(int t);
118+ return (jni->NewString( s));
119+}#<<
120+
121+expand_V( this : ref Date_obj)
122+{#>>
123+ #
124+ # this routine assumes there is a valid date stored
125+ # in this.value. If not, return error.
126+ #
127+ if (this.value <= (big 0)) {
128+ this.expanded = byte FALSE;
129+ this.tm_millis = 0;
130+ this.tm_sec = byte 0;
131+ this.tm_min = byte 0;
132+ this.tm_hour = byte 0;
133+ this.tm_mday = byte 0;
134+ this.tm_mon = byte 0;
135+ this.tm_wday = byte 0;
136+ this.tm_yday = 0;
137+ this.tm_year = 0;
138+ this.tm_isdst = 0;
139+ return;
140+ }
141+ t := (big this.value) / big 1000;
142+ localtime = daytime->local(int t);
143+ #
144+ # set the following to 0 since java code is not using them.
145+ #
146+ this.tm_millis = 0;
147+ this.tm_isdst = 0; # flag for alternate daylight savings time
148+ #
149+ # these values come from calculations done by local().
150+ #
151+ this.tm_sec = byte localtime.sec;
152+ this.tm_min = byte localtime.min;
153+ this.tm_hour = byte localtime.hour;
154+ this.tm_mday = byte localtime.mday; # day of the month - [1, 31]
155+ this.tm_mon = byte localtime.mon; # months since January - [0, 11]
156+ this.tm_wday = byte localtime.wday; # days since Sunday - [0, 6]
157+ this.tm_yday = localtime.yday; # days since January 1 - [0, 365]
158+ this.tm_year = localtime.year; # years since 1900
159+ this.expanded = byte TRUE;
160+}#<<
161+
162+computeValue_V( this : ref Date_obj)
163+{#>>
164+ now := daytime->now();
165+ localtime = daytime->local(now);
166+ localtime.sec = int this.tm_sec;
167+ localtime.min = int this.tm_min;
168+ localtime.hour = int this.tm_hour;
169+ localtime.mday = int this.tm_mday;
170+ localtime.mon = int this.tm_mon;
171+ localtime.year = int this.tm_year;
172+ localtime.wday = int this.tm_wday;
173+ localtime.yday = int this.tm_yday;
174+
175+ t := daytime->tm2epoch(localtime);
176+ this.value = (big t) * big 1000;
177+ this.valueValid = byte TRUE;
178+}#<<
179+
180+
java/pkg2/java/util/Date_L.m+30−0
@@ -0,0 +1,30 @@
1+# javal v1.3 generated file: edit with care
2+
3+Date_L : module
4+{
5+ Date_obj : adt
6+ {
7+ cl_mod : ClassModule;
8+ value : big;
9+ valueValid : byte;
10+ expanded : byte;
11+ tm_millis : int;
12+ tm_sec : byte;
13+ tm_min : byte;
14+ tm_hour : byte;
15+ tm_mday : byte;
16+ tm_mon : byte;
17+ tm_wday : byte;
18+ tm_yday : int;
19+ tm_year : int;
20+ tm_isdst : int;
21+ };
22+
23+ init : fn( jni_p : JNI );
24+ toString_rString : fn( this : ref Date_obj) : JString;
25+ toLocaleString_rString : fn( this : ref Date_obj) : JString;
26+ toGMTString_rString : fn( this : ref Date_obj) : JString;
27+ expand_V : fn( this : ref Date_obj);
28+ computeValue_V : fn( this : ref Date_obj);
29+
30+};
java/pkg2/java/util/Dictionary.java+0−0

Empty file added.

java/pkg2/java/util/EmptyStackException.java+0−0

Empty file added.

java/pkg2/java/util/Enumeration.java+0−0

Empty file added.

java/pkg2/java/util/EventListener.java+0−0

Empty file added.

java/pkg2/java/util/EventObject.java+0−0

Empty file added.

java/pkg2/java/util/GregorianCalendar.java+557−0
@@ -0,0 +1,557 @@
1+/*
2+ * @(#)GregorianCalendar.java 1.20 97/03/09
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+
31+package java.util;
32+
33+import java.io.ObjectInputStream;
34+
35+/**
36+ * <code>GregorianCalendar</code> is a concrete subclass of
37+ * <a href="java.util.Calendar.html"><code>Calendar</code></a>
38+ * and provides the standard calendar used by most of the world.
39+ *
40+ * <p>
41+ * The standard (Gregorian) calendar has 2 eras, BC and AD.
42+ *
43+ * <p>
44+ * This implementation handles a single discontinuity, which corresponds
45+ * by default to the date the Gregorian calendar was instituted (October 15,
46+ * 1582 in some countries, later in others). This cutover date may be changed
47+ * by the caller.
48+ *
49+ * <p>
50+ * Prior to the institution of the Gregorian calendar, New Year's Day was
51+ * March 25. To avoid confusion, this calendar always uses January 1. A manual
52+ * adjustment may be made if desired for dates that are prior to the Gregorian
53+ * changeover and which fall between January 1 and March 24.
54+ *
55+ * <p>
56+ * <strong>Example:</strong>
57+ * <blockquote>
58+ * <pre>
59+ * // get the supported ids for GMT-08:00 (Pacific Standard Time)
60+ * String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
61+ * // if no ids were returned, something is wrong. get out.
62+ * if (ids.length == 0)
63+ * System.exit(0);
64+ *
65+ * // begin output
66+ * System.out.println("Current Time");
67+ *
68+ * // create a Pacific Standard Time time zone
69+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
70+ *
71+ * // set up rules for daylight savings time
72+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
73+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
74+ *
75+ * // create a GregorianCalendar with the Pacific Daylight time zone
76+ * // and the current date and time
77+ * Calendar calendar = new GregorianCalendar(pdt);
78+ * Date trialTime = new Date();
79+ * calendar.setTime(trialTime);
80+ *
81+ * // print out a bunch of interesting things
82+ * System.out.println("ERA: " + calendar.get(Calendar.ERA));
83+ * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
84+ * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
85+ * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
86+ * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
87+ * System.out.println("DATE: " + calendar.get(Calendar.DATE));
88+ * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
89+ * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
90+ * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
91+ * System.out.println("DAY_OF_WEEK_IN_MONTH: "
92+ * + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
93+ * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
94+ * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
95+ * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
96+ * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
97+ * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
98+ * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
99+ * System.out.println("ZONE_OFFSET: "
100+ * + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
101+ * System.out.println("DST_OFFSET: "
102+ * + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
103+
104+ * System.out.println("Current Time, with hour reset to 3");
105+ * calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
106+ * calendar.set(Calendar.HOUR, 3);
107+ * System.out.println("ERA: " + calendar.get(Calendar.ERA));
108+ * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
109+ * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
110+ * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
111+ * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
112+ * System.out.println("DATE: " + calendar.get(Calendar.DATE));
113+ * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
114+ * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
115+ * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
116+ * System.out.println("DAY_OF_WEEK_IN_MONTH: "
117+ * + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
118+ * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
119+ * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
120+ * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
121+ * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
122+ * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
123+ * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
124+ * System.out.println("ZONE_OFFSET: "
125+ * + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
126+ * System.out.println("DST_OFFSET: "
127+ * + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
128+ * </pre>
129+ * </blockquote>
130+ *
131+ * @see Calendar
132+ * @see TimeZone
133+ * @version 1.20 03/09/97
134+ * @author David Goldsmith, Mark Davis, Chen-Lieh Huang
135+ */
136+public class GregorianCalendar extends Calendar {
137+
138+ // Internal notes:
139+ // This algorithm is based on the one presented on pp. 10-12 of
140+ // "Numerical Recipes in C", William H. Press, et. al., Cambridge
141+ // University Press 1988, ISBN 0-521-35465-X.
142+
143+ /**
144+ * Useful constant for GregorianCalendar.
145+ */
146+ public static final int BC = 0;
147+ /**
148+ * Useful constant for GregorianCalendar.
149+ */
150+ public static final int AD = 1;
151+
152+ // Note that the Julian date used here is not a true Julian date, since
153+ // it is measured from midnight, not noon.
154+
155+ private static final long julianDayOffset = 2440588;
156+ private static final int millisPerDay = 24 * 60 * 60 * 1000;
157+ private static final int numDays[]
158+ = {0,31,59,90,120,151,181,212,243,273,304,334}; // 0-based, for day-in-year
159+ private static final int leapNumDays[]
160+ = {0,31,60,91,121,152,182,213,244,274,305,335}; // 0-based, for day-in-year
161+ private static final int maxDaysInMonth[]
162+ = {31,28,31,30,31,30,31,31,30,31,30,31}; // 0-based
163+
164+ // This is measured from the standard epoch, not in Julian Days.
165+ // Default is 00:00:00 local time, October 15, 1582.
166+ private long gregorianCutover = -12219292800000L;
167+
168+ /**
169+ * Converts time as milliseconds to Julian date.
170+ * @param millis the given milliseconds.
171+ * @return the Julian date number.
172+ */
173+ private static final long millisToJulianDay(long millis)
174+ {
175+ throw new NoSuchElementException();
176+ }
177+
178+ /**
179+ * Converts Julian date to time as milliseconds.
180+ * @param julian the given Julian date number.
181+ * @return time as milliseconds.
182+ */
183+ private static final long julianDayToMillis(long julian)
184+ {
185+ throw new NoSuchElementException();
186+ }
187+
188+ /**
189+ * Constructs a default GregorianCalendar using the current time
190+ * in the default time zone with the default locale.
191+ */
192+ public GregorianCalendar()
193+ {
194+ throw new NoSuchElementException();
195+ }
196+
197+ /**
198+ * Constructs a GregorianCalendar based on the current time
199+ * in the given time zone with the default locale.
200+ * @param zone the given time zone.
201+ */
202+ public GregorianCalendar(TimeZone zone)
203+ {
204+ throw new NoSuchElementException();
205+ }
206+
207+ /**
208+ * Constructs a GregorianCalendar based on the current time
209+ * in the default time zone with the given locale.
210+ * @param aLocale the given locale.
211+ */
212+ public GregorianCalendar(Locale aLocale)
213+ {
214+ throw new NoSuchElementException();
215+ }
216+
217+ /**
218+ * Constructs a GregorianCalendar based on the current time
219+ * in the given time zone with the given locale.
220+ * @param zone the given time zone.
221+ * @param aLocale the given locale.
222+ */
223+ public GregorianCalendar(TimeZone zone, Locale aLocale)
224+ {
225+ throw new NoSuchElementException();
226+ }
227+
228+ /**
229+ * Constructs a GregorianCalendar with the given date set
230+ * in the default time zone with the default locale.
231+ * @param year the value used to set the YEAR time field in the calendar.
232+ * @param month the value used to set the MONTH time field in the calendar.
233+ * Month value is 0-based. e.g., 0 for January.
234+ * @param date the value used to set the DATE time field in the calendar.
235+ */
236+ public GregorianCalendar(int year, int month, int date)
237+ {
238+ throw new NoSuchElementException();
239+ }
240+
241+ /**
242+ * Constructs a GregorianCalendar with the given date
243+ * and time set for the default time zone with the default locale.
244+ * @param year the value used to set the YEAR time field in the calendar.
245+ * @param month the value used to set the MONTH time field in the calendar.
246+ * Month value is 0-based. e.g., 0 for January.
247+ * @param date the value used to set the DATE time field in the calendar.
248+ * @param hour the value used to set the HOUR_OF_DAY time field
249+ * in the calendar.
250+ * @param minute the value used to set the MINUTE time field
251+ * in the calendar.
252+ */
253+ public GregorianCalendar(int year, int month, int date, int hour,
254+ int minute)
255+ {
256+ throw new NoSuchElementException();
257+ }
258+
259+ /**
260+ * Constructs a GregorianCalendar with the given date
261+ * and time set for the default time zone with the default locale.
262+ * @param year the value used to set the YEAR time field in the calendar.
263+ * @param month the value used to set the MONTH time field in the calendar.
264+ * Month value is 0-based. e.g., 0 for January.
265+ * @param date the value used to set the DATE time field in the calendar.
266+ * @param hour the value used to set the HOUR_OF_DAY time field
267+ * in the calendar.
268+ * @param minute the value used to set the MINUTE time field
269+ * in the calendar.
270+ * @param second the value used to set the SECOND time field
271+ * in the calendar.
272+ */
273+ public GregorianCalendar(int year, int month, int date, int hour,
274+ int minute, int second)
275+ {
276+ throw new NoSuchElementException();
277+ }
278+
279+ /**
280+ * Sets the GregorianCalendar change date. This is the point when the
281+ * switch from Julian dates to Gregorian dates occurred. Default is
282+ * 00:00:00 local time, October 15, 1582. Previous to this time and date
283+ * will be Julian dates.
284+ *
285+ * @param date the given Gregorian cutover date.
286+ */
287+ public void setGregorianChange(Date date)
288+ {
289+ throw new NoSuchElementException();
290+ }
291+
292+ /**
293+ * Gets the Gregorian Calendar change date. This is the point when the
294+ * switch from Julian dates to Gregorian dates occurred. Default is
295+ * 00:00:00 local time, October 15, 1582. Previous to
296+ * this time and date will be Julian dates.
297+ * @return the Gregorian cutover time for this calendar.
298+ */
299+ public final Date getGregorianChange()
300+ {
301+ throw new NoSuchElementException();
302+ }
303+
304+ // Converts the time field list to the time as milliseconds.
305+ private final void timeToFields(long theTime)
306+ {
307+ throw new NoSuchElementException();
308+ }
309+
310+
311+ /**
312+ * @param date day-of-year or day-of-month. Month is zero based.
313+ * @param day day-of-week for date. Zero based.
314+ * @param firstDatesDay the day-of-week for the first day of the year
315+ * or month.
316+ * @param firstDay the first day of the week for the calendar.
317+ * e.g. Sunday for US.
318+ * @param minimalDaysInFirstWeek the minimal number of days in the
319+ * week to qualify as the first week; otherwise partial week belongs
320+ * to last (year/month).
321+ * <note> weekCount is the number of weeks in the (year/month) for the
322+ * date. If zero, belongs to last (year/month). You MUST add the date to
323+ * the last day of the previous (year/month), and call this method again!
324+ * @return week number, one-based.
325+ */
326+ private static int weekNumber(int date, int day, int firstDatesDay,
327+ int firstDay, int minimalDaysInFirstWeek)
328+ {
329+ throw new NoSuchElementException();
330+ }
331+
332+
333+ // XXX Currently this method has a bug, and it is not being used.
334+ private static int dateFrom(int weekNumber, int day, int firstDatesDay,
335+ int firstDay, int minimalDaysInFirstWeek)
336+ {
337+ throw new NoSuchElementException();
338+ }
339+
340+
341+ /**
342+ * Determines if the given year is a leap year. Returns true if the
343+ * given year is a leap year.
344+ * @param year the given year.
345+ * @return true if the given year is a leap year; false otherwise.
346+ */
347+ public boolean isLeapYear(int year)
348+ {
349+ throw new NoSuchElementException();
350+ }
351+
352+ /**
353+ * Overrides Calendar
354+ * Converts UTC as milliseconds to time field values.
355+ */
356+ protected void computeFields()
357+ {
358+ throw new NoSuchElementException();
359+ }
360+
361+ /**
362+ * Validates the values of the set time fields.
363+ */
364+ private boolean validateFields()
365+ {
366+ throw new NoSuchElementException();
367+ }
368+
369+ /**
370+ * Validates the value of the given time field.
371+ */
372+ private boolean boundsCheck(int value, int field)
373+ {
374+ throw new NoSuchElementException();
375+ }
376+
377+ /**
378+ * Overrides Calendar
379+ * Converts time field values to UTC as milliseconds.
380+ * @exception IllegalArgumentException if an unknown field is given.
381+ */
382+ protected void computeTime()
383+ {
384+ throw new NoSuchElementException();
385+ }
386+
387+ /**
388+ * Overrides Cloneable
389+ */
390+ public Object clone()
391+ {
392+ throw new NoSuchElementException();
393+ }
394+
395+ /**
396+ * Override hashCode.
397+ * Generates the hash code for the GregorianCalendar object
398+ */
399+ public synchronized int hashCode()
400+ {
401+ throw new NoSuchElementException();
402+ }
403+
404+ /**
405+ * Overrides Calendar
406+ * Compares the time field records.
407+ * Equivalent to comparing result of conversion to UTC.
408+ * Please see Calendar.equals for descriptions on parameters and
409+ * the return value.
410+ */
411+ public boolean equals(Object obj)
412+ {
413+ throw new NoSuchElementException();
414+ }
415+
416+ /**
417+ * Overrides Calendar
418+ * Compares the time field records.
419+ * Equivalent to comparing result of conversion to UTC.
420+ * Please see Calendar.before for descriptions on parameters and
421+ * the return value.
422+ */
423+ public boolean before(Object when)
424+ {
425+ throw new NoSuchElementException();
426+ }
427+
428+ /**
429+ * Overrides Calendar
430+ * Compares the time field records.
431+ * Equivalent to comparing result of conversion to UTC.
432+ * Please see Calendar.after for descriptions on parameters and
433+ * the return value.
434+ */
435+ public boolean after(Object when)
436+ {
437+ throw new NoSuchElementException();
438+ }
439+
440+ /**
441+ * Overrides Calendar
442+ * Date Arithmetic function.
443+ * Adds the specified (signed) amount of time to the given time field,
444+ * based on the calendar's rules.
445+ * @param field the time field.
446+ * @param amount the amount of date or time to be added to the field.
447+ * @exception IllegalArgumentException if an unknown field is given.
448+ */
449+ public void add(int field, int amount)
450+ {
451+ throw new NoSuchElementException();
452+ }
453+
454+
455+ /**
456+ * Overrides Calendar
457+ * Time Field Rolling function.
458+ * Rolls (up/down) a single unit of time on the given time field.
459+ * @param field the time field.
460+ * @param up Indicates if rolling up or rolling down the field value.
461+ * @exception IllegalArgumentException if an unknown field value is given.
462+ */
463+ public void roll(int field, boolean up)
464+ {
465+ throw new NoSuchElementException();
466+ }
467+
468+
469+ // Roll the time field value down by 1.
470+ private void rollDown(int field)
471+ {
472+ throw new NoSuchElementException();
473+ }
474+
475+
476+ /**
477+ * <pre>
478+ * Field names Minimum Greatest Minimum Least Maximum Maximum
479+ * ----------- ------- ---------------- ------------- -------
480+ * ERA 0 0 1 1
481+ * YEAR 1 1 5,000,000 5,000,000
482+ * MONTH 0 0 11 11
483+ * WEEK_OF_YEAR 1 1 53 54
484+ * WEEK_OF_MONTH 1 1 4 6
485+ * DAY_OF_MONTH 1 1 28 31
486+ * DAY_OF_YEAR 1 1 365 366
487+ * DAY_OF_WEEK 1 1 7 7
488+ * DAY_OF_WEEK_IN_MONTH -1 -1 4 6
489+ * AM_PM 0 0 1 1
490+ * HOUR 0 0 11 12
491+ * HOUR_OF_DAY 0 0 23 23
492+ * MINUTE 0 0 59 59
493+ * SECOND 0 0 59 59
494+ * MILLISECOND 0 0 999 999
495+ * ZONE_OFFSET -12*60*60*1000 -12*60*60*1000 12*60*60*1000 12*60*60*1000
496+ * DST_OFFSET 0 0 1*60*60*1000 1*60*60*1000
497+ * </pre>
498+ */
499+ private static final int MinValues[]
500+ = {0,1,0,1,1,1,1,1,-1,0,0,0,0,0,0,-12*60*60*1000,0};
501+ private static final int GreatestMinValues[]
502+ = {0,1,0,1,1,1,1,1,-1,0,0,0,0,0,0,-12*60*60*1000,0};// same as MinValues
503+ private static final int LeastMaxValues[]
504+ = {1,5000000,11,53,4,28,365,7,4,1,11,23,59,59,999,
505+ 12*60*60*1000,1*60*60*1000};
506+ private static final int MaxValues[]
507+ = {1,5000000,11,54,6,31,366,7,6,1,12,23,59,59,999,
508+ 12*60*60*1000,1*60*60*1000};
509+
510+ /**
511+ * Returns minimum value for the given field.
512+ * e.g. for Gregorian DAY_OF_MONTH, 1
513+ * Please see Calendar.getMinimum for descriptions on parameters and
514+ * the return value.
515+ */
516+ public int getMinimum(int field)
517+ {
518+ throw new NoSuchElementException();
519+ }
520+
521+ /**
522+ * Returns maximum value for the given field.
523+ * e.g. for Gregorian DAY_OF_MONTH, 31
524+ * Please see Calendar.getMaximum for descriptions on parameters and
525+ * the return value.
526+ */
527+ public int getMaximum(int field)
528+ {
529+ throw new NoSuchElementException();
530+ }
531+
532+ /**
533+ * Returns highest minimum value for the given field if varies.
534+ * Otherwise same as getMinimum(). For Gregorian, no difference.
535+ * Please see Calendar.getGreatestMinimum for descriptions on parameters
536+ * and the return value.
537+ */
538+ public int getGreatestMinimum(int field)
539+ {
540+ throw new NoSuchElementException();
541+ }
542+
543+ /**
544+ * Returns lowest maximum value for the given field if varies.
545+ * Otherwise same as getMaximum(). For Gregorian DAY_OF_MONTH, 28
546+ * Please see Calendar.getLeastMaximum for descriptions on parameters and
547+ * the return value.
548+ */
549+ public int getLeastMaximum(int field)
550+ {
551+ throw new NoSuchElementException();
552+ }
553+
554+ private void readObject(ObjectInputStream s) {
555+ throw new NoSuchElementException();
556+ }
557+}
java/pkg2/java/util/Hashtable.java+0−0

Empty file added.

java/pkg2/java/util/ListResourceBundle.java+169−0
@@ -0,0 +1,169 @@
1+/*
2+ * @(#)ListResourceBundle.java 1.6 97/01/29
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+
31+package java.util;
32+import java.util.Hashtable;
33+
34+/**
35+ * <code>ListResourceBundle</code> is a abstract subclass of
36+ * <code>ResourceBundle</code> that manages resources for a locale
37+ * in a convenient and easy to use list. See <code>ResourceBundle</code> for
38+ * more information about resource bundles in general.
39+ *
40+ * <P>
41+ * Subclasses must override <code>getContents</code> and provide an array,
42+ * where each item in the array is a pair of objects.
43+ * The first element of each pair is a <code>String</code> key, and the second
44+ * is the value associated with that key.
45+ *
46+ * <p>
47+ * In the following example, the keys are of the form "s1"... The actual
48+ * keys are entirely up to your choice, so long as they are the same as
49+ * the keys you use in your program to retrieve the objects from the bundle.
50+ * Keys are case-sensitive. <code>MyResource</code> is the default version
51+ * of the bundle family, and <code>MyResource_fr</code> is the french version:
52+ * <blockquote>
53+ * <pre>
54+ * //====================
55+ * class MyResource extends ListResourceBundle {
56+ * public Object[][] getContents() {
57+ * return contents;
58+ * }
59+ * static final Object[][] contents = {
60+ * // LOCALIZE THIS
61+ * {"s1", "3"}, // starting value in choice field
62+ * {"s2", "MyDisk"}, // starting value in string field
63+ * {"s3", "3 Mar 96"}, // starting value in date field
64+ * {"s4", "The disk '{1}' contained {0} on {2}."}, // initial pattern
65+ * {"s5", "0"}, // first choice number
66+ * {"s6", "no files"}, // first choice value
67+ * {"s7", "1"}, // second choice number
68+ * {"s8", "one file"}, // second choice value
69+ * {"s9", "2"}, // third choice number
70+ * {"s10", "{0}|3 files"}, // third choice value
71+ * {"s11", "format threw an exception: {0}"}, // generic exception message
72+ * {"s12", "ERROR"}, // what to show in field in case of error
73+ * {"s14", "Result"}, // label for formatted stuff
74+ * {"s13", "Dialog"}, // standard font
75+ * {"s15", "Pattern"}, // label for standard pattern
76+ * {"s16", new Dimension(1,5)} // real object, not just string
77+ * // END OF MATERIAL TO LOCALIZE
78+ * };
79+ * }
80+ * //====================
81+ * class MyResource_fr extends ListResourceBundle {
82+ * public Object[][] getContents() {
83+ * return contents;
84+ }
85+ * static final Object[][] contents = {
86+ * // LOCALIZE THIS
87+ * {"s1", "3"}, // starting value in choice field
88+ * {"s2", "MonDisk"}, // starting value in string field
89+ * {"s3", "3 Mar 96"}, // starting value in date field
90+ * {"s4", "Le disk '{1}' a {0} a {2}."}, // initial pattern
91+ * {"s5", "0"}, // first choice number
92+ * {"s6", "pas de files"}, // first choice value
93+ * {"s7", "1"}, // second choice number
94+ * {"s8", "une file"}, // second choice value
95+ * {"s9", "2"}, // third choice number
96+ * {"s10", "{0}|3 files"}, // third choice value
97+ * {"s11", "Le format a jete une exception: {0}"}, // generic exception message
98+ * {"s12", "ERROR"}, // what to show in field in case of error
99+ * {"s14", "Resulte"}, // label for formatted stuff
100+ * {"s13", "Dialogue"}, // standard font
101+ * {"s15", "Pattern"}, // label for standard pattern
102+ * {"s16", new Dimension(1,3)} // real object, not just string
103+ * // END OF MATERIAL TO LOCALIZE
104+ * };
105+ * }
106+ * </pre>
107+ * </blockquote>
108+ * @see ResourceBundle
109+ * @see PropertyResourceBundle
110+ */
111+public abstract class ListResourceBundle extends ResourceBundle {
112+ /**
113+ * Override of ResourceBundle, same semantics
114+ */
115+ public final Object handleGetObject(String key) {
116+ // lazily load the lookup hashtable.
117+ if (lookup == null) {
118+ loadLookup();
119+ }
120+ return lookup.get(key); // this class ignores locales
121+ }
122+
123+ /**
124+ * Implementation of ResourceBundle.getKeys.
125+ */
126+ public Enumeration getKeys() {
127+ // lazily load the lookup hashtable.
128+ if (lookup == null) {
129+ loadLookup();
130+ }
131+ Enumeration result = null;
132+ if (parent != null) {
133+ Hashtable temp = new Hashtable();
134+ for (Enumeration parentKeys = parent.getKeys() ;
135+ parentKeys.hasMoreElements() ; /* nothing */) {
136+ temp.put(parentKeys.nextElement(), this);
137+ }
138+ for (Enumeration thisKeys = lookup.keys();
139+ thisKeys.hasMoreElements() ; /* nothing */) {
140+ temp.put(thisKeys.nextElement(), this);
141+ }
142+ result = temp.keys();
143+ } else {
144+ result = lookup.keys();
145+ }
146+ return result;
147+ }
148+
149+ /**
150+ * See class description.
151+ */
152+ abstract protected Object[][] getContents();
153+
154+ // ==================privates====================
155+
156+ /**
157+ * We lazily load the lookup hashtable. This function does the
158+ * loading.
159+ */
160+ private void loadLookup() {
161+ Object[][] contents = getContents();
162+ lookup = new Hashtable(contents.length);
163+ for (int i = 0; i < contents.length; ++i) {
164+ lookup.put(contents[i][0],contents[i][1]);
165+ }
166+ }
167+
168+ private Hashtable lookup = null;
169+}
java/pkg2/java/util/Locale.java+631−0
@@ -0,0 +1,631 @@
1+/*
2+ * @(#)Locale.java 1.21 97/01/29
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+
31+package java.util;
32+import java.io.Serializable;
33+
34+/**
35+ *
36+ * A <code>Locale</code> object represents a specific geographical, political,
37+ * or cultural region. An operation that requires a <code>Locale</code> to perform
38+ * its task is called <em>locale-sensitive</em> and uses the <code>Locale</code>
39+ * to tailor information for the user. For example, displaying a number
40+ * is a locale-sensitive operation--the number should be formatted
41+ * according to the customs/conventions of the user's native country,
42+ * region, or culture.
43+ *
44+ * <P>
45+ * You create a <code>Locale</code> object using one of the two constructors in
46+ * this class:
47+ * <blockquote>
48+ * <pre>
49+ * Locale(String language, String country)
50+ * Locale(String language, String country, String variant)
51+ * </pre>
52+ * </blockquote>
53+ * The first argument to both constructors is a valid <STRONG>ISO
54+ * Language Code.</STRONG> These codes are the lower-case two-letter
55+ * codes as defined by ISO-639.
56+ * You can find a full list of these codes at a number of sites, such as:
57+ * <BR><a href ="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">
58+ * <code>http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt</code></a>
59+ *
60+ * <P>
61+ * The second argument to both constructors is a valid <STRONG>ISO Country
62+ * Code.</STRONG> These codes are the upper-case two-letter codes
63+ * as defined by ISO-3166.
64+ * You can find a full list of these codes at a number of sites, such as:
65+ * <BR><a href="http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html">
66+ * <code>http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</code></a>
67+ *
68+ * <P>
69+ * The second constructor requires a third argument--the <STRONG>Variant.</STRONG>
70+ * The Variant codes are vendor and browser-specific.
71+ * For example, use WIN for Windows, MAC for Macintosh, and POSIX for POSIX.
72+ * Where there are two variants, separate them with an underscore, and
73+ * put the most important one first. For
74+ * example, a Traditional Spanish collation might be referenced, with
75+ * "ES", "ES", "Traditional_WIN".
76+ *
77+ * <P>
78+ * Because a <code>Locale</code> object is just an identifier for a region,
79+ * no validity check is performed when you construct a <code>Locale</code>.
80+ * If you want to see whether particular resources are available for the
81+ * <code>Locale</code> you construct, you must query those resources. For
82+ * example, ask the <code>NumberFormat</code> for the locales it supports
83+ * using its <code>getAvailableLocales</code> method.
84+ * <BR><STRONG>Note:</STRONG> When you ask for a resource for a particular
85+ * locale, you get back the best available match, not necessarily
86+ * precisely what you asked for. For more information, look at
87+ * <a href="java.util.ResourceBundle.html"><code>ResourceBundle</code></a>.
88+ *
89+ * <P>
90+ * The <code>Locale</code> class provides a number of convenient constants
91+ * that you can use to create <code>Locale</code> objects for commonly used
92+ * locales. For example, the following creates a <code>Locale</code> object
93+ * for the United States:
94+ * <blockquote>
95+ * <pre>
96+ * Locale.US
97+ * </pre>
98+ * </blockquote>
99+ *
100+ * <P>
101+ * Once you've created a <code>Locale</code> you can query it for information about
102+ * itself. Use <code>getCountry</code> to get the ISO Country Code and
103+ * <code>getLanguage</code> to get the ISO Language Code. You can
104+ * use <code>getDisplayCountry</code> to get the
105+ * name of the country suitable for displaying to the user. Similarly,
106+ * you can use <code>getDisplayLanguage</code> to get the name of
107+ * the language suitable for displaying to the user. Interestingly,
108+ * the <code>getDisplayXXX</code> methods are themselves locale-sensitive
109+ * and have two versions: one that uses the default locale and one
110+ * that uses the locale specified as an argument.
111+ *
112+ * <P>
113+ * The JDK provides a number of classes that perform locale-sensitive
114+ * operations. For example, the <code>NumberFormat</code> class formats
115+ * numbers, currency, or percentages in a locale-sensitive manner. Classes
116+ * such as <code>NumberFormat</code> have a number of convenience methods
117+ * for creating a default object of that type. For example, the
118+ * <code>NumberFormat</code> class provides these three convenience methods
119+ * for creating a default <code>NumberFormat</code> object:
120+ * <blockquote>
121+ * <pre>
122+ * NumberFormat.getInstance()
123+ * NumberFormat.getCurrencyInstance()
124+ * NumberFormat.getPercentInstance()
125+ * </pre>
126+ * </blockquote>
127+ * These methods have two variants; one with an explicit locale
128+ * and one without; the latter using the default locale.
129+ * <blockquote>
130+ * <pre>
131+ * NumberFormat.getInstance(myLocale)
132+ * NumberFormat.getCurrencyInstance(myLocale)
133+ * NumberFormat.getPercentInstance(myLocale)
134+ * </pre>
135+ * </blockquote>
136+ * A <code>Locale</code> is the mechanism for identifying the kind of object
137+ * (<code>NumberFormat</code>) that you would like to get. The locale is
138+ * <STRONG>just</STRONG> a mechanism for identifying objects,
139+ * <STRONG>not</STRONG> a container for the objects themselves.
140+ *
141+ * <P>
142+ * Each class that performs locale-sensitive operations allows you
143+ * to get all the available objects of that type. You can sift
144+ * through these objects by language, country, or variant,
145+ * and use the display names to present a menu to the user.
146+ * For example, you can create a menu of all the collation objects
147+ * suitable for a given language. Such classes must implement these
148+ * three class methods:
149+ * <blockquote>
150+ * <pre>
151+ * public static Locale[] getAvailableLocales()
152+ * public static String getDisplayName(Locale objectLocale,
153+ * Locale displayLocale)
154+ * public static final String getDisplayName(Locale objectLocale)
155+ * // getDisplayName will throw MissingResourceException if the locale
156+ * // is not one of the available locales.
157+ * </pre>
158+ * </blockquote>
159+ *
160+ * @see ResourceBundle
161+ * @see java.text.Format
162+ * @see java.text.NumberFormat
163+ * @see java.text.Collation
164+ * @version 1.21 29 Jan 1997
165+ * @author Mark Davis
166+ */
167+
168+public final class Locale implements Cloneable, Serializable {
169+
170+ /** Useful constant for language.
171+ */
172+ static public final Locale ENGLISH = new Locale("en","","");
173+
174+ /** Useful constant for language.
175+ */
176+ static public final Locale FRENCH = new Locale("fr","","");
177+
178+ /** Useful constant for language.
179+ */
180+ static public final Locale GERMAN = new Locale("de","","");
181+
182+ /** Useful constant for language.
183+ */
184+ static public final Locale ITALIAN = new Locale("it","","");
185+
186+ /** Useful constant for language.
187+ */
188+ static public final Locale JAPANESE = new Locale("ja","","");
189+
190+ /** Useful constant for language.
191+ */
192+ static public final Locale KOREAN = new Locale("ko","","");
193+
194+ /** Useful constant for language.
195+ */
196+ static public final Locale CHINESE = new Locale("zh","","");
197+
198+ /** Useful constant for language.
199+ */
200+ static public final Locale SIMPLIFIED_CHINESE = new Locale("zh","CN","");
201+
202+ /** Useful constant for language.
203+ */
204+ static public final Locale TRADITIONAL_CHINESE = new Locale("zh","TW","");
205+
206+ /** Useful constant for country.
207+ */
208+ static public final Locale FRANCE = new Locale("fr","FR","");
209+
210+ /** Useful constant for country.
211+ */
212+ static public final Locale GERMANY = new Locale("de","DE","");
213+
214+ /** Useful constant for country.
215+ */
216+ static public final Locale ITALY = new Locale("it","IT","");
217+
218+ /** Useful constant for country.
219+ */
220+ static public final Locale JAPAN = new Locale("ja","JP","");
221+
222+ /** Useful constant for country.
223+ */
224+ static public final Locale KOREA = new Locale("ko","KR","");
225+
226+ /** Useful constant for country.
227+ */
228+ static public final Locale CHINA = new Locale("zh","CN","");
229+
230+ /** Useful constant for country.
231+ */
232+ static public final Locale PRC = new Locale("zh","CN","");
233+
234+ /** Useful constant for country.
235+ */
236+ static public final Locale TAIWAN = new Locale("zh","TW","");
237+
238+ /** Useful constant for country.
239+ */
240+ static public final Locale UK = new Locale("en","GB","");
241+
242+ /** Useful constant for country.
243+ */
244+ static public final Locale US = new Locale("en","US","");
245+
246+ /** Useful constant for country.
247+ */
248+ static public final Locale CANADA = new Locale("en","CA","");
249+
250+ /** Useful constant for country.
251+ */
252+ static public final Locale CANADA_FRENCH = new Locale("fr","CA","");
253+
254+ /**
255+ * Construct a locale from language, country, variant.
256+ * @param language lowercase two-letter ISO-639 code.
257+ * @param country uppercase two-letter ISO-3166 code.
258+ * @param variant vendor and browser specific code. See class description.
259+ */
260+ public Locale(String language, String country, String variant) {
261+ this.language = toLowerCase(language);
262+ this.country = toUpperCase(country);
263+ this.variant = toUpperCase(variant);
264+ }
265+
266+ /**
267+ * Construct a locale from language, country.
268+ * @param language lowercase two-letter ISO-639 code.
269+ * @param country uppercase two-letter ISO-3166 code.
270+ */
271+ public Locale(String language, String country) {
272+ this.language = toLowerCase(language);
273+ this.country = toUpperCase(country);
274+ this.variant = "";
275+ }
276+
277+ /**
278+ * Common method of getting the current default Locale.
279+ * Used for the presentation: menus, dialogs, etc.
280+ * Generally set once when your applet or application is initialized,
281+ * then never reset. (If you do reset the default locale, you
282+ * probably want to reload your GUI, so that the change is reflected
283+ * in your interface.)
284+ * <p>More advanced programs will allow users to use different locales
285+ * for different fields, e.g. in a spreadsheet.
286+ * <BR>Note that the initial setting will match the host system.
287+ */
288+ public static synchronized Locale getDefault() {
289+ if (defaultLocale == null) {
290+ String language = System.getProperty("user.language", "EN");
291+ String region = System.getProperty("user.region", "");
292+
293+ defaultLocale = new Locale(language, region);
294+ }
295+ return defaultLocale;
296+ }
297+
298+ /**
299+ * Sets the default.
300+ * Normally set once at the beginning of applet or application,
301+ * then never reset. <code>setDefault</code> does not reset the host locale.
302+ * @param newLocale Locale to set to.
303+ */
304+ public static synchronized void setDefault(Locale newLocale) {
305+ SecurityManager security = System.getSecurityManager();
306+ if (security != null) {
307+ security.checkPropertyAccess("user.language");
308+ }
309+ defaultLocale = newLocale;
310+ }
311+
312+ /**
313+ * Getter for programmatic name of field,
314+ * an lowercased two-letter ISO-639 code.
315+ * @see #getDisplayLanguage
316+ */
317+ public String getLanguage() {
318+ return language;
319+ }
320+
321+ /**
322+ * Getter for programmatic name of field,
323+ * an uppercased two-letter ISO-3166 code.
324+ * @see #getDisplayCountry
325+ */
326+ public String getCountry() {
327+ return country;
328+ }
329+
330+ /**
331+ * Getter for programmatic name of field.
332+ * @see #getDisplayVariant
333+ */
334+ public String getVariant() {
335+ return variant;
336+ }
337+
338+ /**
339+ * Getter for the programmatic name of the entire locale,
340+ * with the language, country and variant separated by underbars.
341+ * If a field is missing, at most one underbar will occur.
342+ * Example: "EN", "DE_DE", "EN_US_WIN", "DE_POSIX", "FR_MAC"
343+ * @see #getDisplayName
344+ */
345+ public final String toString() {
346+ StringBuffer result = new StringBuffer(language);
347+ if (country.length() != 0) {
348+ result.append('_');
349+ result.append(country);
350+ if (variant.length() != 0) {
351+ result.append('_');
352+ result.append(variant);
353+ }
354+ }
355+ return result.toString();
356+ }
357+
358+ /**
359+ * Getter for the three-letter ISO language abbreviation
360+ * of the locale.
361+ * @exception MissingResourceException Throws MissingResourceException if the
362+ * three-letter language abbreviation is not available for this locale.
363+ */
364+ public String getISO3Language() throws MissingResourceException {
365+ ResourceBundle resource
366+ = ResourceBundle.getBundle
367+ ("java.text.resources.LocaleElements", this);
368+ return resource.getString("ShortLanguage");
369+ }
370+
371+ /**
372+ * Getter for the three-letter ISO country abbreviation
373+ * of the locale.
374+ * @exception MissingResourceException Throws MissingResourceException if the
375+ * three-letter language abbreviation is not available for this locale.
376+ */
377+ public String getISO3Country() throws MissingResourceException {
378+ ResourceBundle resource =
379+ ResourceBundle.getBundle
380+ ("java.text.resources.LocaleElements", this);
381+ return resource.getString("ShortCountry");
382+ }
383+
384+ /**
385+ * Getter for the Locale ID, as used in Windows.
386+ * @exception MissingResourceException Throws MissingResourceException if there is
387+ * no LCID associated with the locale.
388+ */
389+ // FIXME this should go away completely!
390+ private int getLCID() throws MissingResourceException {
391+ ResourceBundle resource =
392+ ResourceBundle.getBundle
393+ ("java.text.resources.LocaleElements", this);
394+ String lcid = resource.getString("LocaleID");
395+ return Integer.parseInt(lcid,16);
396+ }
397+
398+ /**
399+ * Getter for display of field to user.
400+ * If the localized name is not found, returns the ISO code.
401+ * The desired user language is from the default locale.
402+ */
403+ public final String getDisplayLanguage() {
404+ return getDisplayLanguage(getDefault());
405+ }
406+
407+ /**
408+ * Getter for display of field to user.
409+ * If the localized name is not found, returns the ISO codes.
410+ * Example: "English (UK)", "Deutch", "Germany"
411+ * @param inLocale specifies the desired user language.
412+ */
413+ public String getDisplayLanguage(Locale inLocale) {
414+ try {
415+ ResourceBundle resource =
416+ ResourceBundle.getBundle
417+ ("java.text.resources.LocaleElements", this);
418+ return findStringMatch((String[][])resource.getObject("Languages"),
419+ inLocale.language, language);
420+ } catch (Exception e) {
421+ return language;
422+ }
423+ }
424+
425+ /**
426+ * Getter for display of field to user.
427+ * If the localized name is not found, returns the ISO code.
428+ * The default locale is used for the presentation language.
429+ */
430+ public final String getDisplayCountry() {
431+ return getDisplayCountry(getDefault());
432+ }
433+
434+ /**
435+ * Getter for display of field to user.
436+ * If the localized name is not found, returns the ISO code.
437+ * @param inLocale specifies the desired user language.
438+ */
439+ public String getDisplayCountry(Locale inLocale) {
440+ try {
441+ ResourceBundle resource =
442+ ResourceBundle.getBundle
443+ ("java.text.resources.LocaleElements",this);
444+ return findStringMatch((String[][])resource.getObject("Countries"),
445+ inLocale.language, language);
446+ } catch (Exception e) {
447+ return country;
448+ }
449+ }
450+
451+ /**
452+ * Getter for display of field to user.
453+ * If the localized name is not found, returns the variant code.
454+ * The default locale is used for the presentation language.
455+ */
456+ public final String getDisplayVariant() {
457+ return getDisplayVariant(getDefault());
458+ }
459+
460+ /**
461+ * Getter for display of field to user
462+ * If the localized name is not found, returns the variant code.
463+ * @param inLocale specifies the desired user language.
464+ */
465+ public String getDisplayVariant(Locale inLocale) {
466+ try {
467+ ResourceBundle resource =
468+ ResourceBundle.getBundle
469+ ("java.text.resources.LocaleElements", inLocale);
470+ String[][] pairedStrings = (String[][])resource.getObject("Variants");
471+ if (pairedStrings == null)
472+ return variant;
473+ return findStringMatch(pairedStrings, inLocale.language, language);
474+ } catch (Exception e) {
475+ return variant;
476+ }
477+ }
478+
479+ /**
480+ * Getter for display of the entire locale to user.
481+ * If the localized name is not found, uses the ISO codes.
482+ * The default locale is used for the presentation language.
483+ */
484+ public final String getDisplayName() {
485+ return getDisplayName(getDefault());
486+ }
487+
488+ /**
489+ * Getter for display of the entire locale to user.
490+ * If the localized name is not found, uses the ISO codes
491+ * @param inLocale specifies the desired user language.
492+ */
493+ public String getDisplayName(Locale inLocale) {
494+ // TODO: use pattern string from locale data
495+ StringBuffer result = new StringBuffer (getDisplayLanguage(inLocale));
496+ String aCountry = getDisplayCountry(inLocale);
497+ String aVariant = getDisplayVariant(inLocale);
498+ if (aCountry.length() != 0 || aVariant.length() != 0) {
499+ result.append(" (");
500+ result.append(getDisplayCountry(inLocale));
501+ if (aCountry.length() != 0 && aVariant.length() != 0)
502+ result.append(",");
503+ result.append(getDisplayVariant(inLocale));
504+ result.append(")");
505+ }
506+ return result.toString();
507+ }
508+
509+ /**
510+ * Overrides Cloneable
511+ */
512+ public Object clone()
513+ {
514+ try {
515+ Locale that = (Locale)super.clone();
516+ return that;
517+ } catch (CloneNotSupportedException e) {
518+ throw new InternalError();
519+ }
520+ }
521+
522+ /**
523+ * Override hashCode.
524+ * Since Locales are often used in hashtables, caches the value
525+ * for speed.
526+ */
527+ // XXX Depending on performance of synchronized, may want to
528+ // XXX just compute in constructor.
529+ public synchronized int hashCode() {
530+ if (hashcode == -1) {
531+ hashcode =
532+ language.hashCode() ^
533+ country.hashCode() ^
534+ variant.hashCode();
535+ }
536+ return hashcode;
537+ }
538+
539+ // Overrides
540+
541+ public boolean equals(Object obj) {
542+ if (this == obj) // quick check
543+ return true;
544+ if (!(obj instanceof Locale)) // (1) same object?
545+ return false;
546+ Locale other = (Locale) obj;
547+ if (hashCode() != other.hashCode()) return false; // quick check
548+ if (!language.equals(other.language)) return false;
549+ if (!country.equals(other.country)) return false;
550+ if (!variant.equals(other.variant)) return false;
551+ return true; // we made it through the guantlet.
552+ // (1) We don't check super.equals since it is Object.
553+ // Since Locale is final, we don't have to check both directions.
554+ }
555+
556+ // ================= privates =====================================
557+
558+ // XXX instance and class variables. For now keep these separate, since it is
559+ // faster to match. Later, make into single string.
560+
561+ private String language = "";
562+ private String country = "";
563+ private String variant = "";
564+
565+ private /*FIXME(83) transient*/ int hashcode = -1; // lazy evaluated
566+
567+ private static Locale defaultLocale = null;
568+
569+ /*
570+ * Locale needs its own, locale insenitive version of toLowerCase to
571+ * avoid circularity problems between Locale and String.
572+ * The most straightforward algorithm is used. Look at optimizations later.
573+ */
574+ private String toLowerCase(String str) {
575+ char[] buf = str.toCharArray();
576+ for (int i = 0; i < buf.length; i++) {
577+ buf[i] = Character.toLowerCase( buf[i] );
578+ }
579+ return new String( buf );
580+ }
581+
582+ /*
583+ * Locale needs its own, locale insenitive version of toUpperCase to
584+ * avoid circularity problems between Locale and String.
585+ * The most straightforward algorithm is used. Look at optimizations later.
586+ */
587+ private String toUpperCase(String str) {
588+ char[] buf = str.toCharArray();
589+ for (int i = 0; i < buf.length; i++) {
590+ buf[i] = Character.toUpperCase( buf[i] );
591+ }
592+ return new String( buf );
593+ }
594+
595+ private String findStringMatch(String[][] languages,
596+ String desiredLanguage, String fallbackLanguage)
597+ {
598+ for (int i = 0; i < languages.length; ++i)
599+ if (desiredLanguage.equals(languages[i][0]))
600+ return languages[i][1];
601+ if (!fallbackLanguage.equals(desiredLanguage))
602+ for (int i = 0; i < languages.length; ++i)
603+ if (fallbackLanguage.equals(languages[i][0]))
604+ return languages[i][1];
605+ if (!"EN".equals(desiredLanguage) && "EN".equals(fallbackLanguage))
606+ for (int i = 0; i < languages.length; ++i)
607+ if ("EN".equals(languages[i][0]))
608+ return languages[i][1];
609+ return "";
610+ }
611+ /*
612+ * Does an equals check, plus an empty field in this means a wildcard;
613+ * matches any other field in other.
614+ */
615+ private boolean matches (Locale other) {
616+ //System.out.println("language:" + language + "," + other.language);
617+ if (language.length() != 0)
618+ if (!language.equals(other.language))
619+ return false;
620+ //System.out.println("country:" + country + "," + other.country);
621+ if (country.length() != 0)
622+ if (!country.equals(other.country))
623+ return false;
624+ //System.out.println("variant:" + variant + "," + other.variant);
625+ if (variant.length() != 0)
626+ if (!variant.equals(other.variant))
627+ return false;
628+ return true; // whew, we made it through the guantlet.
629+ }
630+
631+}
java/pkg2/java/util/MissingResourceException.java+73−0
@@ -0,0 +1,73 @@
1+/*
2+ * @(#)MissingResourceException.java 1.4 97/01/29
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+
31+package java.util;
32+
33+/**
34+ * Signals that a resource is missing.
35+ * @see java.io.Exception
36+ * @see ResourceBundle
37+ * @version 1.4, 01/29/97
38+ * @author Mark Davis
39+ */
40+public
41+class MissingResourceException extends RuntimeException {
42+
43+ /**
44+ * Constructs a MissingResourceException with the specified information.
45+ * A detail message is a String that describes this particular exception.
46+ * @param s the detail message
47+ * @param classname the name of the resource class
48+ * @param key the key for the missing resource.
49+ */
50+ public MissingResourceException(String s, String className, String key) {
51+ super(s);
52+ this.className = className;
53+ this.key = key;
54+ }
55+
56+ /**
57+ * Gets parameter passed by constructor.
58+ */
59+ public String getClassName() {
60+ return className;
61+ }
62+
63+ /**
64+ * Gets parameter passed by constructor.
65+ */
66+ public String getKey() {
67+ return key;
68+ }
69+
70+ //============ privates ============
71+ private String className;
72+ private String key;
73+}
java/pkg2/java/util/NoSuchElementException.java+0−0

Empty file added.

java/pkg2/java/util/Observable.java+0−0

Empty file added.

java/pkg2/java/util/Observer.java+0−0

Empty file added.

java/pkg2/java/util/Properties.java+0−0

Empty file added.

java/pkg2/java/util/PropertyResourceBundle.java+121−0
@@ -0,0 +1,121 @@
1+/*
2+ * @(#)PropertyResourceBundle.java 1.7 97/01/29
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+package java.util;
31+
32+import java.util.Properties;
33+import java.io.InputStream;
34+import java.io.IOException;
35+
36+/**
37+ * <code>PropertyResourceBundle</code> is an abstract subclass of
38+ * <code>ResourceBundle</code> that manages resources for a locale
39+ * using a set of static strings from a property file. See
40+ * <code>ResourceBundle</code> for more information about resource
41+ * bundles in general.
42+ *
43+ * <p>
44+ * The property file contains the keys that you use in your source code
45+ * in calls to <code>ResourceBundle.getString</code> and similar methods,
46+ * and their corresponding values, etc.
47+ * The name of the property file indicates the resource bundle's family
48+ * and locale.
49+ *
50+ * <p>
51+ * In the following example, the keys are of the form "s1"... The actual
52+ * keys are entirely up to your choice, so long as they are the same as
53+ * the keys you use in your program to retrieve the objects from the bundle.
54+ * Keys are case-sensitive.
55+ * <blockquote>
56+ * <pre>
57+ * s1=3
58+ * s2=MeinDisk
59+ * s3=3 Mar 96
60+ * s4=Der disk '{1}' a {0} a {2}.
61+ * s5=0
62+ * s6=keine Datein
63+ * s7=1
64+ * s8=ein Datei
65+ * s9=2
66+ * s10={0}|3 Datein
67+ * s11=Der Format worf ein Exception: {0}
68+ * s12=ERROR
69+ * s14=Resulte
70+ * s13=Dialogue
71+ * s15=Pattern
72+ * s16=1,3
73+ * </pre>
74+ * </blockquote>
75+ *
76+ * @see ResourceBundle
77+ * @see ListResourceBundle
78+ */
79+public class PropertyResourceBundle extends ResourceBundle {
80+ /**
81+ * Creates a property resource
82+ * @param file property file to read from.
83+ */
84+ public PropertyResourceBundle (InputStream stream) throws IOException {
85+ lookup.load(stream);
86+ }
87+
88+ /**
89+ * Override of ResourceBundle, same semantics
90+ */
91+ public Object handleGetObject(String key) {
92+ Object obj = lookup.get(key);
93+ return obj; // once serialization is in place, you can do non-strings
94+ }
95+
96+ /**
97+ * Implementation of ResourceBundle.getKeys.
98+ */
99+ public Enumeration getKeys() {
100+ Enumeration result = null;
101+ if (parent != null) {
102+ Hashtable temp = new Hashtable();
103+ for (Enumeration parentKeys = parent.getKeys() ;
104+ parentKeys.hasMoreElements() ; /* nothing */) {
105+ temp.put(parentKeys.nextElement(), this);
106+ }
107+ for (Enumeration thisKeys = lookup.keys();
108+ thisKeys.hasMoreElements() ; /* nothing */) {
109+ temp.put(thisKeys.nextElement(), this);
110+ }
111+ result = temp.keys();
112+ } else {
113+ result = lookup.keys();
114+ }
115+ return result;
116+ }
117+
118+ // ==================privates====================
119+
120+ private Properties lookup = new Properties();
121+}
java/pkg2/java/util/Random.java+0−0

Empty file added.

java/pkg2/java/util/ResourceBundle.java+536−0
@@ -0,0 +1,536 @@
1+/*
2+ * @(#)ResourceBundle.java 1.15 97/01/29
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+package java.util;
31+
32+import java.io.InputStream;
33+import java.io.FileInputStream;
34+import java.util.Hashtable;
35+
36+/**
37+ *
38+ * Resource bundles contain locale-specific objects.
39+ * When your program needs a locale-specific resource,
40+ * a <code>String</code> for example, your program can load it
41+ * from the resource bundle that is appropriate for the
42+ * current user's locale. In this way, you can write
43+ * program code that is largely independent of the user's
44+ * locale isolating most, if not all, of the locale-specific
45+ * information in resource bundles.
46+ *
47+ * <p>
48+ * This allows you to write programs that can:
49+ * <UL type=SQUARE>
50+ * <LI> be easily localized, or translated, into different languages
51+ * <LI> handle multiple locales at once
52+ * <LI> be easily modified later to support even more locales
53+ * </UL>
54+ *
55+ * <P>
56+ * One resource bundle is, conceptually, a set of related classes that
57+ * inherit from <code>ResourceBundle</code>. Each related subclass of
58+ * <code>ResourceBundle</code> has the same base name plus an additional
59+ * component that identifies its locale. For example, suppose your resource
60+ * bundle is named <code>MyResources</code>. The first class you are likely
61+ * to write is the default resource bundle which simply has the same name as
62+ * its family--<code>MyResources</code>. You can also provide as
63+ * many related locale-specific classes as you need: for example, perhaps
64+ * you would provide a German one named <code>MyResources_de</code>.
65+ *
66+ * <P>
67+ * Each related subclass of <code>ResourceBundle</code> contains the same
68+ * items, but the items have been translated for the locale represented by that
69+ * <code>ResourceBundle</code> subclass. For example, both <code>MyResources</code>
70+ * and <code>MyResources_de</code> may have a <code>String</code> that's used
71+ * on a button for confirming operations. In <code>MyResources</code> the
72+ * <code>String</code> may contain <code>OK</code> and in
73+ * <code>MyResources_de</code> it may contain <code>Gut</code>.
74+ *
75+ * <P>
76+ * If there are different resources for different countries, you
77+ * can make specializations: for example, <code>MyResources_de_CH</code>
78+ * for Switzerland. If you want to only modify some of the resources
79+ * in the specialization, you can do so.
80+ *
81+ * <P>
82+ * When your program needs a locale-specific object, it loads
83+ * the <code>ResourceBundle</code> class using the <code>getBundle</code>
84+ * method:
85+ * <blockquote>
86+ * <pre>
87+ * ResourceBundle myResources =
88+ * ResourceBundle.getBundle("MyResources", currentLocale);
89+ * </pre>
90+ * </blockquote>
91+ * The first argument specifies the family name of the resource
92+ * bundle that contains the object in question. The second argument
93+ * indicates the desired locale. <code>getBundle</code>
94+ * uses these two arguments to construct the name of the
95+ * <code>ResourceBundle</code> subclass it should load as follows.
96+ *
97+ * <P>
98+ * The resource bundle lookup searches for classes with various suffixes
99+ * on the basis of (1) the desired locale and (2) the default locale (baseclass),
100+ * in the following order from lower-level (more specific) to parent-level
101+ * (less specific):
102+ * <p> baseclass + "_" + language1 + "_" + country1 + "_" + variant1
103+ * <BR> baseclass + "_" + language1 + "_" + country1
104+ * <BR> baseclass + "_" + language1
105+ * <BR> baseclass
106+ * <BR> baseclass + "_" + language2 + "_" + country2 + "_" + variant2
107+ * <BR> baseclass + "_" + language2 + "_" + country2
108+ * <BR> baseclass + "_" + language2
109+ *
110+ * <P>
111+ * The result of the lookup is a class, but that class may be
112+ * backed by a property file on disk. If a lookup fails,
113+ * <code>getBundle()</code> throws a <code>MissingResourceException</code>.
114+ *
115+ * <P>
116+ * The baseclass <strong>must</strong> be fully
117+ * qualified (for example, <code>myPackage.MyResources</code>, not just
118+ * <code>MyResources</code>). It must
119+ * also be accessable by your code; it cannot be a class that is private
120+ * to the package where <code>ResourceBundle.getBundle</code> is called.
121+ *
122+ * <P>
123+ * Note: <code>ResourceBundle</code> are used internally in accessing
124+ * <code>NumberFormat</code>s, <code>Collation</code>s, and so on.
125+ * The lookup strategy is the same.
126+ *
127+ * <P>
128+ * Resource bundles contain key/value pairs. The keys uniquely
129+ * identify a locale-specific object in the bundle. Here's an
130+ * example of a <code>ListResourceBundle</code> that contains
131+ * two key/value pairs:
132+ * <blockquote>
133+ * <pre>
134+ * class MyResource extends ListResourceBundle {
135+ * public Object[][] getContents() {
136+ * return contents;
137+ * }
138+ * static final Object[][] contents = {
139+ * // LOCALIZE THIS
140+ * {"OkKey", "OK"},
141+ * {"CancelKey", "Cancel"},
142+ * // END OF MATERIAL TO LOCALIZE
143+ * };
144+ * }
145+ * </pre>
146+ * </blockquote>
147+ * Keys are always <code>String</code>s.
148+ * In this example, the keys are <code>OkKey</code> and <code>CancelKey</code>.
149+ * In the above example, the values
150+ * are also <code>String</code>s--<code>OK</code> and <code>Cancel</code>--but
151+ * they don't have to be. The values can be any type of object.
152+ *
153+ * <P>
154+ * You retrieve an object from resource bundle using the appropriate
155+ * getter method. Because <code>OkKey</code> and <code>CancelKey</code>
156+ * are both strings, you would use <code>getString</code> to retrieve them:
157+ * <blockquote>
158+ * <pre>
159+ * button1 = new Button(myResourceBundle.getString("OkKey"));
160+ * button2 = new Button(myResourceBundle.getString("CancelKey"));
161+ * </pre>
162+ * </blockquote>
163+ * The getter methods all require the key as an argument and return
164+ * the object if found. If the object is not found, the getter method
165+ * throws a <code>MissingResourceException</code>.
166+ *
167+ * <P>
168+ * Besides <code>getString</code>; ResourceBundle supports a number
169+ * of other methods for getting different types of objects such as
170+ * <code>getStringArray</code>. If you don't have an object that
171+ * matches one of these methods, you can use <code>getObject</code>
172+ * and cast the result to the appropriate type. For example:
173+ * <blockquote>
174+ * <pre>
175+ * int[] myIntegers = (int[]) myResources.getObject("intList");
176+ * </pre>
177+ * </blockquote>
178+ *
179+ * <P>
180+ * <STRONG>NOTE:</STRONG> You should always supply a baseclass with
181+ * no suffixes. This will be the class of "last resort", if a locale
182+ * is requested that does not exist. For example, below we have a class
183+ * <code>MyResources</code>. It happens to contain US strings,
184+ * so we don't have to have an explicit <code>MyResource_en</code> or
185+ * <code>MyResource_en_US</code>.
186+ *
187+ * <P>
188+ * The JDK provides two subclasses of <code>ResourceBundle</code>,
189+ * <code>ListResourceBundle</code> and <code>PropertyResourceBundle</code>,
190+ * that provide a fairly simple way to create resources. (Once serialization
191+ * is fully integrated, we will provide another
192+ * way.) As you saw briefly in a prevous example, <code>ListResourceBundle</code>
193+ * manages its resource as a List of key/value pairs.
194+ * <code>PropertyResourceBundle</code> uses a properties file to manage
195+ * its resources.
196+ *
197+ * <p>
198+ * If <code>ListResourceBundle</code> or <code>PropertyResourceBundle</code>
199+ * do not suit your needs, you can write your own <code>ResourceBundle</code>
200+ * subclass. Your subclasses must overrde two methods: <code>handleGetObject</code>
201+ * and <code>getKeys()</code>.
202+ *
203+ * <P>
204+ * The following is a very simple example of a <code>ResourceBundle</code> subclass
205+ * that manages only a few resources (for a larger number of resources
206+ * you would probably use a <code>Hashtable</code>). Notice that if the key
207+ * is not found, <code>handleGetObject</code> must return null. Notice also
208+ * that you don't need to supply a value if a "parent-level"
209+ * <code>ResourceBundle</code> handles the same
210+ * key with the same value (look at uk below).
211+ * <strong><p>Example:</strong>
212+ * <blockquote>
213+ * <pre>
214+ * abstract class MyResources extends ResourceBundle {
215+ * public Object handleGetObject(String key) {
216+ * if (key.equals("okKey")) return "Ok";
217+ * if (key.equals("cancelKey")) return "Cancel";
218+ * return null;
219+ * }
220+ * }
221+ *
222+ * abstract class MyResources_de extends MyResources {
223+ * public Object handleGetObject(String key) {
224+ * if (key.equals("okKey")) return "Gut";
225+ * if (key.equals("cancelKey")) return "Vernichten";
226+ * return null;
227+ * }
228+ * }
229+ *
230+ * abstract class MyResources_uk extends MyResources {
231+ * public Object handleGetObject(String key) {
232+ * // don't need okKey, since parent level handles it.
233+ * if (key.equals("cancelKey")) return "Dispose";
234+ * return null;
235+ * }
236+ * }
237+ * </pre>
238+ * </blockquote>
239+ * You do not have to restrict yourself to using a single family of
240+ * <code>ResourceBundle</code>s. For example, you could have a set of bundles for
241+ * exception messages, <code>ExceptionResources</code>
242+ * (<code>ExceptionResources_fr</code>, <code>ExceptionResources_de</code>, ...),
243+ * and one for widgets, <code>WidgetResource</code> (<code>WidgetResources_fr</code>,
244+ * <code>WidgetResources_de</code>, ...); breaking up the resources however you like.
245+ *
246+ * @see ListResourceBundle
247+ * @see PropertyResourceBundle
248+ * @see MissingResourceException
249+ */
250+abstract public class ResourceBundle {
251+
252+ /**
253+ * Get an object from a ResourceBundle.
254+ * <BR>Convenience method to save casting.
255+ * @param key see class description.
256+ */
257+ public final String getString(String key) throws MissingResourceException {
258+ return (String) getObject(key);
259+ }
260+
261+ /**
262+ * Get an object from a ResourceBundle.
263+ * <BR>Convenience method to save casting.
264+ * @param key see class description.
265+ */
266+ public final String[] getStringArray(String key)
267+ throws MissingResourceException {
268+ return (String[]) getObject(key);
269+ }
270+
271+ /**
272+ * Get an object from a ResourceBundle.
273+ * @param key see class description.
274+ */
275+ public final Object getObject(String key) throws MissingResourceException {
276+ Object obj = handleGetObject(key);
277+ if (obj == null) {
278+ if (parent != null) {
279+ obj = parent.getObject(key);
280+ }
281+ if (obj == null)
282+ throw new MissingResourceException("Can't find resource",
283+ this.getClass().getName(),
284+ key);
285+ }
286+ return obj;
287+ }
288+
289+
290+ /**
291+ * Get the appropriate ResourceBundle subclass.
292+ * @param baseName see class description.
293+ */
294+ public static final ResourceBundle getBundle(String baseName)
295+ throws MissingResourceException
296+ {
297+ return getBundle(baseName, Locale.getDefault(),
298+ /* must determine loader here, else we break stack invariant */
299+ getLoader());
300+ }
301+
302+
303+ /**
304+ * Get the appropriate ResourceBundle subclass.
305+ * @param baseName see class description.
306+ * @param locale see class description.
307+ */
308+ public static final ResourceBundle getBundle(String baseName,
309+ Locale locale)
310+ {
311+ return getBundle(baseName, locale, getLoader());
312+ }
313+
314+ /*
315+ * Automatic determination of the ClassLoader to be used to load
316+ * resources on behalf of the client. N.B. The client is getLoader's
317+ * caller's caller.
318+ */
319+ private static ClassLoader getLoader() {
320+ Class[] stack = getClassContext();
321+ /* Magic number 2 identifies our caller's caller */
322+ Class c = stack[2];
323+ ClassLoader cl = (c == null) ? null : c.getClassLoader();
324+ return (cl == null) ? systemClassLoader : cl;
325+ }
326+ private static native Class[] getClassContext();
327+ private static SystemClassLoader systemClassLoader =
328+ new SystemClassLoader();
329+
330+ /**
331+ * Get the appropriate ResourceBundle subclass.
332+ * @param baseName see class description.
333+ * @param locale see class description.
334+ */
335+ private static synchronized ResourceBundle
336+ getBundle(String baseName, Locale locale, ClassLoader loader)
337+ throws MissingResourceException
338+ {
339+ StringBuffer localeName
340+ = new StringBuffer("_").append(locale.toString());
341+
342+ ResourceBundle lookup = findBundle(baseName,localeName,loader,false);
343+ if(lookup == null) {
344+ localeName.setLength(0);
345+ localeName.append("_").append( Locale.getDefault().toString() );
346+ lookup = findBundle(baseName, localeName, loader, true);
347+ if( lookup == null ) {
348+ throw new MissingResourceException("can't find resource for "
349+ + baseName + "_" + locale,
350+ baseName + "_" + locale,"");
351+ }
352+ }
353+
354+ // Setup lookup's ancestry. If we find an ancestor whose parent is null,
355+ // we set up the ancestor's parent as well.
356+ ResourceBundle child = lookup;
357+ while( (child != null) && (child.parent == null) ) {
358+ // Chop off the last component of the locale name and search for that
359+ // as the parent locale. Use it to set the parent of current child.
360+ int lastUnderbar = localeName.toString().lastIndexOf('_');
361+ if( lastUnderbar != -1 ) {
362+ localeName.setLength(lastUnderbar);
363+ debug("Searching for parent " + baseName + localeName);
364+ child.setParent( findBundle(baseName,localeName,loader,true) );
365+ }
366+ child = child.parent;
367+ }
368+
369+ return lookup;
370+ }
371+
372+
373+ /**
374+ * Set the parent bundle of this bundle. The parent bundle is
375+ * searched by getObject when this bundle does not contain a
376+ * particular resource.
377+ * @param parent this bundle's parent bundle.
378+ */
379+ protected void setParent( ResourceBundle parent ) {
380+ this.parent = parent;
381+ }
382+
383+
384+ /**
385+ * The internal routine that does the real work of finding and loading
386+ * the right ResourceBundle for a given name and locale.
387+ */
388+ private static ResourceBundle findBundle(String baseName,
389+ StringBuffer localeName,
390+ ClassLoader loader,
391+ boolean includeBase)
392+ {
393+ String localeStr = localeName.toString();
394+ String baseFileName = baseName.replace('.', '/');
395+ Object lookup = null;
396+ String searchName;
397+ Vector cacheCandidates = new Vector();
398+ int lastUnderbar;
399+ InputStream stream;
400+
401+ searchLoop:
402+ while (true) {
403+ searchName = baseName + localeStr;
404+ String cacheName =
405+ "["+Integer.toString(loader.hashCode())+"]" + searchName;
406+
407+ // First, look in the cache. We may either find the bundle we're
408+ // looking for or we may find that the bundle was not found by a
409+ // previous search.
410+ lookup = cacheList.get(cacheName);
411+ if( lookup == NOTFOUND ) {
412+ debug("Found " + searchName + " in cache as NOTFOUND");
413+ localeName.setLength(0);
414+ break searchLoop;
415+ }
416+ if( lookup != null ) {
417+ debug("Found " + searchName + " in cache");
418+ localeName.setLength(0);
419+ break searchLoop;
420+ }
421+ cacheCandidates.addElement( cacheName );
422+
423+ // Next search for a class
424+ debug("Searching for " + searchName );
425+ try {
426+ lookup = loader.loadClass(searchName).newInstance();
427+ break searchLoop;
428+ } catch( Exception e ){}
429+
430+ // Next search for a Properties file.
431+ searchName = baseFileName + localeStr + ".properties";
432+ debug("Searching for " + searchName );
433+ stream = loader.getResourceAsStream(searchName);
434+ if( stream != null ) {
435+ // make sure it is buffered
436+ stream = new java.io.BufferedInputStream(stream);
437+ try {
438+ lookup = (Object)new PropertyResourceBundle( stream );
439+ break searchLoop;
440+ } catch (Exception e) {}
441+ }
442+
443+ //Chop off the last part of the locale name string and try again.
444+ lastUnderbar = localeStr.lastIndexOf('_');
445+ if( ((lastUnderbar==0)&&(!includeBase)) || (lastUnderbar == -1) ) {
446+ break;
447+ }
448+ localeStr = localeStr.substring(0,lastUnderbar);
449+ localeName.setLength(lastUnderbar);
450+ }
451+
452+
453+ if( lookup != null ) {
454+ // Add a positive result to the cache. The result may include
455+ // NOTFOUND
456+ for( int i=0; i<cacheCandidates.size(); i++ ) {
457+ cacheList.put(cacheCandidates.elementAt(i), lookup);
458+ debug("Adding " + cacheCandidates.elementAt(i) + " to cache"
459+ + ((lookup == NOTFOUND)?" as NOTFOUND.":"."));
460+ }
461+ }
462+ else {
463+ // If we searched all the way to the base, then we can add
464+ // the NOTFOUND result to the cache. Otherwise we can say
465+ // nothing.
466+ if( includeBase == true ) {
467+ for( int i=0; i<cacheCandidates.size(); i++ ) {
468+ cacheList.put(cacheCandidates.elementAt(i), NOTFOUND);
469+ debug("Adding " + cacheCandidates.elementAt(i)
470+ + " to cache as NOTFOUND.");
471+ }
472+ }
473+ }
474+
475+ if( (lookup == NOTFOUND) || (lookup == null) )
476+ return null;
477+ else
478+ return (ResourceBundle)lookup;
479+ }
480+
481+
482+ /** Get an object from a ResourceBundle.
483+ * <STRONG>NOTE: </STRONG>Subclasses must override.
484+ * @param key see class description.
485+ */
486+ protected abstract Object handleGetObject(String key)
487+ throws MissingResourceException;
488+
489+ /**
490+ * Return an enumeration of the keys.
491+ * <STRONG>NOTE: </STRONG>Subclasses must override.
492+ */
493+ public abstract Enumeration getKeys();
494+
495+ /**
496+ * For printf debugging.
497+ */
498+ private static boolean debugFlag = false;
499+ private static void debug(String str) {
500+ if( debugFlag ) {
501+ System.out.println("ResourceBundle: " + str);
502+ }
503+ }
504+
505+ /**
506+ * The parent bundle is consulted by getObject when this bundle
507+ * does not contain a particular resource.
508+ */
509+ protected ResourceBundle parent = null;
510+
511+ private static final Integer NOTFOUND = new Integer(-1);
512+ private static Hashtable cacheList = new Hashtable();
513+}
514+
515+
516+/**
517+ * The SystemClassLoader loads system classes (those in your classpath).
518+ * This is an attempt to unify the handling of system classes and ClassLoader
519+ * classes.
520+ */
521+class SystemClassLoader extends java.lang.ClassLoader {
522+
523+ protected Class loadClass( String name, boolean resolve )
524+ throws ClassNotFoundException
525+ {
526+ return findSystemClass( name );
527+ }
528+
529+ public InputStream getResourceAsStream(String name) {
530+ return ClassLoader.getSystemResourceAsStream(name);
531+ }
532+
533+ public java.net.URL getResource(String name) {
534+ return ClassLoader.getSystemResource(name);
535+ }
536+}
java/pkg2/java/util/ResourceBundle_L.b+48−0
@@ -0,0 +1,48 @@
1+implement ResourceBundle_L;
2+
3+# javal v1.3 generated file: edit with care
4+
5+include "jni.m";
6+ jni : JNI;
7+ ClassModule,
8+ JString,
9+ JArray,
10+ JArrayI,
11+ JArrayC,
12+ JArrayB,
13+ JArrayS,
14+ JArrayJ,
15+ JArrayF,
16+ JArrayD,
17+ JArrayZ,
18+ JArrayJObject,
19+ JArrayJClass,
20+ JArrayJString,
21+ JClass,
22+ JThread,
23+ JObject : import jni;
24+
25+#>> extra pre includes here
26+
27+#<<
28+
29+include "ResourceBundle_L.m";
30+
31+#>> extra post includes here
32+
33+#<<
34+
35+init( jni_p : JNI )
36+{
37+ # save java native inteface mod instance
38+ jni = jni_p;
39+ #>>extra initialization here
40+ #<<
41+}
42+
43+getClassContext_aClass( ) : JArrayJClass
44+{#>>
45+ jni->FatalError( "getClassContext() not implemented" );
46+ return(nil);
47+}#<<
48+
java/pkg2/java/util/ResourceBundle_L.m+14−0
@@ -0,0 +1,14 @@
1+# javal v1.3 generated file: edit with care
2+
3+ResourceBundle_L : module
4+{
5+ ResourceBundle_obj : adt
6+ {
7+ cl_mod : ClassModule;
8+ parent : cyclic ref ResourceBundle_obj;
9+ };
10+
11+ init : fn( jni_p : JNI );
12+ getClassContext_aClass : fn( ) : JArrayJClass;
13+
14+};
java/pkg2/java/util/SimpleTimeZone.java+246−0
@@ -0,0 +1,246 @@
1+/*
2+ * @(#)SimpleTimeZone.java 1.12 97/03/05
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+
31+package java.util;
32+
33+import java.io.ObjectInputStream;
34+
35+/**
36+ * <code>SimpleTimeZone</code> is a concrete subclass of <code>TimeZone</code>
37+ * that represents a time zone for use with a Gregorian
38+ * calendar. This simple class does not handle historical
39+ * changes, and has limited rules.
40+ *
41+ * <P>
42+ * Use a negative value for <code>dayOfWeekInMonth</code> to indicate that
43+ * <code>SimpleTimeZone</code> should count from the end of the month backwards.
44+ * For example, Daylight Savings Time ends at the last
45+ * (dayOfWeekInMonth = -1) Sunday in October, at 2 AM in standard time.
46+ *
47+ * @see Calendar
48+ * @see GregorianCalendar
49+ * @see TimeZone
50+ * @version 1.12 03/05/97
51+ * @author David Goldsmith, Mark Davis, Chen-Lieh Huang
52+ */
53+public class SimpleTimeZone extends TimeZone {
54+ /**
55+ * Constructs a SimpleTimeZone with the given base time zone offset
56+ * from GMT and time zone ID. Timezone IDs can be obtained from
57+ * TimeZone.getAvailableIDs. Normally you should use TimeZone.getDefault
58+ * to construct a TimeZone.
59+ * @param rawOffset the given base time zone offset to GMT.
60+ * @param ID the time zone ID which is obtained from
61+ * TimeZone.getAvailableIDs.
62+ */
63+ public SimpleTimeZone(int rawOffset, String ID)
64+ {
65+ throw new NoSuchElementException();
66+ }
67+
68+ /**
69+ * Constructs a SimpleTimeZone with the given base time zone offset
70+ * from GMT, time zone ID, time to start and end the daylight time.
71+ * Timezone IDs can be obtained from TimeZone.getAvailableIDs.
72+ * Normally you should use TimeZone.getDefault to create a TimeZone.
73+ * For a time zone that does not use daylight saving time, do not
74+ * use this constructor; instead you should use
75+ * SimpleTimeZone(rawOffset, ID).
76+ * @param rawOffset the given base time zone offset to GMT.
77+ * @param ID the time zone ID which is obtained from
78+ * TimeZone.getAvailableIDs.
79+ * @param startMonth the daylight savings starting month. Month is 0-based.
80+ * eg, 0 for January.
81+ * @param startDayOfWeekInMonth the daylight savings starting
82+ * day-of-week-in-month. Please see the member description for an example.
83+ * @param startDayOfWeek the daylight savings starting day-of-week.
84+ * Please see the member description for an example.
85+ * @param startTime the daylight savings starting time. Please see the
86+ * member description for an example.
87+ * @param endMonth the daylight savings ending month. Month is 0-based.
88+ * eg, 0 for January.
89+ * @param endDayOfWeekInMonth the daylight savings ending
90+ * day-of-week-in-month. Please see the member description for an example.
91+ * @param endDayOfWeek the daylight savings ending day-of-week. Please see
92+ * the member description for an example.
93+ * @param endTime the daylight savings ending time. Please see the member
94+ * description for an example.
95+ */
96+ public SimpleTimeZone(int rawOffset, String ID, int startMonth,
97+ int startDayOfWeekInMonth, int startDayOfWeek, int startTime,
98+ int endMonth, int endDayOfWeekInMonth, int endDayOfWeek, int endTime)
99+ {
100+ throw new NoSuchElementException();
101+ }
102+
103+ /**
104+ * Sets the daylight savings starting year.
105+ * @param year the daylight savings starting year.
106+ */
107+ public void setStartYear(int year)
108+ {
109+ throw new NoSuchElementException();
110+ }
111+
112+ /**
113+ * Sets the daylight savings starting rule. For example, Daylight Savings
114+ * Time starts at the first Sunday in April, at 2 AM in standard time.
115+ * Therefore, you can set the start rule by calling:
116+ * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000);
117+ * @param month the daylight savings starting month. Month is 0-based.
118+ * eg, 0 for January.
119+ * @param dayOfWeekInMonth the daylight savings starting
120+ * day-of-week-in-month. Please see the member description for an example.
121+ * @param dayOfWeek the daylight savings starting day-of-week. Please see
122+ * the member description for an example.
123+ * @param time the daylight savings starting time. Please see the member
124+ * description for an example.
125+ */
126+ public void setStartRule(int month, int dayOfWeekInMonth, int dayOfWeek,
127+ int time)
128+ {
129+ throw new NoSuchElementException();
130+ }
131+
132+ /**
133+ * Sets the daylight savings ending rule. For example, Daylight Savings
134+ * Time ends at the last (-1) Sunday in October, at 2 AM in standard time.
135+ * Therefore, you can set the end rule by calling:
136+ * setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
137+ * @param month the daylight savings ending month. Month is 0-based.
138+ * eg, 0 for January.
139+ * @param dayOfWeekInMonth the daylight savings ending
140+ * day-of-week-in-month. Please see the member description for an example.
141+ * @param dayOfWeek the daylight savings ending day-of-week. Please see
142+ * the member description for an example.
143+ * @param time the daylight savings ending time. Please see the member
144+ * description for an example.
145+ */
146+ public void setEndRule(int month, int dayOfWeekInMonth, int dayOfWeek,
147+ int time)
148+ {
149+ throw new NoSuchElementException();
150+ }
151+
152+ /**
153+ * Overrides TimeZone
154+ * Gets offset, for current date, modified in case of daylight savings.
155+ * This is the offset to add *to* UTC to get local time.
156+ * Please see TimeZone.getOffset for descriptions on parameters.
157+ */
158+ public int getOffset(int era, int year, int month, int day, int dayOfWeek,
159+ int millis)
160+ {
161+ throw new NoSuchElementException();
162+ }
163+
164+ /**
165+ * Overrides TimeZone
166+ * Gets the GMT offset for this time zone.
167+ */
168+ public int getRawOffset()
169+ {
170+ throw new NoSuchElementException();
171+ }
172+
173+ /**
174+ * Overrides TimeZone
175+ * Sets the base time zone offset to GMT.
176+ * This is the offset to add *to* UTC to get local time.
177+ * Please see TimeZone.setRawOffset for descriptions on the parameter.
178+ */
179+ public void setRawOffset(int offsetMillis)
180+ {
181+ throw new NoSuchElementException();
182+ }
183+
184+ /**
185+ * Overrides TimeZone
186+ * Queries if this time zone uses Daylight Savings Time.
187+ */
188+ public boolean useDaylightTime()
189+ {
190+ throw new NoSuchElementException();
191+ }
192+
193+ /**
194+ * Overrides TimeZone
195+ * Queries if the given date is in Daylight Savings Time.
196+ */
197+ public boolean inDaylightTime(Date date) {
198+ throw new NoSuchElementException();
199+ }
200+
201+ /**
202+ * Overrides Cloneable
203+ */
204+ public Object clone()
205+ {
206+ throw new NoSuchElementException();
207+ }
208+
209+ /**
210+ * Override hashCode.
211+ * Generates the hash code for the SimpleDateFormat object
212+ */
213+ public synchronized int hashCode()
214+ {
215+ throw new NoSuchElementException();
216+ }
217+
218+ /**
219+ * Compares the equality of two SimpleTimeZone objects.
220+ * @param obj the SimpleTimeZone object to be compared with.
221+ * @return true if the given obj is the same as this SimpleTimeZone
222+ * object; false otherwise.
223+ */
224+ public boolean equals(Object obj)
225+ {
226+ throw new NoSuchElementException();
227+ }
228+
229+ // =======================privates===============================
230+
231+ private int startMonth, startDay, startDayOfWeek, startTime;
232+ private int endMonth, endDay, endDayOfWeek, endTime;
233+ private int startYear;
234+ private int rawOffset;
235+ private boolean useDaylight=false; // indicate if this time zone uses DST
236+ private static final int millisPerHour = 60*60*1000;
237+ // WARNING: assumes that no rule is measured from the end of February,
238+ // since we don't handle leap years. Could handle assuming always
239+ // Gregorian, since we know they didn't have daylight time when
240+ // Gregorian calendar started.
241+ private final byte monthLength[] = {31,28,31,30,31,30,31,31,30,31,30,31};
242+
243+ private void readObject(ObjectInputStream s) {
244+ throw new NoSuchElementException();
245+ }
246+}
java/pkg2/java/util/Stack.java+0−0

Empty file added.

java/pkg2/java/util/StringTokenizer.java+0−0

Empty file added.

java/pkg2/java/util/TimeZone.java+193−0
@@ -0,0 +1,193 @@
1+/*
2+ * @(#)TimeZone.java 1.17 97/01/29
3+ *
4+ * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5+ * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6+ *
7+ * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8+ *
9+ * The original version of this source code and documentation is copyrighted
10+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11+ * materials are provided under terms of a License Agreement between Taligent
12+ * and Sun. This technology is protected by multiple US and International
13+ * patents. This notice and attribution to Taligent may not be removed.
14+ * Taligent is a registered trademark of Taligent, Inc.
15+ *
16+ * Permission to use, copy, modify, and distribute this software
17+ * and its documentation for NON-COMMERCIAL purposes and without
18+ * fee is hereby granted provided that this copyright notice
19+ * appears in all copies. Please refer to the file "copyright.html"
20+ * for further important copyright and licensing information.
21+ *
22+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28+ *
29+ */
30+
31+package java.util;
32+
33+import java.io.Serializable;
34+import java.io.ObjectInputStream;
35+
36+/**
37+ * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
38+ * savings.
39+ *
40+ * <p>
41+ * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
42+ * which creates a <code>TimeZone</code> based on the time zone where the program
43+ * is running. For example, for a program running in Japan, <code>getDefault</code>
44+ * creates a <code>TimeZone</code> object based on Japanese Standard Time.
45+ *
46+ * <p>
47+ * You can also get a <code>TimeZone</code> using <code>getTimeZone</code> along
48+ * with a time zone ID. For instance, the time zone ID for the Pacific
49+ * Standard Time zone is "PST". So, you can get a PST <code>TimeZone</code> object
50+ * with:
51+ * <blockquote>
52+ * <pre>
53+ * TimeZone tz = TimeZone.getTimeZone("PST");
54+ * </pre>
55+ * </blockquote>
56+ * You can use <code>getAvailableIDs</code> method to iterate through
57+ * all the supported time zone IDs. You can then choose a
58+ * supported ID to get a favorite <code>TimeZone</code>.
59+ *
60+ * @see Calendar
61+ * @see GregorianCalendar
62+ * @see SimpleTimeZone
63+ * @version 1.17 01/29/97
64+ * @author Mark Davis, David Goldsmith, Chen-Lieh Huang
65+ */
66+abstract public class TimeZone implements Serializable, Cloneable {
67+
68+ public TimeZone() {
69+ throw new NoSuchElementException();
70+ }
71+
72+ /**
73+ * Gets the time zone offset, for current date, modified in case of
74+ * daylight savings. This is the offset to add *to* UTC to get local time.
75+ * @param era the era of the given date.
76+ * @param year the year in the given date.
77+ * @param month the month in the given date.
78+ * Month is 0-based. e.g., 0 for January.
79+ * @param day the day-in-month of the given date.
80+ * @param dayOfWeek the day-of-week of the given date.
81+ * @param milliseconds the millis in day.
82+ * @return the offset to add *to* GMT to get local time.
83+ */
84+ abstract public int getOffset(int era, int year, int month, int day,
85+ int dayOfWeek, int milliseconds);
86+
87+ /**
88+ * Sets the base time zone offset to GMT.
89+ * This is the offset to add *to* UTC to get local time.
90+ * @param offsetMillis the given base time zone offset to GMT.
91+ */
92+ abstract public void setRawOffset(int offsetMillis);
93+
94+ /**
95+ * Gets unmodified offset, NOT modified in case of daylight savings.
96+ * This is the offset to add *to* UTC to get local time.
97+ * @return the unmodified offset to add *to* UTC to get local time.
98+ */
99+ abstract public int getRawOffset();
100+
101+ /**
102+ * Gets the ID of this time zone.
103+ * @return the ID of this time zone.
104+ */
105+ public String getID()
106+ {
107+ throw new NoSuchElementException();
108+ }
109+
110+ /**
111+ * Sets the time zone ID. This does not change any other data in
112+ * the time zone object.
113+ * @param ID the new time zone ID.
114+ */
115+ public void setID(String ID)
116+ {
117+ throw new NoSuchElementException();
118+ }
119+
120+ /**
121+ * Queries if this time zone uses Daylight Savings Time.
122+ * @return true if this time zone uses Daylight Savings Time,
123+ * false, otherwise.
124+ */
125+ abstract public boolean useDaylightTime();
126+
127+ /**
128+ * Queries if the given date is in Daylight Savings Time in
129+ * this time zone.
130+ * @param date the given Date.
131+ * @return true if the given date is in Daylight Savings Time,
132+ * false, otherwise.
133+ */
134+ abstract public boolean inDaylightTime(Date date);
135+
136+ /**
137+ * Gets the TimeZone for the given ID.
138+ * @param ID the given ID.
139+ * @return a TimeZone.
140+ */
141+ public static synchronized TimeZone getTimeZone(String ID)
142+ {
143+ throw new NoSuchElementException();
144+ }
145+
146+ /**
147+ * Gets the available IDs according to the given time zone offset.
148+ * @param rawOffset the given time zone GMT offset.
149+ * @return an array of IDs, where the time zone for that ID has
150+ * the specified GMT offset. For example, {"Phoenix", "Denver"},
151+ * since both have GMT-07:00, but differ in daylight savings behavior.
152+ */
153+ public static synchronized String[] getAvailableIDs(int rawOffset) {
154+ throw new NoSuchElementException();
155+ }
156+
157+ /**
158+ * Gets all the available IDs supported.
159+ * @return an array of IDs.
160+ */
161+ public static synchronized String[] getAvailableIDs() {
162+ throw new NoSuchElementException();
163+ }
164+
165+ /**
166+ * Gets the default TimeZone for this host.
167+ * @return a default TimeZone.
168+ */
169+ public static synchronized TimeZone getDefault() {
170+ throw new NoSuchElementException();
171+ }
172+
173+ /**
174+ * Sets time zone to using the given TimeZone.
175+ * @param zone the given time zone.
176+ */
177+ public static synchronized void setDefault(TimeZone zone)
178+ {
179+ throw new NoSuchElementException();
180+ }
181+
182+ /**
183+ * Overrides Cloneable
184+ */
185+ public Object clone()
186+ {
187+ throw new NoSuchElementException();
188+ }
189+
190+ private void readObject(ObjectInputStream s) {
191+ throw new NoSuchElementException();
192+ }
193+}
java/pkg2/java/util/TooManyListenersException.java+65−0
@@ -0,0 +1,65 @@
1+/*
2+ * @(#)TooManyListenersException.java 1.1 96/10/10
3+ *
4+ * Copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
5+ *
6+ * Permission to use, copy, modify, and distribute this software
7+ * and its documentation for NON-COMMERCIAL purposes and without
8+ * fee is hereby granted provided that this copyright notice
9+ * appears in all copies. Please refer to the file "copyright.html"
10+ * for further important copyright and licensing information.
11+ *
12+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
13+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
14+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
15+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
16+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
17+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
18+ */
19+
20+package java.util;
21+
22+/**
23+ * <p>
24+ * The <code> TooManyListenersException </code> Exception is used as part of
25+ * the Java Event model to annotate and implement a unicast special case of
26+ * a multicast Event Source.
27+ * </p>
28+ * <p>
29+ * The presence of a <code> throws TooManyListenersException </code> clause
30+ * on any given concrete implementation of the normally multicast semantic
31+ * <italic> void add &lt EventListenerType &gt () </italic> event listener
32+ * registration pattern is used to annotate that interface as implementing
33+ * a unicast Listener special case, that is, that one and only one Listener
34+ * may be registered on the particular event listener source concurrently.
35+ * </p>
36+ *
37+ * @see java.util.EventObject
38+ * @see java.util.EventListener
39+ *
40+ * @version 1.1 96/10/10
41+ * @author Laurence P. G. Cable
42+ */
43+
44+public class TooManyListenersException extends Exception {
45+
46+ /**
47+ * Constructs a TooManyListenersException with no detail message.
48+ * A detail message is a String that describes this particular exception.
49+ */
50+
51+ public TooManyListenersException() {
52+ super();
53+ }
54+
55+ /**
56+ * Constructs a TooManyListenersException with the specified detail message.
57+ * A detail message is a String that describes this particular exception.
58+ * @param s the detail message
59+ */
60+
61+ public TooManyListenersException(String s) {
62+ super(s);
63+ }
64+}
65+
java/pkg2/java/util/Vector.java+0−0

Empty file added.

java/pkg2/java/util/mkfile+88−0
@@ -0,0 +1,88 @@
1+<../../../../mkconfig
2+
3+DIRS=\
4+ zip\
5+
6+TARG=\
7+ BitSet.dis\
8+ Calendar.dis\
9+ Date.dis\
10+ Dictionary.dis\
11+ EmptyStackException.dis\
12+ Enumeration.dis\
13+ EventListener.dis\
14+ EventObject.dis\
15+ GregorianCalendar.dis\
16+ Hashtable.dis\
17+ HashtableEntry.dis\
18+ HashtableEnumerator.dis\
19+ ListResourceBundle.dis\
20+ Locale.dis\
21+# for MissingResourceException.dis\
22+ PyLHKaRk2knKuXdPtclNZ.dis\
23+# for NoSuchElementException.dis\
24+ FgHgFAyr+lOIx-Hx5tg1g.dis\
25+ Observable.dis\
26+ Observer.dis\
27+ Properties.dis\
28+# for PropertyResourceBundle.dis\
29+ hXReUGvcTPP+3SdqzAFLN.dis\
30+ Random.dis\
31+ ResourceBundle.dis\
32+ SimpleTimeZone.dis\
33+ Stack.dis\
34+ StringTokenizer.dis\
35+ SystemClassLoader.dis\
36+ TimeZone.dis\
37+# for TooManyListenersException.dis\
38+ ofB3vewCQyrpHPDk+jZyy.dis\
39+ Vector.dis\
40+ VectorEnumerator.dis\
41+# Limbo code\
42+ Date_L.dis\
43+ ResourceBundle_L.dis\
44+
45+MODULES=\
46+ $ROOT/java/module/classloader.m\
47+ $ROOT/java/module/jni.m\
48+ $ROOT/java/module/cast.m\
49+ Date_L.m\
50+ ResourceBundle_L.m\
51+
52+SYSMODULES=\
53+ draw.m\
54+ hash.m\
55+ keyring.m\
56+ loader.m\
57+ math.m\
58+ string.m\
59+ sys.m\
60+
61+DISBIN=$ROOT/java/dis/java/java/util
62+
63+<$ROOT/mkfiles/mkjava
64+<$ROOT/mkfiles/mksubdirs
65+
66+HashtableEntry.dis: Hashtable.class
67+ j2d HashtableEntry.class
68+
69+HashtableEnumerator.dis: Hashtable.class
70+ j2d HashtableEnumerator.class
71+
72+VectorEnumerator.dis: Vector.class
73+ j2d VectorEnumerator.class
74+
75+PyLHKaRk2knKuXdPtclNZ.dis: MissingResourceException.class
76+ j2d MissingResourceException.class
77+
78+FgHgFAyr+lOIx-Hx5tg1g.dis: NoSuchElementException.class
79+ j2d NoSuchElementException.class
80+
81+SystemClassLoader.dis: ResourceBundle.class
82+ j2d SystemClassLoader.class
83+
84+hXReUGvcTPP+3SdqzAFLN.dis: PropertyResourceBundle.class
85+ j2d PropertyResourceBundle.class
86+
87+ofB3vewCQyrpHPDk+jZyy.dis: TooManyListenersException.class
88+ j2d TooManyListenersException.class
java/pkg2/java/util/zip/CRC32.java+0−0

Empty file added.

java/pkg2/java/util/zip/CRC32_L.b+51−0
@@ -0,0 +1,51 @@
1+implement CRC32_L;
2+
3+# javal v1.4 generated file: edit with care
4+
5+include "jni.m";
6+ jni : JNI;
7+ ClassModule,
8+ JString,
9+ JArray,
10+ JArrayI,
11+ JArrayC,
12+ JArrayB,
13+ JArrayS,
14+ JArrayJ,
15+ JArrayF,
16+ JArrayD,
17+ JArrayZ,
18+ JArrayJObject,
19+ JArrayJClass,
20+ JArrayJString,
21+ JClass,
22+ JThread,
23+ JObject : import jni;
24+
25+#>> extra pre includes here
26+
27+#<<
28+
29+include "CRC32_L.m";
30+
31+#>> extra post includes here
32+
33+#<<
34+
35+init( jni_p : JNI )
36+{
37+ # save java native inteface mod instance
38+ jni = jni_p;
39+ #>>extra initialization here
40+ #<<
41+}
42+
43+update_aB_I_I_V( this : ref CRC32_obj, p0 : JArrayB,p1 : int,p2 : int)
44+{#>>
45+}#<<
46+
47+update1_I_V( this : ref CRC32_obj, p0 : int)
48+{#>>
49+}#<<
50+
51+
java/pkg2/java/util/zip/CRC32_L.m+15−0
@@ -0,0 +1,15 @@
1+# javal v1.4 generated file: edit with care
2+
3+CRC32_L : module
4+{
5+ CRC32_obj : adt
6+ {
7+ cl_mod : ClassModule;
8+ crc : int;
9+ };
10+
11+ init : fn( jni_p : JNI );
12+ update_aB_I_I_V : fn( this : ref CRC32_obj, p0 : JArrayB,p1 : int,p2 : int);
13+ update1_I_V : fn( this : ref CRC32_obj, p0 : int);
14+
15+};
java/pkg2/java/util/zip/CheckedInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/CheckedOutputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Checksum.java+0−0

Empty file added.

java/pkg2/java/util/zip/DataFormatException.java+0−0

Empty file added.

java/pkg2/java/util/zip/GZIPInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Inflater.java+0−0

Empty file added.

java/pkg2/java/util/zip/InflaterInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Inflater_L.b+77−0
@@ -0,0 +1,77 @@
1+implement Inflater_L;
2+
3+# javal v1.4 generated file: edit with care
4+
5+include "jni.m";
6+ jni : JNI;
7+ ClassModule,
8+ JString,
9+ JArray,
10+ JArrayI,
11+ JArrayC,
12+ JArrayB,
13+ JArrayS,
14+ JArrayJ,
15+ JArrayF,
16+ JArrayD,
17+ JArrayZ,
18+ JArrayJObject,
19+ JArrayJClass,
20+ JArrayJString,
21+ JClass,
22+ JThread,
23+ JObject : import jni;
24+
25+#>> extra pre includes here
26+
27+#<<
28+
29+include "Inflater_L.m";
30+
31+#>> extra post includes here
32+
33+#<<
34+
35+init( jni_p : JNI )
36+{
37+ # save java native inteface mod instance
38+ jni = jni_p;
39+ #>>extra initialization here
40+ #<<
41+}
42+
43+inflate_aB_I_I_I( this : ref Inflater_obj, p0 : JArrayB,p1 : int,p2 : int) : int
44+{#>>
45+ junk1 := (this, p0);
46+ junk2 := (p1, p2);
47+ return 0;
48+}#<<
49+
50+getTotalIn_I( this : ref Inflater_obj) : int
51+{#>>
52+ junk := this;
53+ return 0;
54+}#<<
55+
56+getTotalOut_I( this : ref Inflater_obj) : int
57+{#>>
58+ junk := this;
59+ return 0;
60+}#<<
61+
62+reset_V( this : ref Inflater_obj)
63+{#>>
64+ junk := this;
65+}#<<
66+
67+end_V( this : ref Inflater_obj)
68+{#>>
69+ junk := this;
70+}#<<
71+
72+init_Z_V( this : ref Inflater_obj, p0 : int)
73+{#>>
74+ junk := (this, p0);
75+}#<<
76+
77+
java/pkg2/java/util/zip/Inflater_L.m+24−0
@@ -0,0 +1,24 @@
1+# javal v1.6 generated file: edit with care
2+
3+Inflater_L : module
4+{
5+ Inflater_obj : adt
6+ {
7+ cl_mod : ClassModule;
8+ strm : int;
9+ buf : JArrayB;
10+ off : int;
11+ len_j : int;
12+ finished : byte;
13+ needsDictionary : byte;
14+ };
15+
16+ init : fn( jni_p : JNI );
17+ inflate_aB_I_I_I : fn( this : ref Inflater_obj, p0 : JArrayB,p1 : int,p2 : int) : int;
18+ getTotalIn_I : fn( this : ref Inflater_obj) : int;
19+ getTotalOut_I : fn( this : ref Inflater_obj) : int;
20+ reset_V : fn( this : ref Inflater_obj);
21+ end_V : fn( this : ref Inflater_obj);
22+ init_Z_V : fn( this : ref Inflater_obj, p0 : int);
23+
24+};
java/pkg2/java/util/zip/ZipConstants.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipEntry.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipException.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/mkfile+38−0
@@ -0,0 +1,38 @@
1+<../../../../../mkconfig
2+
3+TARG=\
4+ CRC32.dis\
5+ CheckedInputStream.dis\
6+ CheckedOutputStream.dis\
7+ Checksum.dis\
8+ DataFormatException.dis\
9+ GZIPInputStream.dis\
10+ Inflater.dis\
11+ InflaterInputStream.dis\
12+ ZipConstants.dis\
13+ ZipEntry.dis\
14+ ZipException.dis\
15+ ZipInputStream.dis\
16+# Limbo code\
17+ CRC32_L.dis\
18+ Inflater_L.dis\
19+
20+MODULES=\
21+ $ROOT/java/module/classloader.m\
22+ $ROOT/java/module/jni.m\
23+ $ROOT/java/module/cast.m\
24+ CRC32_L.m\
25+ Inflater_L.m\
26+
27+SYSMODULES=\
28+ draw.m\
29+ hash.m\
30+ keyring.m\
31+ loader.m\
32+ math.m\
33+ string.m\
34+ sys.m\
35+
36+DISBIN=$ROOT/java/dis/java/java/util/zip
37+
38+<$ROOT/mkfiles/mkjava