From: <ls...@us...> - 2009-02-02 06:21:03
|
Revision: 4969 http://jnode.svn.sourceforge.net/jnode/?rev=4969&view=rev Author: lsantha Date: 2009-02-02 06:20:51 +0000 (Mon, 02 Feb 2009) Log Message: ----------- Create new sourcetree for platform speciffic openjdk classes. Modified Paths: -------------- trunk/core/build.xml Added Paths: ----------- trunk/core/src/openjdk/svm/ trunk/core/src/openjdk/svm/java/ trunk/core/src/openjdk/svm/java/lang/ trunk/core/src/openjdk/svm/java/lang/ProcessEnvironment.java trunk/core/src/openjdk/svm/java/lang/ProcessImpl.java trunk/core/src/openjdk/svm/java/lang/Terminator.java trunk/core/src/openjdk/svm/java/lang/UNIXProcess.java trunk/core/src/openjdk/svm/sun/ trunk/core/src/openjdk/svm/sun/util/ trunk/core/src/openjdk/svm/sun/util/resources/ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_be.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_bg.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_ca.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_cs.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_da.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_de.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_el.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_el_CY.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_GB.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_IE.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_MT.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es_ES.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es_US.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_et.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fi.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fr.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fr_CA.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_hr.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_hu.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_in_ID.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_is.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_it.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_lt.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_lv.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_mk.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_ms_MY.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_mt.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_mt_MT.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_nl.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_no.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_pl.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_pt.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_pt_PT.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_ro.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_ru.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_sk.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_sl.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_sq.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_sr.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_sv.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_tr.java trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_uk.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_be_BY.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_bg_BG.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_ca_ES.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_cs_CZ.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_da_DK.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_de_AT.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_de_CH.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_de_DE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_de_GR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_de_LU.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_el_CY.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_el_GR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_AU.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_CA.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_GB.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_IE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_IN.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_MT.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_NZ.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_PH.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_SG.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_US.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_en_ZA.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_AR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_BO.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_CL.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_CO.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_CR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_DO.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_EC.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_ES.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_GT.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_HN.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_MX.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_NI.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_PA.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_PE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_PR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_PY.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_SV.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_US.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_UY.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_es_VE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_et_EE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_fi_FI.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_fr_BE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_fr_CA.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_fr_CH.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_fr_FR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_fr_LU.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_ga_IE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_hr_HR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_hu_HU.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_in_ID.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_is_IS.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_it_CH.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_it_IT.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_lt_LT.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_lv_LV.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_mk_MK.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_ms_MY.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_mt_MT.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_nl_BE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_nl_NL.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_no_NO.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_pl_PL.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_pt_BR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_pt_PT.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_ro_RO.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_ru_RU.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_sk_SK.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_sl_SI.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_sq_AL.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_sr_BA.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_sr_CS.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_sr_ME.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_sv_SE.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_tr_TR.java trunk/core/src/openjdk/svm/sun/util/resources/CurrencyNames_uk_UA.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_be.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_bg.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_ca.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_cs.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_da.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_de.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_el.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_el_CY.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_en.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_en_MT.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_en_PH.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_en_SG.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_es.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_es_US.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_et.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_fi.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_fr.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_ga.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_hr.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_hu.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_in.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_is.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_it.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_lt.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_lv.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_mk.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_ms.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_mt.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_nl.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_no.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_pl.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_pt.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_pt_BR.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_pt_PT.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_ro.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_ru.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_sk.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_sl.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_sq.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_sr.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_sv.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_tr.java trunk/core/src/openjdk/svm/sun/util/resources/LocaleNames_uk.java Removed Paths: ------------- trunk/core/src/openjdk/vm/java/lang/ProcessEnvironment.java trunk/core/src/openjdk/vm/java/lang/ProcessImpl.java trunk/core/src/openjdk/vm/java/lang/Terminator.java trunk/core/src/openjdk/vm/java/lang/UNIXProcess.java trunk/core/src/openjdk/vm/sun/util/ Modified: trunk/core/build.xml =================================================================== --- trunk/core/build.xml 2009-02-02 00:10:20 UTC (rev 4968) +++ trunk/core/build.xml 2009-02-02 06:20:51 UTC (rev 4969) @@ -31,6 +31,7 @@ <pathelement location="${my-src.dir}/openjdk/org"/> <pathelement location="${my-src.dir}/openjdk/com"/> <pathelement location="${my-src.dir}/openjdk/sun"/> + <pathelement location="${my-src.dir}/openjdk/svm"/> <pathelement location="${my-src.dir}/openjdk/vm"/> </path> <path id="classpath-sources-corba"> @@ -114,6 +115,7 @@ <fileset dir="${my-src.dir}/openjdk/org" includes="**/*.jav"/> <fileset dir="${my-src.dir}/openjdk/com" includes="**/*.jav"/> <fileset dir="${my-src.dir}/openjdk/sun" includes="**/*.jav"/> + <fileset dir="${my-src.dir}/openjdk/svm" includes="**/*.jav"/> <fileset dir="${my-src.dir}/openjdk/vm" includes="**/*.jav"/> </copy> <ExpandTest classname="PrimitiveIntTest" type="int"/> @@ -184,6 +186,7 @@ <fileset dir="${my-src.dir}/openjdk/org" excludes="${my-non-resources}"/> <fileset dir="${my-src.dir}/openjdk/com" excludes="${my-non-resources}"/> <fileset dir="${my-src.dir}/openjdk/sun" excludes="${my-non-resources}"/> + <fileset dir="${my-src.dir}/openjdk/svm" excludes="${my-non-resources}"/> <fileset dir="${my-src.dir}/openjdk/vm" excludes="${my-non-resources}"/> <fileset dir="${my-src.dir}/openjdk/corba" excludes="${my-non-resources}"/> <fileset dir="${my-src.dir}/openjdk/jaxws" excludes="${my-non-resources}"/> Copied: trunk/core/src/openjdk/svm/java/lang/ProcessEnvironment.java (from rev 4968, trunk/core/src/openjdk/vm/java/lang/ProcessEnvironment.java) =================================================================== --- trunk/core/src/openjdk/svm/java/lang/ProcessEnvironment.java (rev 0) +++ trunk/core/src/openjdk/svm/java/lang/ProcessEnvironment.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,439 @@ +/* + * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* We use APIs that access the standard Unix environ array, which + * is defined by UNIX98 to look like: + * + * char **environ; + * + * These are unsorted, case-sensitive, null-terminated arrays of bytes + * of the form FOO=BAR\000 which are usually encoded in the user's + * default encoding (file.encoding is an excellent choice for + * encoding/decoding these). However, even though the user cannot + * directly access the underlying byte representation, we take pains + * to pass on the child the exact byte representation we inherit from + * the parent process for any environment name or value not created by + * Javaland. So we keep track of all the byte representations. + * + * Internally, we define the types Variable and Value that exhibit + * String/byteArray duality. The internal representation of the + * environment then looks like a Map<Variable,Value>. But we don't + * expose this to the user -- we only provide a Map<String,String> + * view, although we could also provide a Map<byte[],byte[]> view. + * + * The non-private methods in this class are not for general use even + * within this package. Instead, they are the system-dependent parts + * of the system-independent method of the same name. Don't even + * think of using this class unless your method's name appears below. + * + * @author Martin Buchholz + * @since 1.5 + */ + +package java.lang; + +import java.io.*; +import java.util.*; + + +final class ProcessEnvironment +{ + private static final HashMap<Variable,Value> theEnvironment; + private static final Map<String,String> theUnmodifiableEnvironment; + static final int MIN_NAME_LENGTH = 0; + + static { + // We cache the C environment. This means that subsequent calls + // to putenv/setenv from C will not be visible from Java code. + byte[][] environ = environ(); + theEnvironment = new HashMap<Variable,Value>(environ.length/2 + 3); + // Read environment variables back to front, + // so that earlier variables override later ones. + for (int i = environ.length-1; i > 0; i-=2) + theEnvironment.put(Variable.valueOf(environ[i-1]), + Value.valueOf(environ[i])); + + theUnmodifiableEnvironment + = Collections.unmodifiableMap + (new StringEnvironment(theEnvironment)); + } + + /* Only for use by System.getenv(String) */ + static String getenv(String name) { + return theUnmodifiableEnvironment.get(name); + } + + /* Only for use by System.getenv() */ + static Map<String,String> getenv() { + return theUnmodifiableEnvironment; + } + + /* Only for use by ProcessBuilder.environment() */ + static Map<String,String> environment() { + return new StringEnvironment + ((Map<Variable,Value>)(theEnvironment.clone())); + } + + /* Only for use by Runtime.exec(...String[]envp...) */ + static Map<String,String> emptyEnvironment(int capacity) { + return new StringEnvironment(new HashMap<Variable,Value>(capacity)); + } + + private static native byte[][] environ(); + + // This class is not instantiable. + private ProcessEnvironment() {} + + // Check that name is suitable for insertion into Environment map + private static void validateVariable(String name) { + if (name.indexOf('=') != -1 || + name.indexOf('\u0000') != -1) + throw new IllegalArgumentException + ("Invalid environment variable name: \"" + name + "\""); + } + + // Check that value is suitable for insertion into Environment map + private static void validateValue(String value) { + if (value.indexOf('\u0000') != -1) + throw new IllegalArgumentException + ("Invalid environment variable value: \"" + value + "\""); + } + + // A class hiding the byteArray-String duality of + // text data on Unixoid operating systems. + private static abstract class ExternalData { + protected final String str; + protected final byte[] bytes; + + protected ExternalData(String str, byte[] bytes) { + this.str = str; + this.bytes = bytes; + } + + public byte[] getBytes() { + return bytes; + } + + public String toString() { + return str; + } + + public boolean equals(Object o) { + return o instanceof ExternalData + && arrayEquals(getBytes(), ((ExternalData) o).getBytes()); + } + + public int hashCode() { + return arrayHash(getBytes()); + } + } + + private static class Variable + extends ExternalData implements Comparable<Variable> + { + protected Variable(String str, byte[] bytes) { + super(str, bytes); + } + + public static Variable valueOfQueryOnly(Object str) { + return valueOfQueryOnly((String) str); + } + + public static Variable valueOfQueryOnly(String str) { + return new Variable(str, str.getBytes()); + } + + public static Variable valueOf(String str) { + validateVariable(str); + return valueOfQueryOnly(str); + } + + public static Variable valueOf(byte[] bytes) { + return new Variable(new String(bytes), bytes); + } + + public int compareTo(Variable variable) { + return arrayCompare(getBytes(), variable.getBytes()); + } + + public boolean equals(Object o) { + return o instanceof Variable && super.equals(o); + } + } + + private static class Value + extends ExternalData implements Comparable<Value> + { + protected Value(String str, byte[] bytes) { + super(str, bytes); + } + + public static Value valueOfQueryOnly(Object str) { + return valueOfQueryOnly((String) str); + } + + public static Value valueOfQueryOnly(String str) { + return new Value(str, str.getBytes()); + } + + public static Value valueOf(String str) { + validateValue(str); + return valueOfQueryOnly(str); + } + + public static Value valueOf(byte[] bytes) { + return new Value(new String(bytes), bytes); + } + + public int compareTo(Value value) { + return arrayCompare(getBytes(), value.getBytes()); + } + + public boolean equals(Object o) { + return o instanceof Value && super.equals(o); + } + } + + // This implements the String map view the user sees. + private static class StringEnvironment + extends AbstractMap<String,String> + { + private Map<Variable,Value> m; + private static String toString(Value v) { + return v == null ? null : v.toString(); + } + public StringEnvironment(Map<Variable,Value> m) {this.m = m;} + public int size() {return m.size();} + public boolean isEmpty() {return m.isEmpty();} + public void clear() { m.clear();} + public boolean containsKey(Object key) { + return m.containsKey(Variable.valueOfQueryOnly(key)); + } + public boolean containsValue(Object value) { + return m.containsValue(Value.valueOfQueryOnly(value)); + } + public String get(Object key) { + return toString(m.get(Variable.valueOfQueryOnly(key))); + } + public String put(String key, String value) { + return toString(m.put(Variable.valueOf(key), + Value.valueOf(value))); + } + public String remove(Object key) { + return toString(m.remove(Variable.valueOfQueryOnly(key))); + } + public Set<String> keySet() { + return new StringKeySet(m.keySet()); + } + public Set<Map.Entry<String,String>> entrySet() { + return new StringEntrySet(m.entrySet()); + } + public Collection<String> values() { + return new StringValues(m.values()); + } + + // It is technically feasible to provide a byte-oriented view + // as follows: + // public Map<byte[],byte[]> asByteArrayMap() { + // return new ByteArrayEnvironment(m); + // } + + + // Convert to Unix style environ as a monolithic byte array + // inspired by the Windows Environment Block, except we work + // exclusively with bytes instead of chars, and we need only + // one trailing NUL on Unix. + // This keeps the JNI as simple and efficient as possible. + public byte[] toEnvironmentBlock(int[]envc) { + int count = m.size() * 2; // For added '=' and NUL + for (Map.Entry<Variable,Value> entry : m.entrySet()) { + count += entry.getKey().getBytes().length; + count += entry.getValue().getBytes().length; + } + + byte[] block = new byte[count]; + + int i = 0; + for (Map.Entry<Variable,Value> entry : m.entrySet()) { + byte[] key = entry.getKey ().getBytes(); + byte[] value = entry.getValue().getBytes(); + System.arraycopy(key, 0, block, i, key.length); + i+=key.length; + block[i++] = (byte) '='; + System.arraycopy(value, 0, block, i, value.length); + i+=value.length + 1; + // No need to write NUL byte explicitly + //block[i++] = (byte) '\u0000'; + } + envc[0] = m.size(); + return block; + } + } + + static byte[] toEnvironmentBlock(Map<String,String> map, int[]envc) { + return map == null ? null : + ((StringEnvironment)map).toEnvironmentBlock(envc); + } + + + private static class StringEntry + implements Map.Entry<String,String> + { + private final Map.Entry<Variable,Value> e; + public StringEntry(Map.Entry<Variable,Value> e) {this.e = e;} + public String getKey() {return e.getKey().toString();} + public String getValue() {return e.getValue().toString();} + public String setValue(String newValue) { + return e.setValue(Value.valueOf(newValue)).toString(); + } + public String toString() {return getKey() + "=" + getValue();} + public boolean equals(Object o) { + return o instanceof StringEntry + && e.equals(((StringEntry)o).e); + } + public int hashCode() {return e.hashCode();} + } + + private static class StringEntrySet + extends AbstractSet<Map.Entry<String,String>> + { + private final Set<Map.Entry<Variable,Value>> s; + public StringEntrySet(Set<Map.Entry<Variable,Value>> s) {this.s = s;} + public int size() {return s.size();} + public boolean isEmpty() {return s.isEmpty();} + public void clear() { s.clear();} + public Iterator<Map.Entry<String,String>> iterator() { + return new Iterator<Map.Entry<String,String>>() { + Iterator<Map.Entry<Variable,Value>> i = s.iterator(); + public boolean hasNext() {return i.hasNext();} + public Map.Entry<String,String> next() { + return new StringEntry(i.next()); + } + public void remove() {i.remove();} + }; + } + private static Map.Entry<Variable,Value> vvEntry(final Object o) { + if (o instanceof StringEntry) + return ((StringEntry)o).e; + return new Map.Entry<Variable,Value>() { + public Variable getKey() { + return Variable.valueOfQueryOnly(((Map.Entry)o).getKey()); + } + public Value getValue() { + return Value.valueOfQueryOnly(((Map.Entry)o).getValue()); + } + public Value setValue(Value value) { + throw new UnsupportedOperationException(); + } + }; + } + public boolean contains(Object o) { return s.contains(vvEntry(o)); } + public boolean remove(Object o) { return s.remove(vvEntry(o)); } + public boolean equals(Object o) { + return o instanceof StringEntrySet + && s.equals(((StringEntrySet) o).s); + } + public int hashCode() {return s.hashCode();} + } + + private static class StringValues + extends AbstractCollection<String> + { + private final Collection<Value> c; + public StringValues(Collection<Value> c) {this.c = c;} + public int size() {return c.size();} + public boolean isEmpty() {return c.isEmpty();} + public void clear() { c.clear();} + public Iterator<String> iterator() { + return new Iterator<String>() { + Iterator<Value> i = c.iterator(); + public boolean hasNext() {return i.hasNext();} + public String next() {return i.next().toString();} + public void remove() {i.remove();} + }; + } + public boolean contains(Object o) { + return c.contains(Value.valueOfQueryOnly(o)); + } + public boolean remove(Object o) { + return c.remove(Value.valueOfQueryOnly(o)); + } + public boolean equals(Object o) { + return o instanceof StringValues + && c.equals(((StringValues)o).c); + } + public int hashCode() {return c.hashCode();} + } + + private static class StringKeySet extends AbstractSet<String> { + private final Set<Variable> s; + public StringKeySet(Set<Variable> s) {this.s = s;} + public int size() {return s.size();} + public boolean isEmpty() {return s.isEmpty();} + public void clear() { s.clear();} + public Iterator<String> iterator() { + return new Iterator<String>() { + Iterator<Variable> i = s.iterator(); + public boolean hasNext() {return i.hasNext();} + public String next() {return i.next().toString();} + public void remove() { i.remove();} + }; + } + public boolean contains(Object o) { + return s.contains(Variable.valueOfQueryOnly(o)); + } + public boolean remove(Object o) { + return s.remove(Variable.valueOfQueryOnly(o)); + } + } + + // Replace with general purpose method someday + private static int arrayCompare(byte[]x, byte[] y) { + int min = x.length < y.length ? x.length : y.length; + for (int i = 0; i < min; i++) + if (x[i] != y[i]) + return x[i] - y[i]; + return x.length - y.length; + } + + // Replace with general purpose method someday + private static boolean arrayEquals(byte[] x, byte[] y) { + if (x.length != y.length) + return false; + for (int i = 0; i < x.length; i++) + if (x[i] != y[i]) + return false; + return true; + } + + // Replace with general purpose method someday + private static int arrayHash(byte[] x) { + int hash = 0; + for (int i = 0; i < x.length; i++) + hash = 31 * hash + x[i]; + return hash; + } + +} Copied: trunk/core/src/openjdk/svm/java/lang/ProcessImpl.java (from rev 4968, trunk/core/src/openjdk/vm/java/lang/ProcessImpl.java) =================================================================== --- trunk/core/src/openjdk/svm/java/lang/ProcessImpl.java (rev 0) +++ trunk/core/src/openjdk/svm/java/lang/ProcessImpl.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,88 @@ +/* + * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package java.lang; + +import java.io.IOException; +import java.lang.Process; + +/** + * This class is for the exclusive use of ProcessBuilder.start() to + * create new processes. + * + * @author Martin Buchholz + * @since 1.5 + */ +final class ProcessImpl { + private ProcessImpl() {} // Not instantiable + + private static byte[] toCString(String s) { + if (s == null) + return null; + byte[] bytes = s.getBytes(); + byte[] result = new byte[bytes.length + 1]; + System.arraycopy(bytes, 0, + result, 0, + bytes.length); + result[result.length-1] = (byte)0; + return result; + } + + // Only for use by ProcessBuilder.start() + static Process start(String[] cmdarray, + java.util.Map<String,String> environment, + String dir, + boolean redirectErrorStream) + throws IOException + { + assert cmdarray != null && cmdarray.length > 0; + + // Convert arguments to a contiguous block; it's easier to do + // memory management in Java than in C. + byte[][] args = new byte[cmdarray.length-1][]; + int size = args.length; // For added NUL bytes + for (int i = 0; i < args.length; i++) { + args[i] = cmdarray[i+1].getBytes(); + size += args[i].length; + } + byte[] argBlock = new byte[size]; + int i = 0; + for (byte[] arg : args) { + System.arraycopy(arg, 0, argBlock, i, arg.length); + i += arg.length + 1; + // No need to write NUL bytes explicitly + } + + int[] envc = new int[1]; + byte[] envBlock = ProcessEnvironment.toEnvironmentBlock(environment, envc); + + return new UNIXProcess + (toCString(cmdarray[0]), + argBlock, args.length, + envBlock, envc[0], + toCString(dir), + redirectErrorStream); + } +} Copied: trunk/core/src/openjdk/svm/java/lang/Terminator.java (from rev 4968, trunk/core/src/openjdk/vm/java/lang/Terminator.java) =================================================================== --- trunk/core/src/openjdk/svm/java/lang/Terminator.java (rev 0) +++ trunk/core/src/openjdk/svm/java/lang/Terminator.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,73 @@ +/* + * Copyright 1999-2001 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package java.lang; + +import sun.misc.Signal; +import sun.misc.SignalHandler; + + +/** + * Package-private utility class for setting up and tearing down + * platform-specific support for termination-triggered shutdowns. + * + * @author Mark Reinhold + * @since 1.3 + */ + +class Terminator { + + private static SignalHandler handler = null; + + /* Invocations of setup and teardown are already synchronized + * on the shutdown lock, so no further synchronization is needed here + */ + + static void setup() { + if (handler != null) return; + SignalHandler sh = new SignalHandler() { + public void handle(Signal sig) { + Shutdown.exit(sig.getNumber() + 0200); + } + }; + handler = sh; + try { + Signal.handle(new Signal("HUP"), sh); + Signal.handle(new Signal("INT"), sh); + Signal.handle(new Signal("TERM"), sh); + } catch (IllegalArgumentException e) { + // When -Xrs is specified the user is responsible for + // ensuring that shutdown hooks are run by calling + // System.exit() + } + } + + static void teardown() { + /* The current sun.misc.Signal class does not support + * the cancellation of handlers + */ + } + +} Copied: trunk/core/src/openjdk/svm/java/lang/UNIXProcess.java (from rev 4968, trunk/core/src/openjdk/vm/java/lang/UNIXProcess.java) =================================================================== --- trunk/core/src/openjdk/svm/java/lang/UNIXProcess.java (rev 0) +++ trunk/core/src/openjdk/svm/java/lang/UNIXProcess.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,220 @@ +/* + * Copyright 1995-2006 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package java.lang; + +import java.io.*; + +/* java.lang.Process subclass in the UNIX environment. + * + * @author Mario Wolczko and Ross Knippel. + * @author Konstantin Kladko (ported to Linux) + */ + +final class UNIXProcess extends Process { + private FileDescriptor stdin_fd; + private FileDescriptor stdout_fd; + private FileDescriptor stderr_fd; + private int pid; + private int exitcode; + private boolean hasExited; + + private OutputStream stdin_stream; + private InputStream stdout_stream; + private InputStream stderr_stream; + + /* this is for the reaping thread */ + private native int waitForProcessExit(int pid); + + private native int forkAndExec(byte[] prog, + byte[] argBlock, int argc, + byte[] envBlock, int envc, + byte[] dir, + boolean redirectErrorStream, + FileDescriptor stdin_fd, + FileDescriptor stdout_fd, + FileDescriptor stderr_fd) + throws IOException; + + /* In the process constructor we wait on this gate until the process */ + /* has been created. Then we return from the constructor. */ + /* fork() is called by the same thread which later waits for the process */ + /* to terminate */ + + private static class Gate { + + private boolean exited = false; + private IOException savedException; + + synchronized void exit() { /* Opens the gate */ + exited = true; + this.notify(); + } + + synchronized void waitForExit() { /* wait until the gate is open */ + boolean interrupted = false; + while (!exited) { + try { + this.wait(); + } catch (InterruptedException e) { + interrupted = true; + } + } + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + + void setException (IOException e) { + savedException = e; + } + + IOException getException() { + return savedException; + } + } + + UNIXProcess(final byte[] prog, + final byte[] argBlock, final int argc, + final byte[] envBlock, final int envc, + final byte[] dir, + final boolean redirectErrorStream) + throws IOException { + stdin_fd = new FileDescriptor(); + stdout_fd = new FileDescriptor(); + stderr_fd = new FileDescriptor(); + + final Gate gate = new Gate(); + /* + * For each subprocess forked a corresponding reaper thread + * is started. That thread is the only thread which waits + * for the subprocess to terminate and it doesn't hold any + * locks while doing so. This design allows waitFor() and + * exitStatus() to be safely executed in parallel (and they + * need no native code). + */ + + java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction() { + public Object run() { + Thread t = new Thread("process reaper") { + public void run() { + try { + pid = forkAndExec(prog, + argBlock, argc, + envBlock, envc, + dir, + redirectErrorStream, + stdin_fd, stdout_fd, stderr_fd); + } catch (IOException e) { + gate.setException(e); /*remember to rethrow later*/ + gate.exit(); + return; + } + java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction() { + public Object run() { + stdin_stream = new BufferedOutputStream(new + FileOutputStream(stdin_fd)); + stdout_stream = new BufferedInputStream(new + FileInputStream(stdout_fd)); + stderr_stream = new FileInputStream(stderr_fd); + return null; + } + }); + gate.exit(); /* exit from constructor */ + int res = waitForProcessExit(pid); + synchronized (UNIXProcess.this) { + hasExited = true; + exitcode = res; + UNIXProcess.this.notifyAll(); + } + } + }; + t.setDaemon(true); + t.start(); + return null; + } + }); + gate.waitForExit(); + IOException e = gate.getException(); + if (e != null) + throw new IOException(e.toString()); + } + + public OutputStream getOutputStream() { + return stdin_stream; + } + + public InputStream getInputStream() { + return stdout_stream; + } + + public InputStream getErrorStream() { + return stderr_stream; + } + + public synchronized int waitFor() throws InterruptedException { + while (!hasExited) { + wait(); + } + return exitcode; + } + + public synchronized int exitValue() { + if (!hasExited) { + throw new IllegalThreadStateException("process hasn't exited"); + } + return exitcode; + } + + private static native void destroyProcess(int pid); + public void destroy() { + // There is a risk that pid will be recycled, causing us to + // kill the wrong process! So we only terminate processes + // that appear to still be running. Even with this check, + // there is an unavoidable race condition here, but the window + // is very small, and OSes try hard to not recycle pids too + // soon, so this is quite safe. + synchronized (this) { + if (!hasExited) + destroyProcess(pid); + } + try { + stdin_stream.close(); + stdout_stream.close(); + stderr_stream.close(); + } catch (IOException e) { + // ignore + } + } + + /* This routine initializes JNI field offsets for the class */ + private static native void initIDs(); + + static { + initIDs(); + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "1" }, + { "minimalDaysInFirstWeek", "1" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_be.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_be.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_be.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,10 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_be extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_bg.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_bg.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_bg.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,10 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_bg extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_ca.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_ca.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_ca.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_ca extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_cs.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_cs.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_cs.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_cs extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_da.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_da.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_da.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_da extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_de.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_de.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_de.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_de extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_el.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_el.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_el.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_el extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_el_CY.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_el_CY.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_el_CY.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,11 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_el_CY extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "minimalDaysInFirstWeek", "1" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,10 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_en extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_GB.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_GB.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_GB.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_en_GB extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_IE.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_IE.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_IE.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_en_IE extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_MT.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_MT.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_en_MT.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,11 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_en_MT extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_es extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "1" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es_ES.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es_ES.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es_ES.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_es_ES extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es_US.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es_US.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_es_US.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,11 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_es_US extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "1" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_et.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_et.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_et.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_et extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fi.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fi.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fi.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_fi extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fr.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fr.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fr.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_fr extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "2" }, + { "minimalDaysInFirstWeek", "4" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fr_CA.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fr_CA.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_fr_CA.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,12 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_fr_CA extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[][] { + { "firstDayOfWeek", "1" }, + { "minimalDaysInFirstWeek", "1" }, + }; + } +} Added: trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_hr.java =================================================================== --- trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_hr.java (rev 0) +++ trunk/core/src/openjdk/svm/sun/util/resources/CalendarData_hr.java 2009-02-02 06:20:51 UTC (rev 4969) @@ -0,0 +1,11 @@ +package sun.util.resources; + +import java.util.ListResourceBundle; + +public final class CalendarData_hr extends LocaleNamesBundle { + protected final Object[][] getContents() { + return new Object[... [truncated message content] |