diff --git a/.hgtags b/.hgtags
index 0713266..301e4b0 100755
--- a/.hgtags
+++ b/.hgtags
@@ -123,6 +123,7 @@ cfbbdb77eac0397b03eb99ee2e07ea00e0a7b81e jdk7-b142
2d38c2a79c144c30cd04d143d83ee7ec6af40771 jdk7-b146
3ac30b3852876ccad6bd61697b5f9efa91ca7bc6 jdk7u1-b01
d91364304d7c4ecd34caffdba2b840aeb0d10b51 jdk7-b147
+00b623147f23ef8a92a25c4c28ef8681dc1d1b52 7u0
34451dc0580d5c95d97b95a564e6198f36545d68 jdk7u1-b02
bf735d852f79bdbb3373c777eec3ff27e035e7ba jdk7u1-b03
f66a2bada589f4157789e6f66472954d2f1c114e jdk7u1-b04
@@ -197,5 +198,69 @@ e79fa743fe5a801db4acc7a7daa68f581423e5d3 jdk7u6-b20
29f6fb1833eb2a696b95e8985126f2d70f511a82 jdk7u6-b21
31cdab09d719fe60876c7f3a472386c1455d93e2 jdk7u6-b22
d1c709f1196a73d1df10d04a221b10e30fd2eb48 jdk7u6-b23
-1ab3edf5061fdde3a6f6510373a92444445af710 jdk7u8-b01
-d7a94c8cbbbfadbd9e2f3e4737eb7deb572dedc9 jdk7u8-b02
+e4def733cc8c58e83b7cefa7edd89a3e2b793520 jdk7u6-b24
+f5f546dba006778854e7a81141fc1b44acd257a4 jdk7u6-b30
+43775eae8df6c874fb3631c86009505cf3821b1f jdk7u6-b31
+43775eae8df6c874fb3631c86009505cf3821b1f jdk7u7-b10
+a380c75873bfb578e605d4362edb18c08698cc3e jdk7u7-b30
+d7f2b3949f9c9ff1115ea61c496d3cd4c62e2759 jdk7u7-b11
+82c51e6a3bea0dd8feb1bd3033e847dbdc5d9f99 jdk7u7-b31
+5ca487420f9c2cf6d39acf1e842d13bf8ef0ca07 jdk7u7-b01
+dbfa9c57853c2dd9cd4e4a139d83b519573d8031 jdk7u7-b02
+bae912f95f2aa1d22dbc0ff62816b71861965cd6 jdk7u9-b03
+0000000000000000000000000000000000000000 jdk7u7-b01
+5ca487420f9c2cf6d39acf1e842d13bf8ef0ca07 jdk7u9-b01
+0000000000000000000000000000000000000000 jdk7u7-b02
+dbfa9c57853c2dd9cd4e4a139d83b519573d8031 jdk7u9-b02
+3159fbe20e2d9501007aae8ca3db58978d754561 jdk7u9-b04
+d9c8fa0606fdfff242175ce904c525a6fc40d6e5 jdk7u9-b05
+81f8b620894e275012a1b447f13319b7d2148b28 jdk7u9-b31
+d247cdeb828f4463b55ea53c4b2d6346f7706c3c jdk7u9-b32
+d934ce27cddbc9ba7236791f177872491204a41e jdk7u10-b10
+5a5ee5b70d563d5817b6ec023d275e9b17256459 jdk7u10-b11
+48b58c2d665c9a1d3598b981e46f87f9bcdd5b46 jdk7u10-b12
+1b9618b61e29c09b92f83956c613acf36ccabb38 jdk7u10-b13
+c50e1a044e4fcc1a94b79b42f3629beb07624010 jdk7u10-b14
+137087461db28f935493940658f31be760098f00 jdk7u10-b15
+c8a37a49fc90ae31b864544d6d4a9f6137d4995d jdk7u10-b16
+494e838439db7f0f4e36f7dcfeba06d2bef78c8d jdk7u10-b17
+dce9058d2151e6b5c84898c13cfd1521a627a296 jdk7u10-b18
+b5fb925394331313dbe3859fdc408bfd37193476 jdk7u10-b30
+337ce65c8c356766212812b78f49f5632995987d jdk7u10-b31
+c2d5141baeda6c9b5bbc83c21eff9c3940fefae4 jdk7u11-b20
+168aa0f1417b3651a955ae66068dc148b660f829 jdk7u11-b21
+7c0710ed65b097d415f772ff4fb58c4822890aa3 jdk7u11-b32
+61cee7a518a4ae05439490ec388c3ab1d1d899f2 jdk7u11-b33
+c8a37a49fc90ae31b864544d6d4a9f6137d4995d jdk7u11-b03
+0b418e2ccf9093718609144689d1a8b316ad951f jdk7u11-b04
+e127e6c94b56f7348df67d9672c16a7dc9c5ec5e jdk7u11-b05
+f6abff072aabfee866342d9f7f4aac7d13450ddf jdk7u11-b06
+80a3d0bcd3d4c9e83b75416178bdd60a2d23ebbc jdk7u11-b07
+e7c55def6796d3c426631b5717084ef122908847 jdk7u11-b08
+2412f7b8551ede5296cb6e1d6189f40aad9eeffe jdk7u13-b09
+3b7815df113f8044039739276237b964ee8fa015 jdk7u13-b10
+527d3cf769ec073d7348e4c31f97c47c943c96b6 jdk7u13-b30
+3b7815df113f8044039739276237b964ee8fa015 jdk7u13-b20
+0e52db2d9bb8bc789f6c66f2cfb7cd2d3b0b16c6 jdk7u15-b01
+0324fca94d073b3aad77658224f17679f25c18b1 jdk7u15-b02
+25a9d44cebf2a7ac6dd1748c94e00b242403acb1 jdk7u15-b30
+5c1b2900a65b5ebe9d2a5c9b48903081c8196b04 jdk7u15-b31
+e7adbfbcd837ad4e9f88db45612e5704b7a249fd jdk7u15-b33
+f37a75bd39595ba38bdc53ee957c63bbb3cbb12d jdk7u15-b03
+2412f7b8551ede5296cb6e1d6189f40aad9eeffe jdk7u15-b32
+0c2b2dae93e7a720bbcc2e13a1913a2264335554 jdk7u17-b01
+8e49ff2feda30801d7826ca1778eb7b901a7089c jdk7u17-b02
+933d424580f967ed11eda2bbfd690f985a72df6e jdk7u17-b30
+790582955edb617b41abbc73cf82544dbf8c1d97 jdk7u17-b31
+527d3cf769ec073d7348e4c31f97c47c943c96b6 jdk7u21-b01
+bc264b362dc7b4f2bda34e1a5b87a4f0c2bd4d82 jdk7u21-b02
+20603c659295a40c7f16259cb08c91475092efed jdk7u21-b03
+d2b1fdd8ee0affe640c7493ab3ae04fcc1961446 jdk7u21-b04
+2d6657f92359d1d46b355fd0c99b8aa5f34832e4 jdk7u21-b05
+14522481739dc6981beb5cc55d543dcc62cda067 jdk7u21-b06
+0df382e8c17bf817d55fc8759c7f5c9e9d0337f0 jdk7u21-b07
+1aff32a21aba64c3767e9a72ebf1b8ba490e99ec jdk7u21-b08
+a2e0099b4cf70be026a7a0ba7918fcd71d57fdce jdk7u21-b09
+602ad1a5b09fb9136e8bf1b708e0524fbdb35324 jdk7u21-b10
+fa322ca378324750ea049f2e92357e51eca27ae4 jdk7u21-b11
+450e8dde919df278fe75ae95e0eb0a6464f5bc41 jdk7u21-b30
diff --git a/corba/.hgtags b/corba/.hgtags
index 924616f..b71d604 100755
--- a/corba/.hgtags
+++ b/corba/.hgtags
@@ -123,6 +123,7 @@ a2f340a048c88d10cbedc0504f5cf03d39925a40 jdk7-b142
770227a4087e4e401fe87ccd19738440111c3948 jdk7-b146
36f0efbc66ef8ace3cca8aa8d0c88f3334080f8a jdk7u1-b01
73323cb3396260d93e0ab731fd2d431096ceed0f jdk7-b147
+578c4d2c534cc761f5f5cc0d8360471bb8d5f94f 7u0
9515a2d034b4727c11aeea36354a549fbc469c4f jdk7u1-b02
dd71cb354c573c1addcda269a7dd9144bfce9587 jdk7u1-b03
eaee830124aa453627591d8f9eccb39d7e040876 jdk7u1-b04
@@ -197,5 +198,69 @@ f0c51b691d34b4a06c1e22c7960be71e0d0ee84e jdk7u6-b20
353c15c4bc371f2f8258344c988d1403477cc140 jdk7u6-b21
793b80c0316fcafa18668bced26acb41af3be07d jdk7u6-b22
2a8376123fbb81bc4b2f643ff7cfaf7f87b21c35 jdk7u6-b23
-353c15c4bc371f2f8258344c988d1403477cc140 jdk7u8-b01
-d17ca8d088f7cc0dd42230472f534c8d1e415bcb jdk7u8-b02
+02512f61591f55d84458d1ea4ce84eecb7324f89 jdk7u6-b24
+8b20875b3faa01ef56331045de88747df278eaeb jdk7u6-b30
+d7fe6c13adf9e06d98c061449d171bc06c2ba0a3 jdk7u6-b31
+d7fe6c13adf9e06d98c061449d171bc06c2ba0a3 jdk7u7-b10
+496baf62d0550c704505b0ff6f390279f6a569e0 jdk7u7-b30
+e57e4274a3575f278115cc8ef03c5bdf3c43a7ed jdk7u7-b11
+06cbc4af754ea8f2e3b7d0b1701d1a69ce9d5075 jdk7u7-b31
+8737f43e092ea52dd85dcf164736eea3b9b364e6 jdk7u7-b01
+ec602836c4e173927911673d253bb8baa1e3d170 jdk7u7-b02
+a163e56c6679d10dc64ec48f35e67c3a5942afba jdk7u9-b03
+0000000000000000000000000000000000000000 jdk7u7-b01
+8737f43e092ea52dd85dcf164736eea3b9b364e6 jdk7u9-b01
+0000000000000000000000000000000000000000 jdk7u7-b02
+ec602836c4e173927911673d253bb8baa1e3d170 jdk7u9-b02
+268470f3f0d0d7e9b04c579c551571097f0b0305 jdk7u9-b04
+a5dced409c4b7f940db80846f6efabac74523b0e jdk7u9-b05
+b426254b45bcd7cdb38003497fdd4168e366d3cb jdk7u9-b31
+0fa70374aa257929e2541e57c55c4cdebec91fd4 jdk7u9-b32
+ba68d4ad02c465a36344a34eba34491466ec17d4 jdk7u10-b10
+a738921b001a92381bf355a2bb1ecd742ecee352 jdk7u10-b11
+e52708ecb2c32b366c251e4083fbb37e22a425c3 jdk7u10-b12
+5cd2ef642635a7d0a79a7c28343b2ddfd0e6aa4a jdk7u10-b13
+2d53a2c7e4b989ceba356abfc8dc2129269a134f jdk7u10-b14
+c488cd628db35eb09d8ef9e10ffd00c9a93d0778 jdk7u10-b15
+64f09d7549d304fbfd3c29b4f148bf44e8e3e979 jdk7u10-b16
+57c3355153d1624fd98618097c1a82ab3ffc66f8 jdk7u10-b17
+f2a347637a55fa4de9542a8dcab72ad6fac44d2b jdk7u10-b18
+22cf8bc2ec47498fe548b308a81be0486dd7e3d0 jdk7u10-b30
+2723612f5983e7d65490d7d4a3d8577026448736 jdk7u10-b31
+e7952daece16b27d69cb78f6912407c3bbaf8e83 jdk7u11-b20
+dff0f0272891b1d53497d9525567959b73476ff9 jdk7u11-b21
+24f8cb8a0a615686f8baba4d746514bae92f064d jdk7u11-b32
+4bfef14df261d69dc32e37d189e12e3fa572a83c jdk7u11-b33
+96a3c68e5741dc9ab5cb0da426511eb15fd29ede jdk7u11-b03
+1413b173730f4796fca42c89eeb804a5935b0264 jdk7u11-b04
+5c49a17bc15f4fd4722746788f5130df132cd038 jdk7u11-b05
+30057c20fbb3caa61857656d05421e56731184f2 jdk7u11-b06
+9d9440d1fa2dd872c2a2b564fc5fa4d3555afab6 jdk7u11-b07
+983fac5b27376839142ac5a8770461e4e48c2dc8 jdk7u11-b08
+b192d148731916e4b1b47b7a3e6b0a1d7ddf3f14 jdk7u13-b09
+b9ab9b203a41469a274419d26be2c04558b57ce8 jdk7u13-b10
+f5ef46204dba19679edd7492b221110fd1a0bd33 jdk7u13-b30
+b9ab9b203a41469a274419d26be2c04558b57ce8 jdk7u13-b20
+622e370c2d1e8c5f48d8f520f486dc6fcc1239c5 jdk7u15-b01
+30188388048333e213a839363329ac2cb0cf0e0d jdk7u15-b02
+7f0e7ce088ff554f64e2c102ae3718ae4d580c34 jdk7u15-b30
+3714b558333e1089e2649ead8586873abd9c0ed1 jdk7u15-b31
+f0c038610b6da1a0d4214b730aa6cb17b64d0a3b jdk7u15-b33
+e5b996dabec6ac6aa12705ce678642605ea9d476 jdk7u15-b03
+b192d148731916e4b1b47b7a3e6b0a1d7ddf3f14 jdk7u15-b32
+94e8b9b0e0ef1685e2f2fcc886e08a42a85c8e03 jdk7u17-b01
+e82d31e1f1189ae6f02d6855f0cd78074599b2e1 jdk7u17-b02
+d4366e557c4c5af62a94fc9885aed87c99abc848 jdk7u17-b30
+a6f066dd2cd526da73070d1e46c9b1e1ab1a6756 jdk7u17-b31
+f5ef46204dba19679edd7492b221110fd1a0bd33 jdk7u21-b01
+17ecd70a2247ed86a095aae9f1a201fa7feea861 jdk7u21-b02
+bf0877613aeba816d5f18ea6316d535819f628e9 jdk7u21-b03
+3e39240d7314e82b3ccff3b2a64413be9c0b6665 jdk7u21-b04
+f5a291dc9d219f68a2d4bcc72c65c014e9ec3b8b jdk7u21-b05
+94f2ebfccc5e057169284bb2c858296b235868ea jdk7u21-b06
+23a57aceeb69e688f8ce8b8361fad3a49cf4ac5f jdk7u21-b07
+ebedf04bfffe289e8bf9661b38f73ca6c0dad17c jdk7u21-b08
+b8f92ad1f0cc86d8571a0e23192e667f0ef8e421 jdk7u21-b09
+b2adfd931a2504948d4fee780e4175122be10484 jdk7u21-b10
+61e2e2d9cfcea20132b50d8fb7ead66a8a373db7 jdk7u21-b11
+3c774492beaaff241c654add2c4e683b9ff002f2 jdk7u21-b30
diff --git a/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk b/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk
index 5009bb5..465c546 100755
--- a/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk
+++ b/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2012, Oracle and/or its affiliates. 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
@@ -29,10 +29,6 @@ com_sun_corba_se_impl_orbutil_java = \
com/sun/corba/se/impl/orbutil/DenseIntMapImpl.java \
com/sun/corba/se/impl/orbutil/GetPropertyAction.java \
com/sun/corba/se/impl/orbutil/HexOutputStream.java \
- com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java \
- com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java \
- com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java \
- com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java \
com/sun/corba/se/impl/orbutil/LegacyHookGetFields.java \
com/sun/corba/se/impl/orbutil/LegacyHookPutFields.java \
com/sun/corba/se/impl/orbutil/LogKeywords.java \
@@ -45,19 +41,11 @@ com_sun_corba_se_impl_orbutil_java = \
com/sun/corba/se/impl/orbutil/ORBUtility.java \
com/sun/corba/se/impl/orbutil/ORBClassLoader.java \
com/sun/corba/se/impl/orbutil/RepIdDelegator.java \
- com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java \
- com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java \
- com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java \
- com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java \
com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java \
com/sun/corba/se/impl/orbutil/RepositoryIdStrings.java \
com/sun/corba/se/impl/orbutil/RepositoryIdUtility.java \
com/sun/corba/se/impl/orbutil/RepositoryIdInterface.java \
- com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java \
- com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java \
com/sun/corba/se/impl/orbutil/StackImpl.java \
- com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java \
- com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java \
com/sun/corba/se/impl/orbutil/closure/Future.java \
com/sun/corba/se/impl/orbutil/closure/Constant.java \
com/sun/corba/se/impl/orbutil/concurrent/Sync.java \
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java b/corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java
index c51b089..cd6d534 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. 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
@@ -322,9 +322,9 @@ class ServerCallback extends
com.sun.corba.se.spi.activation._ServerImplBase
{
private ORB orb;
- private Method installMethod ;
- private Method uninstallMethod ;
- private Method shutdownMethod ;
+ private transient Method installMethod ;
+ private transient Method uninstallMethod ;
+ private transient Method shutdownMethod ;
private Object methodArgs[] ;
ServerCallback(ORB orb, Method installMethod, Method uninstallMethod,
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java b/corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java
index 6b33f34..0177bdd 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. 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
@@ -1218,7 +1218,7 @@ public class AnyImpl extends Any
// See bug 4391648 for more info about the tcORB in this
// case.
RepositoryIdStrings repStrs
- = RepositoryIdFactory.getRepIdStringsFactory(tcORB);
+ = RepositoryIdFactory.getRepIdStringsFactory();
// Assertion: c instanceof Serializable?
@@ -1251,7 +1251,7 @@ public class AnyImpl extends Any
// Anything else
// We know that this is a TypeCodeImpl since it is our ORB
classTC = (TypeCodeImpl)ValueUtility.createTypeCodeForClass(
- tcORB, c, ORBUtility.createValueHandler(tcORB));
+ tcORB, c, ORBUtility.createValueHandler());
// Intruct classTC to store its buffer
classTC.setCaching(true);
// Update the cache
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java b/corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java
index d17d6f3..a00d66c 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. 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
@@ -269,8 +269,8 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
private final void createRepositoryIdHandlers()
{
- repIdUtil = RepositoryIdFactory.getRepIdUtility(orb);
- repIdStrs = RepositoryIdFactory.getRepIdStringsFactory(orb);
+ repIdUtil = RepositoryIdFactory.getRepIdUtility();
+ repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
}
public GIOPVersion getGIOPVersion() {
@@ -564,10 +564,7 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
checkForNegativeLength(len);
- if (orb != null && ORBUtility.isLegacyORB((ORB)orb))
- return legacyReadString(len);
- else
- return internalReadString(len);
+ return internalReadString(len);
}
private final String internalReadString(int len) {
@@ -588,54 +585,6 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
return new String(result, 0, getCharConverter().getNumChars());
}
- private final String legacyReadString(int len) {
-
- //
- // Workaround for ORBs which send string lengths of
- // zero to mean empty string.
- //
- //
- // IMPORTANT: Do not replace 'new String("")' with "", it may result
- // in a Serialization bug (See serialization.zerolengthstring) and
- // bug id: 4728756 for details
- if (len == 0)
- return new String("");
-
- len--;
- char[] c = new char[len];
-
- int n = 0;
- while (n < len) {
- int avail;
- int bytes;
- int wanted;
-
- avail = bbwi.buflen - bbwi.position();
- if (avail <= 0) {
- grow(1, 1);
- avail = bbwi.buflen - bbwi.position();
- }
- wanted = len - n;
- bytes = (wanted < avail) ? wanted : avail;
- // Microbenchmarks are showing a loop of ByteBuffer.get(int) being
- // faster than ByteBuffer.get(byte[], int, int).
- for (int i=0; i bbwi.buflen)
- alignAndCheck(1, 1);
- bbwi.position(bbwi.position() + 1);
-
- return new String(c);
- }
-
public final String read_string() {
return readStringOrIndirection(false);
}
@@ -1045,7 +994,7 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
try {
if (valueHandler == null)
- valueHandler = ORBUtility.createValueHandler(orb);
+ valueHandler = ORBUtility.createValueHandler();
value = valueHandler.readValue(parent,
indirection,
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java b/corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java
index 25e1528..3e60c48 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. 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
@@ -189,18 +189,8 @@ public class CDROutputStream_1_0 extends CDROutputStreamBase
private final void createRepositoryIdHandlers()
{
- if (orb != null) {
- // Get the appropriate versions based on the ORB version. The
- // ORB versioning info is only in the core ORB.
- repIdUtil
- = RepositoryIdFactory.getRepIdUtility(orb);
- repIdStrs
- = RepositoryIdFactory.getRepIdStringsFactory(orb);
- } else {
- // Get the latest versions
- repIdUtil = RepositoryIdFactory.getRepIdUtility();
- repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
- }
+ repIdUtil = RepositoryIdFactory.getRepIdUtility();
+ repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
}
public BufferManagerWrite getBufferManager()
@@ -705,7 +695,7 @@ public class CDROutputStream_1_0 extends CDROutputStreamBase
private void writeArray(Serializable array, Class clazz) {
if (valueHandler == null)
- valueHandler = ORBUtility.createValueHandler(orb); //d11638
+ valueHandler = ORBUtility.createValueHandler(); //d11638
// Write value_tag
int indirection = writeValueTag(mustChunk, true,
@@ -768,7 +758,7 @@ public class CDROutputStream_1_0 extends CDROutputStreamBase
private void writeRMIIIOPValueType(Serializable object, Class clazz) {
if (valueHandler == null)
- valueHandler = ORBUtility.createValueHandler(orb); //d11638
+ valueHandler = ORBUtility.createValueHandler(); //d11638
Serializable key = object;
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java b/corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java
index f87ef71..c69fb42 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
@@ -86,7 +86,7 @@ public class FVDCodeBaseImpl extends _CodeBaseImplBase
// default to using the current ORB version in case the
// vhandler is not set
if (vhandler == null) {
- vhandler = new ValueHandlerImpl(false);
+ vhandler = ValueHandlerImpl.getInstance(false);
}
// Util.getCodebase may return null which would
@@ -120,7 +120,7 @@ public class FVDCodeBaseImpl extends _CodeBaseImplBase
// default to using the current ORB version in case the
// vhandler is not set
if (vhandler == null) {
- vhandler = new ValueHandlerImpl(false);
+ vhandler = ValueHandlerImpl.getInstance(false);
}
try{
@@ -161,7 +161,7 @@ public class FVDCodeBaseImpl extends _CodeBaseImplBase
// default to using the current ORB version in case the
// vhandler is not set
if (vhandler == null) {
- vhandler = new ValueHandlerImpl(false);
+ vhandler = ValueHandlerImpl.getInstance(false);
}
Stack repIds = new Stack();
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java b/corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java
index c2e23a4..05d2fe8 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. 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
@@ -25,7 +25,7 @@
/*
* Licensed Materials - Property of IBM
* RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999 All Rights Reserved
+ * Copyright IBM Corp. 1998 2012 All Rights Reserved
*
*/
@@ -56,7 +56,8 @@ import java.io.Serializable;
import java.util.Arrays;
import java.util.Comparator;
-import java.util.Hashtable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
import com.sun.corba.se.impl.util.RepositoryId;
@@ -83,8 +84,6 @@ public class ObjectStreamClass implements java.io.Serializable {
private static Object noArgsList[] = {};
private static Class noTypesList[] = {};
- private static Hashtable translatedFields;
-
/** true if represents enum type */
private boolean isEnum;
@@ -384,6 +383,55 @@ public class ObjectStreamClass implements java.io.Serializable {
*/
}
+ private static final class PersistentFieldsValue {
+ private final ConcurrentMap map = new ConcurrentHashMap();
+ private static final Object NULL_VALUE =
+ (PersistentFieldsValue.class.getName() + ".NULL_VALUE");
+
+ PersistentFieldsValue() { }
+
+ ObjectStreamField[] get(Class type) {
+ Object value = map.get(type);
+ if (value == null) {
+ value = computeValue(type);
+ map.putIfAbsent(type, value);
+ }
+ return ((value == NULL_VALUE) ? null : (ObjectStreamField[])value);
+ }
+
+ private static Object computeValue(Class> type) {
+ try {
+ Field pf = type.getDeclaredField("serialPersistentFields");
+ int mods = pf.getModifiers();
+ if (Modifier.isPrivate(mods) && Modifier.isStatic(mods) &&
+ Modifier.isFinal(mods)) {
+ pf.setAccessible(true);
+ java.io.ObjectStreamField[] fields =
+ (java.io.ObjectStreamField[])pf.get(type);
+ return translateFields(fields);
+ }
+ } catch (NoSuchFieldException e1) {
+ } catch (IllegalAccessException e2) {
+ } catch (IllegalArgumentException e3) {
+ } catch (ClassCastException e4) { }
+ return NULL_VALUE;
+ }
+
+ private static ObjectStreamField[] translateFields(
+ java.io.ObjectStreamField[] fields) {
+ ObjectStreamField[] translation =
+ new ObjectStreamField[fields.length];
+ for (int i = 0; i < fields.length; i++) {
+ translation[i] = new ObjectStreamField(fields[i].getName(),
+ fields[i].getType());
+ }
+ return translation;
+ }
+ }
+
+ private static final PersistentFieldsValue persistentFieldsValue =
+ new PersistentFieldsValue();
+
/*
* Initialize class descriptor. This method is only invoked on class
* descriptors created via calls to lookupInternal(). This method is kept
@@ -416,35 +464,7 @@ public class ObjectStreamClass implements java.io.Serializable {
* If it is declared, use the declared serialPersistentFields.
* Otherwise, extract the fields from the class itself.
*/
- try {
- Field pf = cl.getDeclaredField("serialPersistentFields");
- // serial bug 7; the serialPersistentFields were not
- // being read and stored as Accessible bit was not set
- pf.setAccessible(true);
- // serial bug 7; need to find if the field is of type
- // java.io.ObjectStreamField
- java.io.ObjectStreamField[] f =
- (java.io.ObjectStreamField[])pf.get(cl);
- int mods = pf.getModifiers();
- if ((Modifier.isPrivate(mods)) &&
- (Modifier.isStatic(mods)) &&
- (Modifier.isFinal(mods)))
- {
- fields = (ObjectStreamField[])translateFields((Object[])pf.get(cl));
- }
- } catch (NoSuchFieldException e) {
- fields = null;
- } catch (IllegalAccessException e) {
- fields = null;
- } catch (IllegalArgumentException e) {
- fields = null;
- } catch (ClassCastException e) {
- /* Thrown if a field serialPersistentField exists
- * but it is not of type ObjectStreamField.
- */
- fields = null;
- }
-
+ fields = persistentFieldsValue.get(cl);
if (fields == null) {
/* Get all of the declared fields for this
@@ -641,44 +661,6 @@ public class ObjectStreamClass implements java.io.Serializable {
superclass = null;
}
- private static Object[] translateFields(Object objs[])
- throws NoSuchFieldException {
- try{
- java.io.ObjectStreamField fields[] = (java.io.ObjectStreamField[])objs;
- Object translation[] = null;
-
- if (translatedFields == null)
- translatedFields = new Hashtable();
-
- translation = (Object[])translatedFields.get(fields);
-
- if (translation != null)
- return translation;
- else {
- Class osfClass = Class.forName("com.sun.corba.se.impl.io.ObjectStreamField");
- translation = (Object[])java.lang.reflect.Array.newInstance(osfClass, objs.length);
- Object arg[] = new Object[2];
- Class types[] = {String.class, Class.class};
- Constructor constructor = osfClass.getDeclaredConstructor(types);
- for (int i = fields.length -1; i >= 0; i--){
- arg[0] = fields[i].getName();
- arg[1] = fields[i].getType();
-
- translation[i] = constructor.newInstance(arg);
- }
- translatedFields.put(fields, translation);
-
- }
-
- return (Object[])translation;
- }
- catch(Throwable t){
- NoSuchFieldException nsfe = new NoSuchFieldException();
- nsfe.initCause( t ) ;
- throw nsfe ;
- }
- }
-
/*
* Set the class this version descriptor matches.
* The base class name and serializable hash must match.
@@ -1555,8 +1537,8 @@ public class ObjectStreamClass implements java.io.Serializable {
private boolean hasExternalizableBlockData;
Method writeObjectMethod;
Method readObjectMethod;
- private Method writeReplaceObjectMethod;
- private Method readResolveObjectMethod;
+ private transient Method writeReplaceObjectMethod;
+ private transient Method readResolveObjectMethod;
private Constructor cons ;
/**
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java b/corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java
index e1c82cf..fdf3501 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. 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
@@ -53,7 +53,7 @@ import com.sun.corba.se.spi.logging.CORBALogDomains;
import com.sun.corba.se.impl.logging.OMGSystemException;
import com.sun.corba.se.impl.logging.UtilSystemException;
-public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat {
+public final class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat {
// Property to override our maximum stream format version
public static final String FORMAT_VERSION_PROPERTY
@@ -150,14 +150,22 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
writeValueWithVersion(out, value, streamFormatVersion);
}
- public ValueHandlerImpl(){}
+ private ValueHandlerImpl(){}
- public ValueHandlerImpl(boolean isInputStream) {
+ private ValueHandlerImpl(boolean isInputStream) {
this();
useHashtables = false;
this.isInputStream = isInputStream;
}
+ static ValueHandlerImpl getInstance() {
+ return new ValueHandlerImpl();
+ }
+
+ static ValueHandlerImpl getInstance(boolean isInputStream) {
+ return new ValueHandlerImpl(isInputStream);
+ }
+
/**
* Writes the value to the stream using java semantics.
* @param out The stream to write the value to
@@ -458,12 +466,7 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
return ObjectStreamClass.lookup(value.getClass()).writeReplace(value);
}
- /**
- * Encapsulates writing of Java char arrays so that the 1.3 subclass
- * can override it without exposing internals across packages. This
- * is a fix for bug 4367783.
- */
- protected void writeCharArray(org.omg.CORBA_2_3.portable.OutputStream out,
+ private void writeCharArray(org.omg.CORBA_2_3.portable.OutputStream out,
char[] array,
int offset,
int length)
@@ -576,12 +579,7 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
}
}
- /**
- * Encapsulates reading of Java char arrays so that the 1.3 subclass
- * can override it without exposing internals across packages. This
- * is a fix for bug 4367783.
- */
- protected void readCharArray(org.omg.CORBA_2_3.portable.InputStream in,
+ private void readCharArray(org.omg.CORBA_2_3.portable.InputStream in,
char[] array,
int offset,
int length)
@@ -795,7 +793,7 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
return RepositoryId.cache.getId(repId).isSequence();
}
- protected String getOutputStreamClassName() {
+ private String getOutputStreamClassName() {
return "com.sun.corba.se.impl.io.IIOPOutputStream";
}
@@ -843,29 +841,11 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
private IIOPOutputStream createOutputStreamBuiltInNoPriv(
final String name
) throws IOException {
- return
- name.equals(
- IIOPOutputStream
- .class.getName()
- ) ?
- new IIOPOutputStream() :
-
- name.equals(
- com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3
- .class.getName()
- ) ?
- new com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3() :
-
- name.equals(
- com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3_1
- .class.getName()
- ) ?
- new com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3_1() :
-
- null;
+ return name.equals(IIOPOutputStream.class.getName()) ?
+ new IIOPOutputStream() : null;
}
- protected String getInputStreamClassName() {
+ private String getInputStreamClassName() {
return "com.sun.corba.se.impl.io.IIOPInputStream";
}
@@ -913,26 +893,8 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
private IIOPInputStream createInputStreamBuiltInNoPriv(
final String name
) throws IOException {
- return
- name.equals(
- IIOPInputStream
- .class.getName()
- ) ?
- new IIOPInputStream() :
-
- name.equals(
- com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3
- .class.getName()
- ) ?
- new com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3() :
-
- name.equals(
- com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3_1
- .class.getName()
- ) ?
- new com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3_1() :
-
- null;
+ return name.equals(IIOPInputStream.class.getName()) ?
+ new IIOPInputStream() : null;
}
/**
@@ -958,12 +920,7 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
}
- /**
- * Our JDK 1.3 and JDK 1.3.1 behavior subclasses override this.
- * The correct behavior is for a Java char to map to a CORBA wchar,
- * but our older code mapped it to a CORBA char.
- */
- protected TCKind getJavaCharTCKind() {
+ TCKind getJavaCharTCKind() {
return TCKind.tk_wchar;
}
}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java b/corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java
index 84bb168..41d85a2 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. 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
@@ -93,6 +93,14 @@ public class ValueUtility {
null, // tk_abstract_interface 32
};
+ static {
+ sun.corba.SharedSecrets.setJavaCorbaAccess(new sun.corba.JavaCorbaAccess() {
+ public ValueHandlerImpl newValueHandlerImpl() {
+ return ValueHandlerImpl.getInstance();
+ }
+ });
+ }
+
public static String getSignature(ValueMember member)
throws ClassNotFoundException {
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java b/corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java
index 7721999..aa2c648 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java
@@ -112,6 +112,9 @@ import com.sun.corba.se.impl.util.JDKBridge;
import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.impl.logging.UtilSystemException;
import com.sun.corba.se.spi.logging.CORBALogDomains;
+import sun.corba.SharedSecrets;
+import sun.corba.JavaCorbaAccess;
+
/**
* Provides utility methods that can be used by stubs and ties to
@@ -125,7 +128,8 @@ public class Util implements javax.rmi.CORBA.UtilDelegate
// Maps targets to ties.
private static IdentityHashtable exportedServants = new IdentityHashtable();
- private static ValueHandlerImpl valueHandlerSingleton = new ValueHandlerImpl();
+ private static final ValueHandlerImpl valueHandlerSingleton =
+ SharedSecrets.getJavaCorbaAccess().newValueHandlerImpl();
private UtilSystemException utilWrapper = UtilSystemException.get(
CORBALogDomains.RPC_ENCODING);
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java b/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java
index 9c03173..5db8573 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java
@@ -840,7 +840,7 @@ public class ORBImpl extends com.sun.corba.se.spi.orb.ORB
// backward compatability 4365188
CodeBase cb;
- ValueHandler vh = ORBUtility.createValueHandler(this);
+ ValueHandler vh = ORBUtility.createValueHandler();
cb = (CodeBase)vh.getRunTimeCodeBase();
return ORBUtility.connectAndGetIOR( this, cb ) ;
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java
deleted file mode 100755
index 235d734..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.corba.se.impl.orbutil;
-
-import java.io.*;
-import java.util.Hashtable;
-
-/**
- * Implements legacy behavior from before Ladybird to maintain
- * backwards compatibility.
- */
-public class IIOPInputStream_1_3 extends com.sun.corba.se.impl.io.IIOPInputStream
-{
- // The newer version in the io package correctly reads a wstring instead.
- // This concerns bug 4379597.
- protected String internalReadUTF(org.omg.CORBA.portable.InputStream stream)
- {
- return stream.read_string();
- }
-
- /**
- * Before JDK 1.3.1_01, the PutField/GetField implementation
- * actually sent a Hashtable.
- */
- public ObjectInputStream.GetField readFields()
- throws IOException, ClassNotFoundException, NotActiveException {
- Hashtable fields = (Hashtable)readObject();
- return new LegacyHookGetFields(fields);
- }
-
- public IIOPInputStream_1_3()
- throws java.io.IOException {
- super();
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java
deleted file mode 100755
index 1946f5e..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-package com.sun.corba.se.impl.orbutil;
-
-import java.io.*;
-import java.util.Hashtable;
-
-/**
- * Implements legacy behavior from Ladybird to maintain
- * backwards compatibility.
- */
-public class IIOPInputStream_1_3_1 extends com.sun.corba.se.impl.io.IIOPInputStream
-{
- public IIOPInputStream_1_3_1()
- throws java.io.IOException {
- super();
- }
-
- /**
- * Before JDK 1.3.1_01, the PutField/GetField implementation
- * actually sent a Hashtable.
- */
- public ObjectInputStream.GetField readFields()
- throws IOException, ClassNotFoundException, NotActiveException {
-
- Hashtable fields = (Hashtable)readObject();
- return new LegacyHookGetFields(fields);
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java
deleted file mode 100755
index e9d81cd..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.corba.se.impl.orbutil;
-
-import java.io.*;
-
-/**
- * Implements legacy behavior from before Ladybird to maintain
- * backwards compatibility.
- */
-public class IIOPOutputStream_1_3 extends com.sun.corba.se.impl.io.IIOPOutputStream
-{
- // We can't assume that the superclass's putFields
- // member will be non-private. We must allow
- // the RI to run on JDK 1.3.1 FCS as well as
- // the JDK 1.3.1_01 patch.
- private ObjectOutputStream.PutField putFields_1_3;
-
- // The newer version in the io package correctly writes a wstring instead.
- // This concerns bug 4379597.
- protected void internalWriteUTF(org.omg.CORBA.portable.OutputStream stream,
- String data)
- {
- stream.write_string(data);
- }
-
- public IIOPOutputStream_1_3()
- throws java.io.IOException {
- super();
- }
-
- /**
- * Before JDK 1.3.1_01, the PutField/GetField implementation
- * actually sent a Hashtable.
- */
- public ObjectOutputStream.PutField putFields()
- throws IOException {
- putFields_1_3 = new LegacyHookPutFields();
- return putFields_1_3;
- }
-
- public void writeFields()
- throws IOException {
- putFields_1_3.write(this);
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java
deleted file mode 100755
index 6c7bfd4..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-package com.sun.corba.se.impl.orbutil;
-
-import java.io.*;
-import java.util.Hashtable;
-
-/**
- * Implements legacy behavior from Ladybird to maintain
- * backwards compatibility.
- */
-public class IIOPOutputStream_1_3_1 extends com.sun.corba.se.impl.io.IIOPOutputStream
-{
- // We can't assume that the superclass's putFields
- // member will be non-private. We must allow
- // the RI to run on JDK 1.3.1 FCS as well as
- // the JDK 1.3.1_01 patch.
- private ObjectOutputStream.PutField putFields_1_3_1;
-
- public IIOPOutputStream_1_3_1()
- throws java.io.IOException {
- super();
- }
-
- /**
- * Before JDK 1.3.1_01, the PutField/GetField implementation
- * actually sent a Hashtable.
- */
- public ObjectOutputStream.PutField putFields()
- throws IOException {
-
- putFields_1_3_1 = new LegacyHookPutFields();
- return putFields_1_3_1;
- }
-
- public void writeFields()
- throws IOException {
-
- putFields_1_3_1.write(this);
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java
index b4cc902..23d51f9 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. 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
@@ -160,45 +160,13 @@ public final class ORBUtility {
}
/**
- * Creates the correct ValueHandler for the given ORB,
- * querying ORBVersion information. If the ORB or
- * ORBVersion is null, gets the ValueHandler from
- * Util.createValueHandler.
+ * Return default ValueHandler
*/
- public static ValueHandler createValueHandler(ORB orb) {
-
- if (orb == null)
- return Util.createValueHandler();
-
- ORBVersion version = orb.getORBVersion();
-
- if (version == null)
- return Util.createValueHandler();
-
- if (version.equals(ORBVersionFactory.getOLD()))
- return new ValueHandlerImpl_1_3();
- if (version.equals(ORBVersionFactory.getNEW()))
- return new ValueHandlerImpl_1_3_1();
-
+ public static ValueHandler createValueHandler() {
return Util.createValueHandler();
}
/**
- * Returns true if the given ORB could accurately be determined to be a
- * Kestrel or earlier ORB. Note: If passed the ORBSingleton, this will return
- * false.
- */
- public static boolean isLegacyORB(ORB orb)
- {
- try {
- ORBVersion currentORB = orb.getORBVersion();
- return currentORB.equals( ORBVersionFactory.getOLD() ) ;
- } catch (SecurityException se) {
- return false;
- }
- }
-
- /**
* Returns true if it was accurately determined that the remote ORB is
* a foreign (non-JavaSoft) ORB. Note: If passed the ORBSingleton, this
* will return false.
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java
index c9a6f8f..891a488 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. 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
@@ -1119,8 +1119,8 @@ public class ObjectStreamClass_1_3_1 implements java.io.Serializable {
private boolean hasExternalizableBlockData;
Method writeObjectMethod;
Method readObjectMethod;
- private Method writeReplaceObjectMethod;
- private Method readResolveObjectMethod;
+ private transient Method writeReplaceObjectMethod;
+ private transient Method readResolveObjectMethod;
/*
* ObjectStreamClass_1_3_1 that this one was built from.
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java
deleted file mode 100755
index c4e2183..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.orbutil;
-
-import org.omg.CORBA.ORB;
-import java.io.Serializable;
-import java.util.Hashtable;
-import java.net.MalformedURLException;
-import com.sun.corba.se.impl.io.TypeMismatchException;
-import com.sun.corba.se.impl.util.RepositoryId;
-
-/**
- * Delegates to the RepositoryId_1_3 implementation in
- * com.sun.corba.se.impl.orbutil. This is necessary to
- * overcome the fact that many of RepositoryId's methods
- * are static.
- */
-public final class RepIdDelegator_1_3
- implements RepositoryIdStrings,
- RepositoryIdUtility,
- RepositoryIdInterface
-{
- // RepositoryIdFactory methods
-
- public String createForAnyType(Class type) {
- return RepositoryId_1_3.createForAnyType(type);
- }
-
- public String createForJavaType(Serializable ser)
- throws TypeMismatchException
- {
- return RepositoryId_1_3.createForJavaType(ser);
- }
-
- public String createForJavaType(Class clz)
- throws TypeMismatchException
- {
- return RepositoryId_1_3.createForJavaType(clz);
- }
-
- public String createSequenceRepID(java.lang.Object ser) {
- return RepositoryId_1_3.createSequenceRepID(ser);
- }
-
- public String createSequenceRepID(Class clazz) {
- return RepositoryId_1_3.createSequenceRepID(clazz);
- }
-
- public RepositoryIdInterface getFromString(String repIdString) {
- return new RepIdDelegator_1_3(RepositoryId_1_3.cache.getId(repIdString));
- }
-
- // RepositoryIdUtility methods
-
- public boolean isChunkedEncoding(int valueTag) {
- return RepositoryId.isChunkedEncoding(valueTag);
- }
-
- public boolean isCodeBasePresent(int valueTag) {
- return RepositoryId.isCodeBasePresent(valueTag);
- }
-
- public String getClassDescValueRepId() {
- return RepositoryId_1_3.kClassDescValueRepID;
- }
-
- public String getWStringValueRepId() {
- return RepositoryId_1_3.kWStringValueRepID;
- }
-
- public int getTypeInfo(int valueTag) {
- return RepositoryId.getTypeInfo(valueTag);
- }
-
- public int getStandardRMIChunkedNoRepStrId() {
- return RepositoryId.kPreComputed_StandardRMIChunked_NoRep;
- }
-
- public int getCodeBaseRMIChunkedNoRepStrId() {
- return RepositoryId.kPreComputed_CodeBaseRMIChunked_NoRep;
- }
-
- public int getStandardRMIChunkedId() {
- return RepositoryId.kPreComputed_StandardRMIChunked;
- }
-
- public int getCodeBaseRMIChunkedId() {
- return RepositoryId.kPreComputed_CodeBaseRMIChunked;
- }
-
- public int getStandardRMIUnchunkedId() {
- return RepositoryId.kPreComputed_StandardRMIUnchunked;
- }
-
- public int getCodeBaseRMIUnchunkedId() {
- return RepositoryId.kPreComputed_CodeBaseRMIUnchunked;
- }
-
- public int getStandardRMIUnchunkedNoRepStrId() {
- return RepositoryId.kPreComputed_StandardRMIUnchunked_NoRep;
- }
-
- public int getCodeBaseRMIUnchunkedNoRepStrId() {
- return RepositoryId.kPreComputed_CodeBaseRMIUnchunked_NoRep;
- }
-
- // RepositoryIdInterface methods
-
- public Class getClassFromType() throws ClassNotFoundException {
- return delegate.getClassFromType();
- }
-
- public Class getClassFromType(String codebaseURL)
- throws ClassNotFoundException, MalformedURLException
- {
- return delegate.getClassFromType(codebaseURL);
- }
-
- public Class getClassFromType(Class expectedType,
- String codebaseURL)
- throws ClassNotFoundException, MalformedURLException
- {
- return delegate.getClassFromType(expectedType, codebaseURL);
- }
-
- public String getClassName() {
- return delegate.getClassName();
- }
-
- // Constructor used for factory/utility cases
- public RepIdDelegator_1_3() {}
-
- // Constructor used by getIdFromString. All non-static
- // RepositoryId methods will use the provided delegate.
- private RepIdDelegator_1_3(RepositoryId_1_3 _delegate) {
- this.delegate = _delegate;
- }
-
- private RepositoryId_1_3 delegate = null;
-
- public String toString() {
- if (delegate != null)
- return delegate.toString();
- else
- return this.getClass().getName();
- }
-
- public boolean equals(Object obj) {
- if (delegate != null)
- return delegate.equals(obj);
- else
- return super.equals(obj);
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java
deleted file mode 100755
index dc1195f..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.orbutil;
-
-import org.omg.CORBA.ORB;
-import java.io.Serializable;
-import java.util.Hashtable;
-import java.net.MalformedURLException;
-import com.sun.corba.se.impl.io.TypeMismatchException;
-import com.sun.corba.se.impl.util.RepositoryId;
-
-/**
- * Delegates to the RepositoryId_1_3_1 implementation in
- * com.sun.corba.se.impl.orbutil. This is necessary to
- * overcome the fact that many of RepositoryId's methods
- * are static.
- */
-public final class RepIdDelegator_1_3_1
- implements RepositoryIdStrings,
- RepositoryIdUtility,
- RepositoryIdInterface
-{
- // RepositoryIdFactory methods
-
- public String createForAnyType(Class type) {
- return RepositoryId_1_3_1.createForAnyType(type);
- }
-
- public String createForJavaType(Serializable ser)
- throws TypeMismatchException
- {
- return RepositoryId_1_3_1.createForJavaType(ser);
- }
-
- public String createForJavaType(Class clz)
- throws TypeMismatchException
- {
- return RepositoryId_1_3_1.createForJavaType(clz);
- }
-
- public String createSequenceRepID(java.lang.Object ser) {
- return RepositoryId_1_3_1.createSequenceRepID(ser);
- }
-
- public String createSequenceRepID(Class clazz) {
- return RepositoryId_1_3_1.createSequenceRepID(clazz);
- }
-
- public RepositoryIdInterface getFromString(String repIdString) {
- return new RepIdDelegator_1_3_1(RepositoryId_1_3_1.cache.getId(repIdString));
- }
-
- // RepositoryIdUtility methods
-
- public boolean isChunkedEncoding(int valueTag) {
- return RepositoryId.isChunkedEncoding(valueTag);
- }
-
- public boolean isCodeBasePresent(int valueTag) {
- return RepositoryId.isCodeBasePresent(valueTag);
- }
-
- public String getClassDescValueRepId() {
- return RepositoryId_1_3_1.kClassDescValueRepID;
- }
-
- public String getWStringValueRepId() {
- return RepositoryId_1_3_1.kWStringValueRepID;
- }
-
- public int getTypeInfo(int valueTag) {
- return RepositoryId.getTypeInfo(valueTag);
- }
-
- public int getStandardRMIChunkedNoRepStrId() {
- return RepositoryId.kPreComputed_StandardRMIChunked_NoRep;
- }
-
- public int getCodeBaseRMIChunkedNoRepStrId() {
- return RepositoryId.kPreComputed_CodeBaseRMIChunked_NoRep;
- }
-
- public int getStandardRMIChunkedId() {
- return RepositoryId.kPreComputed_StandardRMIChunked;
- }
-
- public int getCodeBaseRMIChunkedId() {
- return RepositoryId.kPreComputed_CodeBaseRMIChunked;
- }
-
- public int getStandardRMIUnchunkedId() {
- return RepositoryId.kPreComputed_StandardRMIUnchunked;
- }
-
- public int getCodeBaseRMIUnchunkedId() {
- return RepositoryId.kPreComputed_CodeBaseRMIUnchunked;
- }
-
- public int getStandardRMIUnchunkedNoRepStrId() {
- return RepositoryId.kPreComputed_StandardRMIUnchunked_NoRep;
- }
-
- public int getCodeBaseRMIUnchunkedNoRepStrId() {
- return RepositoryId.kPreComputed_CodeBaseRMIUnchunked_NoRep;
- }
-
- // RepositoryIdInterface methods
-
- public Class getClassFromType() throws ClassNotFoundException {
- return delegate.getClassFromType();
- }
-
- public Class getClassFromType(String codebaseURL)
- throws ClassNotFoundException, MalformedURLException
- {
- return delegate.getClassFromType(codebaseURL);
- }
-
- public Class getClassFromType(Class expectedType,
- String codebaseURL)
- throws ClassNotFoundException, MalformedURLException
- {
- return delegate.getClassFromType(expectedType, codebaseURL);
- }
-
- public String getClassName() {
- return delegate.getClassName();
- }
-
- // Constructor used for factory/utility cases
- public RepIdDelegator_1_3_1() {}
-
- // Constructor used by getIdFromString. All non-static
- // RepositoryId methods will use the provided delegate.
- private RepIdDelegator_1_3_1(RepositoryId_1_3_1 _delegate) {
- this.delegate = _delegate;
- }
-
- private RepositoryId_1_3_1 delegate = null;
-
- public String toString() {
- if (delegate != null)
- return delegate.toString();
- else
- return this.getClass().getName();
- }
-
- public boolean equals(Object obj) {
- if (delegate != null)
- return delegate.equals(obj);
- else
- return super.equals(obj);
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java
deleted file mode 100755
index 3a35b33..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999 All Rights Reserved
- *
- */
-
-package com.sun.corba.se.impl.orbutil;
-
-import java.util.Stack;
-import java.util.Hashtable;
-import java.util.EmptyStackException;
-import java.util.Enumeration;
-
-// Really limited pool - in this case just creating several at a time...
-class RepositoryIdPool_1_3 extends Stack {
-
- private static int MAX_CACHE_SIZE = 4;
- private RepositoryIdCache_1_3 cache;
-
- public final synchronized RepositoryId_1_3 popId() {
-
- try {
- return (RepositoryId_1_3)super.pop();
- }
- catch(EmptyStackException e) {
- increasePool(5);
- return (RepositoryId_1_3)super.pop();
- }
-
- }
-
- // Pool management
- final void increasePool(int size) {
- //if (cache.size() <= MAX_CACHE_SIZE)
- for (int i = size; i > 0; i--)
- push(new RepositoryId_1_3());
- /*
- // _REVISIT_ This will not work w/out either thread tracing or weak references. I am
- // betting that thread tracing almost completely negates benefit of reuse. Until either
- // 1.2 only inclusion or proof to the contrary, I'll leave it this way...
- else {
- int numToReclaim = cache.size() / 2;
- Enumeration keys = cache.keys();
- Enumeration elements = cache.elements();
- for (int i = numToReclaim; i > 0; i--) {
- Object key = keys.nextElement();
- Object element = elements.nextElement();
-
- push(element);
- cache.remove(key);
- }
- }
- */
- }
-
- final void setCaches(RepositoryIdCache_1_3 cache) {
- this.cache = cache;
- }
-
-}
-
-public class RepositoryIdCache_1_3 extends Hashtable {
-
- private RepositoryIdPool_1_3 pool = new RepositoryIdPool_1_3();
-
- public RepositoryIdCache_1_3() {
- pool.setCaches(this);
- }
-
- public final synchronized RepositoryId_1_3 getId(String key) {
- RepositoryId_1_3 repId = (RepositoryId_1_3)super.get(key);
-
- if (repId != null)
- return repId;
- else {
- //repId = pool.popId().init(key);
- repId = new RepositoryId_1_3(key);
- put(key, repId);
- return repId;
- }
-
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java
deleted file mode 100755
index 11acc5b..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.orbutil;
-
-import java.util.Stack;
-import java.util.Hashtable;
-import java.util.EmptyStackException;
-import java.util.Enumeration;
-
-// Really limited pool - in this case just creating several at a time...
-class RepositoryIdPool_1_3_1 extends Stack {
-
- private static int MAX_CACHE_SIZE = 4;
- private RepositoryIdCache_1_3_1 cache;
-
- public final synchronized RepositoryId_1_3_1 popId() {
-
- try {
- return (RepositoryId_1_3_1)super.pop();
- }
- catch(EmptyStackException e) {
- increasePool(5);
- return (RepositoryId_1_3_1)super.pop();
- }
-
- }
-
- // Pool management
- final void increasePool(int size) {
- //if (cache.size() <= MAX_CACHE_SIZE)
- for (int i = size; i > 0; i--)
- push(new RepositoryId_1_3_1());
- /*
- // _REVISIT_ This will not work w/out either thread tracing or weak references. I am
- // betting that thread tracing almost completely negates benefit of reuse. Until either
- // 1.2 only inclusion or proof to the contrary, I'll leave it this way...
- else {
- int numToReclaim = cache.size() / 2;
- Enumeration keys = cache.keys();
- Enumeration elements = cache.elements();
- for (int i = numToReclaim; i > 0; i--) {
- Object key = keys.nextElement();
- Object element = elements.nextElement();
-
- push(element);
- cache.remove(key);
- }
- }
- */
- }
-
- final void setCaches(RepositoryIdCache_1_3_1 cache) {
- this.cache = cache;
- }
-
-}
-
-public class RepositoryIdCache_1_3_1 extends Hashtable {
-
- private RepositoryIdPool_1_3_1 pool = new RepositoryIdPool_1_3_1();
-
- public RepositoryIdCache_1_3_1() {
- pool.setCaches(this);
- }
-
- public final synchronized RepositoryId_1_3_1 getId(String key) {
- RepositoryId_1_3_1 repId = (RepositoryId_1_3_1)super.get(key);
-
- if (repId != null)
- return repId;
- else {
- //repId = pool.popId().init(key);
- repId = new RepositoryId_1_3_1(key);
- put(key, repId);
- return repId;
- }
-
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java
index 3501468..5f3a237 100755
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. 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
@@ -30,12 +30,6 @@ import com.sun.corba.se.spi.orb.ORB;
public abstract class RepositoryIdFactory
{
- private static final RepIdDelegator_1_3 legacyDelegator
- = new RepIdDelegator_1_3();
-
- private static final RepIdDelegator_1_3_1 ladybirdDelegator
- = new RepIdDelegator_1_3_1();
-
private static final RepIdDelegator currentDelegator
= new RepIdDelegator();
@@ -48,29 +42,6 @@ public abstract class RepositoryIdFactory
}
/**
- * Checks the version of the ORB and returns the appropriate
- * RepositoryIdStrings instance.
- */
- public static RepositoryIdStrings getRepIdStringsFactory(ORB orb)
- {
- if (orb != null) {
- switch (orb.getORBVersion().getORBType()) {
- case ORBVersion.NEWER:
- case ORBVersion.FOREIGN:
- case ORBVersion.JDK1_3_1_01:
- return currentDelegator;
- case ORBVersion.OLD:
- return legacyDelegator;
- case ORBVersion.NEW:
- return ladybirdDelegator;
- default:
- return currentDelegator;
- }
- } else
- return currentDelegator;
- }
-
- /**
* Returns the latest version RepositoryIdUtility instance
*/
public static RepositoryIdUtility getRepIdUtility()
@@ -78,26 +49,4 @@ public abstract class RepositoryIdFactory
return currentDelegator;
}
- /**
- * Checks the version of the ORB and returns the appropriate
- * RepositoryIdUtility instance.
- */
- public static RepositoryIdUtility getRepIdUtility(ORB orb)
- {
- if (orb != null) {
- switch (orb.getORBVersion().getORBType()) {
- case ORBVersion.NEWER:
- case ORBVersion.FOREIGN:
- case ORBVersion.JDK1_3_1_01:
- return currentDelegator;
- case ORBVersion.OLD:
- return legacyDelegator;
- case ORBVersion.NEW:
- return ladybirdDelegator;
- default:
- return currentDelegator;
- }
- } else
- return currentDelegator;
- }
}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java
deleted file mode 100755
index 8cf9edd..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java
+++ /dev/null
@@ -1,990 +0,0 @@
-/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999 All Rights Reserved
- *
- */
-
-package com.sun.corba.se.impl.orbutil;
-
-import java.util.StringTokenizer;
-import java.util.Hashtable;
-import java.io.IOException;
-import java.lang.reflect.Method;
-
-// Imports for using codebase URL to load class
-import java.net.MalformedURLException;
-import org.omg.CORBA.portable.ValueBase;
-import org.omg.CORBA.portable.IDLEntity;
-
-import com.sun.corba.se.impl.util.JDKBridge;
-import com.sun.corba.se.impl.util.Utility;
-import com.sun.corba.se.impl.util.PackagePrefixChecker;
-import com.sun.corba.se.impl.util.IdentityHashtable;
-import com.sun.corba.se.impl.io.ObjectStreamClass;
-
-import javax.rmi.CORBA.Util;
-
-// keeping the original RepositoryId class that was shipped in
-// JDK 1.3. It has interoperability bugs
-
-public class RepositoryId_1_3 {
-
- // Legal IDL Identifier characters (1 = legal). Note
- // that '.' (2E) is marked as legal even though it is
- // not legal in IDL. This allows us to treat a fully
- // qualified Java name with '.' package separators
- // uniformly, and is safe because that is the only
- // legal use of '.' in a Java name.
-
- public static final RepositoryIdCache_1_3 cache = new RepositoryIdCache_1_3();
- private static final byte[] IDL_IDENTIFIER_CHARS = {
-
- // 0 1 2 3 4 5 6 7 8 9 a b c d e f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 00-0f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 10-1f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0, // 20-2f
- 1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0, // 30-3f
- 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 40-4f
- 1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,1, // 50-5f
- 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 60-6f
- 1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0, // 70-7f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 80-8f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 90-9f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // a0-af
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // b0-bf
- 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // c0-cf
- 0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // d0-df
- 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // e0-ef
- 0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // f0-ff
- };
-
- private static String defaultServerURL = null;
- private static boolean useCodebaseOnly = false;
-
- static {
- if (defaultServerURL == null)
- defaultServerURL = (String)JDKBridge.getLocalCodebase();
- useCodebaseOnly = JDKBridge.useCodebaseOnly();
-
- }
-
- private static IdentityHashtable classToRepStr = new IdentityHashtable();
- private static IdentityHashtable classIDLToRepStr = new IdentityHashtable();
- private static IdentityHashtable classSeqToRepStr = new IdentityHashtable();
-
- private static IdentityHashtable repStrToByteArray = new IdentityHashtable();
- private static Hashtable repStrToClass = new Hashtable();
-
- private String repId = null;
- private boolean isSupportedFormat = true;
- private String typeString = null;
- private String versionString = null;
- private boolean isSequence = false;
- private boolean isRMIValueType = false;
- private boolean isIDLType = false;
- private String completeClassName = null;
- private String unqualifiedName = null;
- private String definedInId = null;
- private Class clazz = null;
- private String suid = null, actualSuid = null;
- private long suidLong = ObjectStreamClass.kDefaultUID, actualSuidLong = ObjectStreamClass.kDefaultUID;
-
- // Repository ID fragments
- private static final String kValuePrefix = "RMI:";
- private static final String kIDLPrefix = "IDL:";
- private static final String kIDLNamePrefix = "omg.org/";
- private static final String kIDLClassnamePrefix = "org.omg.";
- private static final String kSequencePrefix = "[";
- private static final String kCORBAPrefix = "CORBA/";
- private static final String kArrayPrefix = kValuePrefix + kSequencePrefix + kCORBAPrefix;
- private static final int kValuePrefixLength = kValuePrefix.length();
- private static final int kIDLPrefixLength = kIDLPrefix.length();
- private static final int kSequencePrefixLength = kSequencePrefix.length();
- private static final String kInterfaceHashCode = ":0000000000000000";
- private static final String kInterfaceOnlyHashStr = "0000000000000000";
- private static final String kExternalizableHashStr = "0000000000000001";
-
- // Value tag utility methods and constants
- public static final int kInitialValueTag= 0x7fffff00;
- public static final int kNoTypeInfo = 0;
- public static final int kSingleRepTypeInfo = 0x02;
- public static final int kPartialListTypeInfo = 0x06;
- public static final int kChunkedMask = 0x08;
-
- // Public, well known repository IDs
-
- // _REVISIT_ : A table structure with a good search routine for all of this
- // would be more efficient and easier to maintain...
-
- // String
- public static final String kWStringValueVersion = "1.0";
- public static final String kWStringValueHash = ":"+kWStringValueVersion;
- public static final String kWStringStubValue = "WStringValue";
- public static final String kWStringTypeStr = "omg.org/CORBA/"+kWStringStubValue;
- public static final String kWStringValueRepID = kIDLPrefix + kWStringTypeStr + kWStringValueHash;
-
- // Any
- public static final String kAnyRepID = kIDLPrefix + "omg.org/CORBA/Any";
-
- // Class
- public static final String kClassDescValueHash = ":" + Long.toHexString(
- ObjectStreamClass.getSerialVersionUID(javax.rmi.CORBA.ClassDesc.class));
- public static final String kClassDescStubValue = "ClassDesc";
- public static final String kClassDescTypeStr = "javax.rmi.CORBA."+kClassDescStubValue;
- public static final String kClassDescValueRepID = kValuePrefix + kClassDescTypeStr + kClassDescValueHash;
-
- // Object
- public static final String kObjectValueHash = ":1.0";
- public static final String kObjectStubValue = "Object";
-
- // Sequence
- public static final String kSequenceValueHash = ":1.0";
- public static final String kPrimitiveSequenceValueHash = ":0000000000000000";
-
- // Serializable
- public static final String kSerializableValueHash = ":1.0";
- public static final String kSerializableStubValue = "Serializable";
-
- // Externalizable
- public static final String kExternalizableValueHash = ":1.0";
- public static final String kExternalizableStubValue = "Externalizable";
-
- // Remote (The empty string is used for java.rmi.Remote)
- public static final String kRemoteValueHash = "";
- public static final String kRemoteStubValue = "";
- public static final String kRemoteTypeStr = "";
- public static final String kRemoteValueRepID = "";
-
- private static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
-
- static {
- kSpecialArrayTypeStrings.put("CORBA.WStringValue", new StringBuffer(java.lang.String.class.getName()));
- kSpecialArrayTypeStrings.put("javax.rmi.CORBA.ClassDesc", new StringBuffer(java.lang.Class.class.getName()));
- kSpecialArrayTypeStrings.put("CORBA.Object", new StringBuffer(java.rmi.Remote.class.getName()));
-
- }
-
- private static final Hashtable kSpecialCasesRepIDs = new Hashtable();
-
- static {
- kSpecialCasesRepIDs.put(java.lang.String.class, kWStringValueRepID);
- kSpecialCasesRepIDs.put(java.lang.Class.class, kClassDescValueRepID);
- kSpecialCasesRepIDs.put(java.rmi.Remote.class, kRemoteValueRepID);
- }
-
- private static final Hashtable kSpecialCasesStubValues = new Hashtable();
-
- static {
- kSpecialCasesStubValues.put(java.lang.String.class, kWStringStubValue);
- kSpecialCasesStubValues.put(java.lang.Class.class, kClassDescStubValue);
- kSpecialCasesStubValues.put(java.lang.Object.class, kObjectStubValue);
- kSpecialCasesStubValues.put(java.io.Serializable.class, kSerializableStubValue);
- kSpecialCasesStubValues.put(java.io.Externalizable.class, kExternalizableStubValue);
- kSpecialCasesStubValues.put(java.rmi.Remote.class, kRemoteStubValue);
- }
-
-
- private static final Hashtable kSpecialCasesVersions = new Hashtable();
-
- static {
- kSpecialCasesVersions.put(java.lang.String.class, kWStringValueHash);
- kSpecialCasesVersions.put(java.lang.Class.class, kClassDescValueHash);
- kSpecialCasesVersions.put(java.lang.Object.class, kObjectValueHash);
- kSpecialCasesVersions.put(java.io.Serializable.class, kSerializableValueHash);
- kSpecialCasesVersions.put(java.io.Externalizable.class, kExternalizableValueHash);
- kSpecialCasesVersions.put(java.rmi.Remote.class, kRemoteValueHash);
- }
-
- private static final Hashtable kSpecialCasesClasses = new Hashtable();
-
- static {
- kSpecialCasesClasses.put(kWStringTypeStr, java.lang.String.class);
- kSpecialCasesClasses.put(kClassDescTypeStr, java.lang.Class.class);
- kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
-
- kSpecialCasesClasses.put("org.omg.CORBA.WStringValue", java.lang.String.class);
- kSpecialCasesClasses.put("javax.rmi.CORBA.ClassDesc", java.lang.Class.class);
- //kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
- }
-
- private static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
-
- static {
- kSpecialCasesArrayPrefix.put(java.lang.String.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
- kSpecialCasesArrayPrefix.put(java.lang.Class.class, kValuePrefix + kSequencePrefix + "javax/rmi/CORBA/");
- kSpecialCasesArrayPrefix.put(java.lang.Object.class, kValuePrefix + kSequencePrefix + "java/lang/");
- kSpecialCasesArrayPrefix.put(java.io.Serializable.class, kValuePrefix + kSequencePrefix + "java/io/");
- kSpecialCasesArrayPrefix.put(java.io.Externalizable.class, kValuePrefix + kSequencePrefix + "java/io/");
- kSpecialCasesArrayPrefix.put(java.rmi.Remote.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
- }
-
- private static final Hashtable kSpecialPrimitives = new Hashtable();
-
- static {
- kSpecialPrimitives.put("int","long");
- kSpecialPrimitives.put("long","longlong");
- kSpecialPrimitives.put("byte","octet");
- }
-
- /**
- * Used to convert ascii to hex.
- */
- private static final byte ASCII_HEX[] = {
- (byte)'0',
- (byte)'1',
- (byte)'2',
- (byte)'3',
- (byte)'4',
- (byte)'5',
- (byte)'6',
- (byte)'7',
- (byte)'8',
- (byte)'9',
- (byte)'A',
- (byte)'B',
- (byte)'C',
- (byte)'D',
- (byte)'E',
- (byte)'F',
- };
-
-
- // Interface Rep ID Strings
- public static final String kjava_rmi_Remote = createForAnyType(java.rmi.Remote.class);
- public static final String korg_omg_CORBA_Object = createForAnyType(org.omg.CORBA.Object.class);
-
- // Dummy arguments for getIdFromHelper method
- public static final Class kNoParamTypes[] ={};
- public static final Object kNoArgs[] = {};
-
-
- RepositoryId_1_3(){}
-
- RepositoryId_1_3(String aRepId){
- init(aRepId);
- }
-
- RepositoryId_1_3 init(String aRepId){
-
- this.repId = aRepId;
-
- // Special case for remote
- if (aRepId.length() == 0) {
- clazz = java.rmi.Remote.class;
- typeString = "";
- isRMIValueType = true;
- suid = kInterfaceOnlyHashStr;
- return this;
- }
- else if (aRepId.equals(kWStringValueRepID)) {
- clazz = java.lang.String.class;
- typeString = kWStringTypeStr;
- isIDLType = true;
- versionString = kWStringValueVersion;
- return this;
- }
- else {
-
- String repId = convertFromISOLatin1(aRepId);
-
- versionString = repId.substring(repId.indexOf(':', repId.indexOf(':')+1));
- if (repId.startsWith(kIDLPrefix)) {
- typeString =
- repId.substring(kIDLPrefixLength, repId.indexOf(':', kIDLPrefixLength));
- isIDLType = true;
- if (typeString.startsWith(kIDLNamePrefix))
- completeClassName = kIDLClassnamePrefix +
- typeString.substring(kIDLNamePrefix.length()).replace('/','.');
- else completeClassName = typeString.replace('/','.');
-
- }
- else if (repId.startsWith(kValuePrefix)) {
- typeString =
- repId.substring(kValuePrefixLength, repId.indexOf(':', kValuePrefixLength));
- isRMIValueType = true;
-
- if (versionString.indexOf('.') == -1) {
- actualSuid = versionString.substring(1);
- suid = actualSuid; // default if not explicitly specified
-
- if (actualSuid.indexOf(':') != -1){
- // we have a declared hash also
- int pos = actualSuid.indexOf(':')+1;
- // actualSuid = suid.substring(pos);
- // suid = suid.substring(0, pos-1);
- suid = actualSuid.substring(pos);
- actualSuid = actualSuid.substring(0, pos-1);
- }
-
- }
- else {
- // _REVISIT_ : Special case version failure ?
- }
- }
- else isSupportedFormat = false;
-
- if (typeString.startsWith(kSequencePrefix)) {
- isSequence = true;
- }
-
-
- return this;
- }
- }
-
- public final String getUnqualifiedName() {
- if (unqualifiedName == null){
- String className = getClassName();
- int index = (className != null) ? className.lastIndexOf('.') : -1;
- if (index == -1){
- unqualifiedName = className;
- definedInId = "IDL::1.0";
- }
- else {
- unqualifiedName = className.substring(index);
- definedInId = "IDL:" + className.substring(0, index).replace('.','/') + ":1.0";
- }
- }
-
- return unqualifiedName;
- }
-
- public final String getDefinedInId() {
- if (definedInId == null){
- getUnqualifiedName();
- }
-
- return definedInId;
- }
-
- public final String getTypeString() {
- return typeString;
- }
-
- public final String getVersionString() {
- return versionString;
- }
-
- public final String getSerialVersionUID() {
- return suid;
- }
-
- public final String getActualSerialVersionUID() {
- return actualSuid;
- }
- public final long getSerialVersionUIDAsLong() {
- return suidLong;
- }
-
- public final long getActualSerialVersionUIDAsLong() {
- return actualSuidLong;
- }
-
- public final boolean isRMIValueType() {
- return isRMIValueType;
- }
-
- public final boolean isIDLType() {
- return isIDLType;
- }
-
- public final String getRepositoryId() {
- return repId;
- }
-
- public static byte[] getByteArray(String repStr) {
- synchronized (repStrToByteArray){
- return (byte[]) repStrToByteArray.get(repStr);
- }
- }
-
- public static void setByteArray(String repStr, byte[] repStrBytes) {
- synchronized (repStrToByteArray){
- repStrToByteArray.put(repStr, repStrBytes);
- }
- }
-
- public final boolean isSequence() {
- return isSequence;
- }
-
- public final boolean isSupportedFormat() {
- return isSupportedFormat;
- }
-
-
- // This method will return the classname from the typestring OR if the classname turns out to be
- // a special class "pseudo" name, then the matching real classname is returned.
- public final String getClassName() {
-
- if (isRMIValueType)
- return typeString;
- else if (isIDLType)
- return completeClassName;
- else return null;
-
- }
-
- // This method calls getClazzFromType() and falls back to the repStrToClass
- // cache if no class was found. It's used where any class matching the
- // given repid is an acceptable result.
- public final Class getAnyClassFromType() throws ClassNotFoundException {
- try {
- return getClassFromType();
- } catch (ClassNotFoundException cnfe) {
- Class clz = (Class)repStrToClass.get(repId);
- if (clz != null)
- return clz;
- else
- throw cnfe;
- }
- }
-
- public final Class getClassFromType()
- throws ClassNotFoundException {
- if (clazz != null)
- return clazz;
-
- Class specialCase = (Class)kSpecialCasesClasses.get(getClassName());
-
- if (specialCase != null){
- clazz = specialCase;
- return specialCase;
- }
- else
- {
- try{
- return Util.loadClass(getClassName(), null, null);
- }
- catch(ClassNotFoundException cnfe){
- if (defaultServerURL != null) {
- try{
- return getClassFromType(defaultServerURL);
- }
- catch(MalformedURLException mue){
- throw cnfe;
- }
- }
- else throw cnfe;
- }
- }
-
- }
-
- public final Class getClassFromType(Class expectedType, String codebase)
- throws ClassNotFoundException {
- if (clazz != null)
- return clazz;
-
- Class specialCase = (Class)kSpecialCasesClasses.get(getClassName());
-
- if (specialCase != null){
- clazz = specialCase;
- return specialCase;
- } else {
- ClassLoader expectedTypeClassLoader = (expectedType == null ? null : expectedType.getClassLoader());
- return loadClassOfType(getClassName(),
- codebase,
- expectedTypeClassLoader,
- expectedType,
- expectedTypeClassLoader);
- }
-
- }
-
- public final Class getClassFromType(String url)
- throws ClassNotFoundException, MalformedURLException {
- return Util.loadClass(getClassName(), url, null);
- }
-
- public final String toString() {
- return repId;
- }
-
- private static String createHashString(java.io.Serializable ser) {
-
- return createHashString(ser.getClass());
- }
-
- private static String createHashString(java.lang.Class clazz) {
-
- if (clazz.isInterface() || !java.io.Serializable.class.isAssignableFrom(clazz))
- return kInterfaceHashCode;
-
-
- long actualLong = ObjectStreamClassUtil_1_3.computeStructuralUID(false, clazz);
- String hash = null;
- if (actualLong == 0)
- hash = kInterfaceOnlyHashStr;
- else if (actualLong == 1)
- hash = kExternalizableHashStr;
- else
- hash = Long.toHexString(actualLong).toUpperCase();
- while(hash.length() < 16){
- hash = "0" + hash;
- }
-
- long declaredLong = ObjectStreamClassUtil_1_3.computeSerialVersionUID(clazz);
- String declared = null;
- if (declaredLong == 0)
- declared = kInterfaceOnlyHashStr;
- else if (declaredLong == 1)
- declared = kExternalizableHashStr;
- else
- declared = Long.toHexString(declaredLong).toUpperCase();
- while (declared.length() < 16){
- declared = "0" + declared;
- }
- hash = hash + ":" + declared;
-
- return ":" + hash;
- }
-
- /**
- * Creates a repository ID for a sequence. This is for expert users only as
- * this method assumes the object passed is an array. If passed an object
- * that is not an array, it will produce a rep id for a sequence of zero
- * length. This would be an error.
- * @param ser The Java object to create a repository ID for
- **/
- public static String createSequenceRepID(java.lang.Object ser){
- return createSequenceRepID(ser.getClass());
- }
-
- /**
- * Creates a repository ID for a sequence. This is for expert users only as
- * this method assumes the object passed is an array. If passed an object
- * that is not an array, it will produce a malformed rep id.
- * @param clazz The Java class to create a repository ID for
- **/
- public static String createSequenceRepID(java.lang.Class clazz){
- synchronized (classSeqToRepStr){
-
- String repid = (String)classSeqToRepStr.get(clazz);
- if (repid != null)
- return repid;
-
- Class originalClazz = clazz;
-
- Class type = null;
- int numOfDims = 0;
-
- while ((type = clazz.getComponentType()) != null) {
- numOfDims++;
- clazz = type;
- }
-
- if (clazz.isPrimitive())
- repid = kValuePrefix + originalClazz.getName() + kPrimitiveSequenceValueHash;
- else {
- StringBuffer buf = new StringBuffer();
- buf.append(kValuePrefix);
- while(numOfDims-- > 0) {
- buf.append("[");
- }
- buf.append("L");
- buf.append(convertToISOLatin1(clazz.getName()));
- buf.append(";");
- buf.append(createHashString(clazz));
- repid = buf.toString();
- }
- classSeqToRepStr.put(originalClazz,repid);
- return repid;
- }
-
- }
-
-
- public static String createForSpecialCase(java.lang.Class clazz){
- if (clazz.isArray()){
- return createSequenceRepID(clazz);
- }
- else {
- return (String)kSpecialCasesRepIDs.get(clazz);
- }
- }
-
- public static String createForSpecialCase(java.io.Serializable ser){
- Class clazz = ser.getClass();
- if (clazz.isArray()){
- return createSequenceRepID(ser);
- }
- else
- return createForSpecialCase(clazz);
- }
-
- /**
- * Creates a repository ID for a normal Java Type.
- * @param ser The Java object to create a repository ID for
- * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser implements the
- * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
- **/
- public static String createForJavaType(java.io.Serializable ser)
- throws com.sun.corba.se.impl.io.TypeMismatchException
- {
- synchronized (classToRepStr) {
- String repid = createForSpecialCase(ser);
- if (repid != null)
- return repid;
- Class clazz = ser.getClass();
- repid = (String)classToRepStr.get(clazz);
-
- if (repid != null)
- return repid;
-
- repid = kValuePrefix + convertToISOLatin1(clazz.getName()) +
- createHashString(clazz);
-
- classToRepStr.put(clazz, repid);
- repStrToClass.put(repid, clazz);
- return repid;
- }
- }
-
- /**
- * Creates a repository ID for a normal Java Type.
- * @param clz The Java class to create a repository ID for
- * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser implements the
- * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
- **/
- public static String createForJavaType(Class clz)
- throws com.sun.corba.se.impl.io.TypeMismatchException
- {
- synchronized (classToRepStr){
- String repid = createForSpecialCase(clz);
- if (repid != null)
- return repid;
-
- repid = (String)classToRepStr.get(clz);
- if (repid != null)
- return repid;
-
- repid = kValuePrefix + convertToISOLatin1(clz.getName()) +
- createHashString(clz);
-
- classToRepStr.put(clz, repid);
- repStrToClass.put(repid, clz);
- return repid;
- }
- }
-
- /**
- * Creates a repository ID for an IDL Java Type.
- * @param ser The IDL Value object to create a repository ID for
- * @param major The major version number
- * @param minor The minor version number
- * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser does not implement the
- * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
- **/
- public static String createForIDLType(Class ser, int major, int minor)
- throws com.sun.corba.se.impl.io.TypeMismatchException
- {
- synchronized (classIDLToRepStr){
- String repid = (String)classIDLToRepStr.get(ser);
- if (repid != null)
- return repid;
-
- repid = kIDLPrefix + convertToISOLatin1(ser.getName()).replace('.','/') +
- ":" + major + "." + minor;
- classIDLToRepStr.put(ser, repid);
- return repid;
- }
- }
-
- private static String getIdFromHelper(Class clazz){
- try {
- Class helperClazz = Utility.loadClassForClass(clazz.getName()+"Helper", null,
- clazz.getClassLoader(), clazz, clazz.getClassLoader());
- Method idMethod = helperClazz.getDeclaredMethod("id", kNoParamTypes);
- return (String)idMethod.invoke(null, kNoArgs);
- }
- catch(java.lang.ClassNotFoundException cnfe)
- {
- throw new org.omg.CORBA.MARSHAL(cnfe.toString());
- }
- catch(java.lang.NoSuchMethodException nsme)
- {
- throw new org.omg.CORBA.MARSHAL(nsme.toString());
- }
- catch(java.lang.reflect.InvocationTargetException ite)
- {
- throw new org.omg.CORBA.MARSHAL(ite.toString());
- }
- catch(java.lang.IllegalAccessException iae)
- {
- throw new org.omg.CORBA.MARSHAL(iae.toString());
- }
- }
-
- /**
- * Createa a repository ID for the type if it is either a java type
- * or an IDL type.
- * @param type The type to create rep. id for
- * @return The rep. id.
- **/
- public static String createForAnyType(Class type) {
- try{
- if (type.isArray())
- return createSequenceRepID(type);
- else if (IDLEntity.class.isAssignableFrom(type))
- {
- try{
- return getIdFromHelper(type);
- }
- catch(Throwable t) {
- return createForIDLType(type, 1, 0);
- }
- }
- else return createForJavaType(type);
- }
- catch(com.sun.corba.se.impl.io.TypeMismatchException e){
- return null;
- }
-
- }
-
- public static boolean isAbstractBase(Class clazz) {
- return (clazz.isInterface() &&
- IDLEntity.class.isAssignableFrom(clazz) &&
- (!ValueBase.class.isAssignableFrom(clazz)) &&
- (!org.omg.CORBA.Object.class.isAssignableFrom(clazz)));
-
- }
-
- /**
- * Convert strings with illegal IDL identifier characters.
- *
- * Section 5.5.7 of OBV spec.
- */
- private static String convertToISOLatin1 (String name) {
-
- int length = name.length();
- if (length == 0) {
- return name;
- }
- StringBuffer buffer = null;
-
- for (int i = 0; i < length; i++) {
-
- char c = name.charAt(i);
-
- if (c > 255 || IDL_IDENTIFIER_CHARS[c] == 0) {
-
- // We gotta convert. Have we already started?
-
- if (buffer == null) {
-
- // No, so get set up...
-
- buffer = new StringBuffer(name.substring(0,i));
- }
-
- // Convert the character into the IDL escape syntax...
- buffer.append(
- "\\U" +
- (char)ASCII_HEX[(c & 0xF000) >>> 12] +
- (char)ASCII_HEX[(c & 0x0F00) >>> 8] +
- (char)ASCII_HEX[(c & 0x00F0) >>> 4] +
- (char)ASCII_HEX[(c & 0x000F)]);
-
- } else {
- if (buffer != null) {
- buffer.append(c);
- }
- }
- }
-
- if (buffer != null) {
- name = buffer.toString();
- }
-
- return name;
- }
-
- /**
- * Convert strings with ISO Latin 1 escape sequences back to original strings.
- *
- * Section 5.5.7 of OBV spec.
- */
- private static String convertFromISOLatin1 (String name) {
-
- int index = -1;
- StringBuffer buf = new StringBuffer(name);
-
- while ((index = buf.toString().indexOf("\\U")) != -1){
- String str = "0000" + buf.toString().substring(index+2, index+6);
-
- // Convert Hexadecimal
- byte[] buffer = new byte[(str.length() - 4) / 2];
- for (int i=4, j=0; i < str.length(); i +=2, j++) {
- buffer[j] = (byte)((ORBUtility.hexOf(str.charAt(i)) << 4) & 0xF0);
- buffer[j] |= (byte)((ORBUtility.hexOf(str.charAt(i+1)) << 0) & 0x0F);
- }
- buf = new StringBuffer(delete(buf.toString(), index, index+6));
- buf.insert(index, (char)buffer[1]);
- }
-
- return buf.toString();
-
-
- }
-
- private static String delete(String str, int from, int to)
- {
- return str.substring(0, from) + str.substring(to, str.length());
- }
-
- private static String replace(String target, String arg, String source)
- {
- int i = 0;
- i = target.indexOf(arg);
-
- while(i != -1)
- {
- String left = target.substring(0, i);
- String right = target.substring(i+arg.length());
- target = new String(left+source+right);
- i = target.indexOf(arg);
- }
- return target;
- }
-
- /*
- * Load a class and check that it is assignable to a given type.
- * @param className the class name.
- * @param remoteCodebase the codebase to use. May be null.
- * @param loader the class loader of last resort. May be null.
- * @param expectedType the expected type. May be null.
- * @return the loaded class.
- */
- private Class loadClassOfType (String className,
- String remoteCodebase,
- ClassLoader loader,
- Class expectedType,
- ClassLoader expectedTypeClassLoader)
- throws ClassNotFoundException {
-
- Class loadedClass = null;
-
- try {
- //Sequence finding of the stubs according to spec
- try{
- //If-else is put here for speed up of J2EE.
- //According to the OMG spec, the if clause is not dead code.
- //It can occur if some compiler has allowed generation
- //into org.omg.stub hierarchy for non-offending
- //classes. This will encourage people to
- //produce non-offending class stubs in their own hierarchy.
- if(!PackagePrefixChecker
- .hasOffendingPrefix(PackagePrefixChecker
- .withoutPackagePrefix(className))){
- loadedClass = Util.loadClass
- (PackagePrefixChecker.withoutPackagePrefix(className),
- remoteCodebase,
- loader);
- } else {
- loadedClass = Util.loadClass
- (className,
- remoteCodebase,
- loader);
- }
- } catch (ClassNotFoundException cnfe) {
- loadedClass = Util.loadClass
- (className,
- remoteCodebase,
- loader);
- }
- if (expectedType == null)
- return loadedClass;
- } catch (ClassNotFoundException cnfe) {
- if (expectedType == null)
- throw cnfe;
- }
-
- // If no class was not loaded, or if the loaded class is not of the
- // correct type, make a further attempt to load the correct class
- // using the classloader of the expected type.
- // _REVISIT_ Is this step necessary, or should the Util,loadClass
- // algorithm always produce a valid class if the setup is correct?
- // Does the OMG standard algorithm need to be changed to include
- // this step?
- if (loadedClass == null || !expectedType.isAssignableFrom(loadedClass)) {
- if (expectedType.getClassLoader() != expectedTypeClassLoader)
- throw new IllegalArgumentException("expectedTypeClassLoader not class loader of expectedType.");
-
- if (expectedTypeClassLoader != null)
- loadedClass = expectedTypeClassLoader.loadClass(className);
- else
- loadedClass = ORBClassLoader.loadClass(className);
- }
-
- return loadedClass;
- }
-
- /**
- * Checks to see if the FullValueDescription should be retrieved.
- * @exception Throws IOException if suids do not match or if the repositoryID
- * is not an RMIValueType
- */
- public static boolean useFullValueDescription(Class clazz, String repositoryID)
- throws IOException{
-
- String clazzRepIDStr = createForAnyType(clazz);
-
- if (clazzRepIDStr.equals(repositoryID))
- return false;
-
- RepositoryId_1_3 targetRepid;
- RepositoryId_1_3 clazzRepid;
-
- synchronized(cache) {
- // to avoid race condition where multiple threads could be
- // accessing this method, and their access to the cache may
- // be interleaved giving unexpected results
-
- targetRepid = cache.getId(repositoryID);
- clazzRepid = cache.getId(clazzRepIDStr);
- }
-
- if ((targetRepid.isRMIValueType()) && (clazzRepid.isRMIValueType())){
- if (!targetRepid.getSerialVersionUID().equals(clazzRepid.getSerialVersionUID())) {
-
- String mssg = "Mismatched serialization UIDs : Source (Rep. ID" +
- clazzRepid + ") = " +
- clazzRepid.getSerialVersionUID() + " whereas Target (Rep. ID " + repositoryID +
- ") = " + targetRepid.getSerialVersionUID();
- throw new IOException(mssg);
- } else {
- return true;
- }
- } else {
-
- throw new IOException("The repository ID is not of an RMI value type (Expected ID = " + clazzRepIDStr + "; Received ID = " + repositoryID +")");
- }
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java
deleted file mode 100755
index 8c1ab6e..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java
+++ /dev/null
@@ -1,1065 +0,0 @@
-/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-package com.sun.corba.se.impl.orbutil;
-
-import java.util.StringTokenizer;
-import java.util.Hashtable;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import org.omg.CORBA.portable.ValueBase;
-import org.omg.CORBA.portable.IDLEntity;
-
-//d11638 files in the same package, therefore remove their reference
-//import com.sun.corba.se.impl.util.JDKBridge;
-//import com.sun.corba.se.impl.util.IdentityHashtable;
-import com.sun.corba.se.impl.util.JDKBridge;
-import com.sun.corba.se.impl.util.Utility;
-import com.sun.corba.se.impl.util.PackagePrefixChecker;
-import com.sun.corba.se.impl.util.IdentityHashtable;
-
-import javax.rmi.CORBA.Util;
-
-/**
- * Because all methods in RepositoryId are static, we have
- * to duplicate all of this code, freezing it in its 1.3.1
- * form for backwards compatibility.
- *
- * For security reasons, we can't expose enough of
- * io/ObjectStreamClass, so it has to be duplicated in
- * orbutil.
- */
-public class RepositoryId_1_3_1 {
-
- // Legal IDL Identifier characters (1 = legal). Note
- // that '.' (2E) is marked as legal even though it is
- // not legal in IDL. This allows us to treat a fully
- // qualified Java name with '.' package separators
- // uniformly, and is safe because that is the only
- // legal use of '.' in a Java name.
-
- private static final byte[] IDL_IDENTIFIER_CHARS = {
-
- // 0 1 2 3 4 5 6 7 8 9 a b c d e f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 00-0f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 10-1f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0, // 20-2f
- 1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0, // 30-3f
- 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 40-4f
- 1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,1, // 50-5f
- 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 60-6f
- 1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0, // 70-7f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 80-8f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 90-9f
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // a0-af
- 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // b0-bf
- 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // c0-cf
- 0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // d0-df
- 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // e0-ef
- 0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // f0-ff
- };
-
-
- private static final long serialVersionUID = 123456789L;
-
- private static String defaultServerURL = null;
- private static boolean useCodebaseOnly = false;
-
- static {
- if (defaultServerURL == null)
- defaultServerURL = (String)JDKBridge.getLocalCodebase();
- useCodebaseOnly = JDKBridge.useCodebaseOnly();
-
- }
-
- private static IdentityHashtable classToRepStr = new IdentityHashtable();
- private static IdentityHashtable classIDLToRepStr = new IdentityHashtable();
- private static IdentityHashtable classSeqToRepStr = new IdentityHashtable();
-
- private static IdentityHashtable repStrToByteArray = new IdentityHashtable();
- private static Hashtable repStrToClass = new Hashtable();
-
- private String repId = null;
- private boolean isSupportedFormat = true;
- private String typeString = null;
- private String versionString = null;
- private boolean isSequence = false;
- private boolean isRMIValueType = false;
- private boolean isIDLType = false;
- private String completeClassName = null;
- private String unqualifiedName = null;
- private String definedInId = null;
- private Class clazz = null;
- private String suid = null, actualSuid = null;
- private long suidLong = ObjectStreamClass_1_3_1.kDefaultUID, actualSuidLong = ObjectStreamClass_1_3_1.kDefaultUID;
-
- // Repository ID fragments
- private static final String kSequenceKeyword = "seq";
- private static final String kValuePrefix = "RMI:";
- private static final String kIDLPrefix = "IDL:";
- private static final String kIDLNamePrefix = "omg.org/";
- private static final String kIDLClassnamePrefix = "org.omg.";
- private static final String kSequencePrefix = "[";
- private static final String kCORBAPrefix = "CORBA/";
- private static final String kArrayPrefix = kValuePrefix + kSequencePrefix + kCORBAPrefix;
- private static final int kValuePrefixLength = kValuePrefix.length();
- private static final int kIDLPrefixLength = kIDLPrefix.length();
- private static final int kSequencePrefixLength = kSequencePrefix.length();
- private static final String kInterfaceHashCode = ":0000000000000000";
- private static final String kInterfaceOnlyHashStr = "0000000000000000";
- private static final String kExternalizableHashStr = "0000000000000001";
-
- // Value tag utility methods and constants
- public static final int kInitialValueTag= 0x7fffff00;
- public static final int kNoTypeInfo = 0;
- public static final int kSingleRepTypeInfo = 0x02;
- public static final int kPartialListTypeInfo = 0x06;
- public static final int kChunkedMask = 0x08;
- public static final int kPreComputed_StandardRMIUnchunked = RepositoryId_1_3_1.computeValueTag(false, RepositoryId_1_3_1.kSingleRepTypeInfo, false);
- public static final int kPreComputed_CodeBaseRMIUnchunked = RepositoryId_1_3_1.computeValueTag(true, RepositoryId_1_3_1.kSingleRepTypeInfo, false);
- public static final int kPreComputed_StandardRMIChunked = RepositoryId_1_3_1.computeValueTag(false, RepositoryId_1_3_1.kSingleRepTypeInfo, true);
- public static final int kPreComputed_CodeBaseRMIChunked = RepositoryId_1_3_1.computeValueTag(true, RepositoryId_1_3_1.kSingleRepTypeInfo, true);
-
- public static final int kPreComputed_StandardRMIUnchunked_NoRep = RepositoryId_1_3_1.computeValueTag(false, RepositoryId_1_3_1.kNoTypeInfo, false);
- public static final int kPreComputed_CodeBaseRMIUnchunked_NoRep = RepositoryId_1_3_1.computeValueTag(true, RepositoryId_1_3_1.kNoTypeInfo, false);
- public static final int kPreComputed_StandardRMIChunked_NoRep = RepositoryId_1_3_1.computeValueTag(false, RepositoryId_1_3_1.kNoTypeInfo, true);
- public static final int kPreComputed_CodeBaseRMIChunked_NoRep = RepositoryId_1_3_1.computeValueTag(true, RepositoryId_1_3_1.kNoTypeInfo, true);
-
- // Public, well known repository IDs
-
- // _REVISIT_ : A table structure with a good search routine for all of this
- // would be more efficient and easier to maintain...
-
- // String
- public static final String kWStringValueVersion = "1.0";
- public static final String kWStringValueHash = ":"+kWStringValueVersion;
- public static final String kWStringStubValue = "WStringValue";
- public static final String kWStringTypeStr = "omg.org/CORBA/"+kWStringStubValue;
- public static final String kWStringValueRepID = kIDLPrefix + kWStringTypeStr + kWStringValueHash;
-
- // Any
- public static final String kAnyRepID = kIDLPrefix + "omg.org/CORBA/Any";
-
- // Class
- // Anita4: convert to uppercase
- public static final String kClassDescValueHash = ":" +
- Long.toHexString(
- ObjectStreamClass_1_3_1.getActualSerialVersionUID(javax.rmi.CORBA.ClassDesc.class)).toUpperCase() + ":" +
- Long.toHexString(
- ObjectStreamClass_1_3_1.getSerialVersionUID(javax.rmi.CORBA.ClassDesc.class)).toUpperCase();
- public static final String kClassDescStubValue = "ClassDesc";
- public static final String kClassDescTypeStr = "javax.rmi.CORBA."+kClassDescStubValue;
- public static final String kClassDescValueRepID = kValuePrefix + kClassDescTypeStr + kClassDescValueHash;
-
- // Object
- public static final String kObjectValueHash = ":1.0";
- public static final String kObjectStubValue = "Object";
-
- // Sequence
- public static final String kSequenceValueHash = ":1.0";
- public static final String kPrimitiveSequenceValueHash = ":0000000000000000";
-
- // Serializable
- public static final String kSerializableValueHash = ":1.0";
- public static final String kSerializableStubValue = "Serializable";
-
- // Externalizable
- public static final String kExternalizableValueHash = ":1.0";
- public static final String kExternalizableStubValue = "Externalizable";
-
- // Remote (The empty string is used for java.rmi.Remote)
- public static final String kRemoteValueHash = "";
- public static final String kRemoteStubValue = "";
- public static final String kRemoteTypeStr = "";
- public static final String kRemoteValueRepID = "";
-
- private static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
-
- static {
- kSpecialArrayTypeStrings.put("CORBA.WStringValue", new StringBuffer(java.lang.String.class.getName()));
- kSpecialArrayTypeStrings.put("javax.rmi.CORBA.ClassDesc", new StringBuffer(java.lang.Class.class.getName()));
- kSpecialArrayTypeStrings.put("CORBA.Object", new StringBuffer(java.rmi.Remote.class.getName()));
-
- }
-
- private static final Hashtable kSpecialCasesRepIDs = new Hashtable();
-
- static {
- kSpecialCasesRepIDs.put(java.lang.String.class, kWStringValueRepID);
- kSpecialCasesRepIDs.put(java.lang.Class.class, kClassDescValueRepID);
- kSpecialCasesRepIDs.put(java.rmi.Remote.class, kRemoteValueRepID);
- }
-
- private static final Hashtable kSpecialCasesStubValues = new Hashtable();
-
- static {
- kSpecialCasesStubValues.put(java.lang.String.class, kWStringStubValue);
- kSpecialCasesStubValues.put(java.lang.Class.class, kClassDescStubValue);
- kSpecialCasesStubValues.put(java.lang.Object.class, kObjectStubValue);
- kSpecialCasesStubValues.put(java.io.Serializable.class, kSerializableStubValue);
- kSpecialCasesStubValues.put(java.io.Externalizable.class, kExternalizableStubValue);
- kSpecialCasesStubValues.put(java.rmi.Remote.class, kRemoteStubValue);
- }
-
-
- private static final Hashtable kSpecialCasesVersions = new Hashtable();
-
- static {
- kSpecialCasesVersions.put(java.lang.String.class, kWStringValueHash);
- kSpecialCasesVersions.put(java.lang.Class.class, kClassDescValueHash);
- kSpecialCasesVersions.put(java.lang.Object.class, kObjectValueHash);
- kSpecialCasesVersions.put(java.io.Serializable.class, kSerializableValueHash);
- kSpecialCasesVersions.put(java.io.Externalizable.class, kExternalizableValueHash);
- kSpecialCasesVersions.put(java.rmi.Remote.class, kRemoteValueHash);
- }
-
- private static final Hashtable kSpecialCasesClasses = new Hashtable();
-
- static {
- kSpecialCasesClasses.put(kWStringTypeStr, java.lang.String.class);
- kSpecialCasesClasses.put(kClassDescTypeStr, java.lang.Class.class);
- kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
-
- kSpecialCasesClasses.put("org.omg.CORBA.WStringValue", java.lang.String.class);
- kSpecialCasesClasses.put("javax.rmi.CORBA.ClassDesc", java.lang.Class.class);
- //kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
- }
-
- private static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
-
- static {
- kSpecialCasesArrayPrefix.put(java.lang.String.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
- kSpecialCasesArrayPrefix.put(java.lang.Class.class, kValuePrefix + kSequencePrefix + "javax/rmi/CORBA/");
- kSpecialCasesArrayPrefix.put(java.lang.Object.class, kValuePrefix + kSequencePrefix + "java/lang/");
- kSpecialCasesArrayPrefix.put(java.io.Serializable.class, kValuePrefix + kSequencePrefix + "java/io/");
- kSpecialCasesArrayPrefix.put(java.io.Externalizable.class, kValuePrefix + kSequencePrefix + "java/io/");
- kSpecialCasesArrayPrefix.put(java.rmi.Remote.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
- }
-
- private static final Hashtable kSpecialPrimitives = new Hashtable();
-
- static {
- kSpecialPrimitives.put("int","long");
- kSpecialPrimitives.put("long","longlong");
- kSpecialPrimitives.put("byte","octet");
- }
-
- /**
- * Used to convert ascii to hex.
- */
- private static final byte ASCII_HEX[] = {
- (byte)'0',
- (byte)'1',
- (byte)'2',
- (byte)'3',
- (byte)'4',
- (byte)'5',
- (byte)'6',
- (byte)'7',
- (byte)'8',
- (byte)'9',
- (byte)'A',
- (byte)'B',
- (byte)'C',
- (byte)'D',
- (byte)'E',
- (byte)'F',
- };
-
-
- // bug fix for 4328952; to eliminate possibility of overriding this
- // in a subclass.
- public static final RepositoryIdCache_1_3_1 cache = new RepositoryIdCache_1_3_1();
-
- // Interface Rep ID Strings
- public static final String kjava_rmi_Remote = createForAnyType(java.rmi.Remote.class);
- public static final String korg_omg_CORBA_Object = createForAnyType(org.omg.CORBA.Object.class);
-
- // Dummy arguments for getIdFromHelper method
- public static final Class kNoParamTypes[] ={};
- public static final Object kNoArgs[] = {};
-
-
- // To create a RepositoryID, use code similar to the following:
- // RepositoryId.cache.getId( id );
-
- RepositoryId_1_3_1(){}
-
- RepositoryId_1_3_1(String aRepId){
- init(aRepId);
- }
-
- RepositoryId_1_3_1 init(String aRepId){
-
- this.repId = aRepId;
-
- // Special case for remote
- if (aRepId.length() == 0) {
- clazz = java.rmi.Remote.class;
- typeString = "";
- isRMIValueType = true;
- suid = kInterfaceOnlyHashStr;
- return this;
- }
- else if (aRepId.equals(kWStringValueRepID)) {
- clazz = java.lang.String.class;
- typeString = kWStringTypeStr;
- isIDLType = true;
- // fix where Attempting to obtain a FullValueDescription
- // for an RMI value type with a String field causes an exception.
- completeClassName = "java.lang.String";
- versionString = kWStringValueVersion;
- return this;
- }
- else {
-
- String repId = convertFromISOLatin1(aRepId);
-
- versionString = repId.substring(repId.indexOf(':', repId.indexOf(':')+1));
- if (repId.startsWith(kIDLPrefix)) {
- typeString =
- repId.substring(kIDLPrefixLength, repId.indexOf(':', kIDLPrefixLength));
- isIDLType = true;
- if (typeString.startsWith(kIDLNamePrefix))
- completeClassName = kIDLClassnamePrefix +
- typeString.substring(kIDLNamePrefix.length()).replace('/','.');
- else completeClassName = typeString.replace('/','.');
-
- }
- else if (repId.startsWith(kValuePrefix)) {
- typeString =
- repId.substring(kValuePrefixLength, repId.indexOf(':', kValuePrefixLength));
- isRMIValueType = true;
-
- if (versionString.indexOf('.') == -1) {
- actualSuid = versionString.substring(1);
- suid = actualSuid; // default if not explicitly specified
-
- if (actualSuid.indexOf(':') != -1){
- // we have a declared hash also
- int pos = actualSuid.indexOf(':')+1;
- // actualSuid = suid.substring(pos);
- // suid = suid.substring(0, pos-1);
- suid = actualSuid.substring(pos);
- actualSuid = actualSuid.substring(0, pos-1);
- }
-
- }
- else {
- // _REVISIT_ : Special case version failure ?
- }
- }
- else isSupportedFormat = false;
-
- if (typeString.startsWith(kSequencePrefix)) {
- isSequence = true;
- }
-
-
- return this;
- }
- }
-
- public final String getUnqualifiedName() {
- if (unqualifiedName == null){
- String className = getClassName();
- int index = className.lastIndexOf('.');
- if (index == -1){
- unqualifiedName = className;
- definedInId = "IDL::1.0";
- }
- else {
- unqualifiedName = className.substring(index);
- definedInId = "IDL:" + className.substring(0, index).replace('.','/') + ":1.0";
- }
- }
-
- return unqualifiedName;
- }
-
- public final String getDefinedInId() {
- if (definedInId == null){
- getUnqualifiedName();
- }
-
- return definedInId;
- }
-
- public final String getTypeString() {
- return typeString;
- }
-
- public final String getVersionString() {
- return versionString;
- }
-
- public final String getSerialVersionUID() {
- return suid;
- }
-
- public final String getActualSerialVersionUID() {
- return actualSuid;
- }
- public final long getSerialVersionUIDAsLong() {
- return suidLong;
- }
-
- public final long getActualSerialVersionUIDAsLong() {
- return actualSuidLong;
- }
-
- public final boolean isRMIValueType() {
- return isRMIValueType;
- }
-
- public final boolean isIDLType() {
- return isIDLType;
- }
-
- public final String getRepositoryId() {
- return repId;
- }
-
- public static byte[] getByteArray(String repStr) {
- synchronized (repStrToByteArray){
- return (byte[]) repStrToByteArray.get(repStr);
- }
- }
-
- public static void setByteArray(String repStr, byte[] repStrBytes) {
- synchronized (repStrToByteArray){
- repStrToByteArray.put(repStr, repStrBytes);
- }
- }
-
- public final boolean isSequence() {
- return isSequence;
- }
-
- public final boolean isSupportedFormat() {
- return isSupportedFormat;
- }
-
-
- // This method will return the classname from the typestring OR if the classname turns out to be
- // a special class "pseudo" name, then the matching real classname is returned.
- public final String getClassName() {
-
- if (isRMIValueType)
- return typeString;
- else if (isIDLType)
- return completeClassName;
- else return null;
-
- }
-
- // This method calls getClazzFromType() and falls back to the repStrToClass
- // cache if no class was found. It's used where any class matching the
- // given repid is an acceptable result.
- public final Class getAnyClassFromType() throws ClassNotFoundException {
- try {
- return getClassFromType();
- } catch (ClassNotFoundException cnfe) {
- Class clz = (Class)repStrToClass.get(repId);
- if (clz != null)
- return clz;
- else
- throw cnfe;
- }
- }
-
- public final Class getClassFromType()
- throws ClassNotFoundException {
- if (clazz != null)
- return clazz;
-
- Class specialCase = (Class)kSpecialCasesClasses.get(getClassName());
-
- if (specialCase != null){
- clazz = specialCase;
- return specialCase;
- }
- else
- {
- try{
- return Util.loadClass(getClassName(), null, null);
- }
- catch(ClassNotFoundException cnfe){
- if (defaultServerURL != null) {
- try{
- return getClassFromType(defaultServerURL);
- }
- catch(MalformedURLException mue){
- throw cnfe;
- }
- }
- else throw cnfe;
- }
- }
-
- }
-
- public final Class getClassFromType(Class expectedType, String codebase)
- throws ClassNotFoundException {
- if (clazz != null)
- return clazz;
-
- Class specialCase = (Class)kSpecialCasesClasses.get(getClassName());
-
- if (specialCase != null){
- clazz = specialCase;
- return specialCase;
- } else {
- ClassLoader expectedTypeClassLoader = (expectedType == null ? null : expectedType.getClassLoader());
- return loadClassOfType(getClassName(),
- codebase,
- expectedTypeClassLoader,
- expectedType,
- expectedTypeClassLoader);
- }
-
- }
-
- public final Class getClassFromType(String url)
- throws ClassNotFoundException, MalformedURLException {
- return Util.loadClass(getClassName(), url, null);
- }
-
- public final String toString() {
- return repId;
- }
-
- /**
- * Checks to see if the FullValueDescription should be retrieved.
- * @exception Throws IOException if suids do not match or if the repositoryID
- * is not an RMIValueType
- */
- public static boolean useFullValueDescription(Class clazz, String repositoryID)
- throws IOException{
-
- String clazzRepIDStr = createForAnyType(clazz);
-
- if (clazzRepIDStr.equals(repositoryID))
- return false;
-
- RepositoryId_1_3_1 targetRepid;
- RepositoryId_1_3_1 clazzRepid;
-
- synchronized(cache) {
- // to avoid race condition where multiple threads could be
- // accessing this method, and their access to the cache may
- // be interleaved giving unexpected results
-
- targetRepid = cache.getId(repositoryID);
- clazzRepid = cache.getId(clazzRepIDStr);
- }
- //ObjectStreamClass osc = ObjectStreamClass.lookup(clazz);
-
- if ((targetRepid.isRMIValueType()) && (clazzRepid.isRMIValueType())){
- if (!targetRepid.getSerialVersionUID().equals(clazzRepid.getSerialVersionUID())) {
-
- String mssg = "Mismatched serialization UIDs : Source (Rep. ID" +
- clazzRepid + ") = " +
- clazzRepid.getSerialVersionUID() + " whereas Target (Rep. ID " + repositoryID +
- ") = " + targetRepid.getSerialVersionUID();
- //com.sun.corba.se.impl.io.ValueUtility.log("RepositoryId",mssg);
- throw new IOException(mssg);
- }
- else {
- return true;
- }
- }
- else {
-
- throw new IOException("The repository ID is not of an RMI value type (Expected ID = " + clazzRepIDStr + "; Received ID = " + repositoryID +")");
- }
- }
-
- private static String createHashString(java.io.Serializable ser) {
-
- return createHashString(ser.getClass());
- }
-
- private static String createHashString(java.lang.Class clazz) {
-
- if (clazz.isInterface() || !java.io.Serializable.class.isAssignableFrom(clazz))
- return kInterfaceHashCode;
-
- //ObjectStreamClass osc = ObjectStreamClass.lookup(clazz);
-
- long actualLong = ObjectStreamClass_1_3_1.getActualSerialVersionUID(clazz);
- String hash = null;
- if (actualLong == 0)
- hash = kInterfaceOnlyHashStr;
- else if (actualLong == 1)
- hash = kExternalizableHashStr;
- else
- hash = Long.toHexString(actualLong).toUpperCase();
- while(hash.length() < 16){
- hash = "0" + hash;
- }
-
- long declaredLong = ObjectStreamClass_1_3_1.getSerialVersionUID(clazz);
- String declared = null;
- if (declaredLong == 0)
- declared = kInterfaceOnlyHashStr;
- else if (declaredLong == 1)
- declared = kExternalizableHashStr;
- else
- declared = Long.toHexString(declaredLong).toUpperCase();
- while (declared.length() < 16){
- declared = "0" + declared;
- }
- hash = hash + ":" + declared;
-
- return ":" + hash;
- }
-
- /**
- * Creates a repository ID for a sequence. This is for expert users only as
- * this method assumes the object passed is an array. If passed an object
- * that is not an array, it will produce a rep id for a sequence of zero
- * length. This would be an error.
- * @param ser The Java object to create a repository ID for
- **/
- public static String createSequenceRepID(java.lang.Object ser){
- return createSequenceRepID(ser.getClass());
- }
-
- /**
- * Creates a repository ID for a sequence. This is for expert users only as
- * this method assumes the object passed is an array. If passed an object
- * that is not an array, it will produce a malformed rep id.
- * @param clazz The Java class to create a repository ID for
- **/
- public static String createSequenceRepID(java.lang.Class clazz){
- synchronized (classSeqToRepStr){
-
- String repid = (String)classSeqToRepStr.get(clazz);
- if (repid != null)
- return repid;
-
- Class originalClazz = clazz;
-
- Class type = null;
- int numOfDims = 0;
-
- while ((type = clazz.getComponentType()) != null) {
- numOfDims++;
- clazz = type;
- }
-
- if (clazz.isPrimitive())
- repid = kValuePrefix + originalClazz.getName() + kPrimitiveSequenceValueHash;
- else {
- StringBuffer buf = new StringBuffer();
- buf.append(kValuePrefix);
- while(numOfDims-- > 0) {
- buf.append("[");
- }
- buf.append("L");
- buf.append(convertToISOLatin1(clazz.getName()));
- buf.append(";");
- buf.append(createHashString(clazz));
- repid = buf.toString();
- }
- classSeqToRepStr.put(originalClazz,repid);
- return repid;
- }
-
- }
-
-
- public static String createForSpecialCase(java.lang.Class clazz){
- if (clazz.isArray()){
- return createSequenceRepID(clazz);
- }
- else {
- return (String)kSpecialCasesRepIDs.get(clazz);
- }
- }
-
- public static String createForSpecialCase(java.io.Serializable ser){
- Class clazz = ser.getClass();
- if (clazz.isArray()){
- return createSequenceRepID(ser);
- }
- else
- return createForSpecialCase(clazz);
- }
-
- /**
- * Creates a repository ID for a normal Java Type.
- * @param ser The Java object to create a repository ID for
- * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser implements the
- * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
- **/
- public static String createForJavaType(java.io.Serializable ser)
- throws com.sun.corba.se.impl.io.TypeMismatchException
- {
- synchronized (classToRepStr) {
- String repid = createForSpecialCase(ser);
- if (repid != null)
- return repid;
- Class clazz = ser.getClass();
- repid = (String)classToRepStr.get(clazz);
-
- if (repid != null)
- return repid;
-
- repid = kValuePrefix + convertToISOLatin1(clazz.getName()) +
- createHashString(clazz);
-
- classToRepStr.put(clazz, repid);
- repStrToClass.put(repid, clazz);
- return repid;
- }
- }
-
- /**
- * Creates a repository ID for a normal Java Type.
- * @param clz The Java class to create a repository ID for
- * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser implements the
- * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
- **/
- public static String createForJavaType(Class clz)
- throws com.sun.corba.se.impl.io.TypeMismatchException
- {
- synchronized (classToRepStr){
- String repid = createForSpecialCase(clz);
- if (repid != null)
- return repid;
-
- repid = (String)classToRepStr.get(clz);
- if (repid != null)
- return repid;
-
- repid = kValuePrefix + convertToISOLatin1(clz.getName()) +
- createHashString(clz);
-
- classToRepStr.put(clz, repid);
- repStrToClass.put(repid, clz);
- return repid;
- }
- }
-
- /**
- * Creates a repository ID for an IDL Java Type.
- * @param ser The IDL Value object to create a repository ID for
- * @param major The major version number
- * @param minor The minor version number
- * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser does not implement the
- * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
- **/
- public static String createForIDLType(Class ser, int major, int minor)
- throws com.sun.corba.se.impl.io.TypeMismatchException
- {
- synchronized (classIDLToRepStr){
- String repid = (String)classIDLToRepStr.get(ser);
- if (repid != null)
- return repid;
-
- repid = kIDLPrefix + convertToISOLatin1(ser.getName()).replace('.','/') +
- ":" + major + "." + minor;
- classIDLToRepStr.put(ser, repid);
- return repid;
- }
- }
-
- private static String getIdFromHelper(Class clazz){
- try {
- Class helperClazz = Utility.loadClassForClass(clazz.getName()+"Helper", null,
- clazz.getClassLoader(), clazz, clazz.getClassLoader());
- Method idMethod = helperClazz.getDeclaredMethod("id", kNoParamTypes);
- return (String)idMethod.invoke(null, kNoArgs);
- }
- catch(java.lang.ClassNotFoundException cnfe)
- {
- throw new org.omg.CORBA.MARSHAL(cnfe.toString());
- }
- catch(java.lang.NoSuchMethodException nsme)
- {
- throw new org.omg.CORBA.MARSHAL(nsme.toString());
- }
- catch(java.lang.reflect.InvocationTargetException ite)
- {
- throw new org.omg.CORBA.MARSHAL(ite.toString());
- }
- catch(java.lang.IllegalAccessException iae)
- {
- throw new org.omg.CORBA.MARSHAL(iae.toString());
- }
- }
-
- /**
- * Createa a repository ID for the type if it is either a java type
- * or an IDL type.
- * @param type The type to create rep. id for
- * @return The rep. id.
- **/
- public static String createForAnyType(Class type) {
- try{
- if (type.isArray())
- return createSequenceRepID(type);
- else if (IDLEntity.class.isAssignableFrom(type))
- {
- try{
- return getIdFromHelper(type);
- }
- catch(Throwable t) {
- return createForIDLType(type, 1, 0);
- }
- }
- else return createForJavaType(type);
- }
- catch(com.sun.corba.se.impl.io.TypeMismatchException e){
- return null;
- }
-
- }
-
- public static boolean isAbstractBase(Class clazz) {
- return (clazz.isInterface() &&
- IDLEntity.class.isAssignableFrom(clazz) &&
- (!ValueBase.class.isAssignableFrom(clazz)) &&
- (!org.omg.CORBA.Object.class.isAssignableFrom(clazz)));
-
- }
-
- public static boolean isAnyRequired(Class clazz) {
- return ((clazz == java.lang.Object.class) ||
- (clazz == java.io.Serializable.class) ||
- (clazz == java.io.Externalizable.class));
- }
-
- public static long fromHex(String hexNumber) {
- if (hexNumber.startsWith("0x"))
- return Long.valueOf(hexNumber.substring(2), 16).longValue();
- else return Long.valueOf(hexNumber, 16).longValue();
- }
-
- /**
- * Convert strings with illegal IDL identifier characters.
- *
- * Section 5.5.7 of OBV spec.
- */
- private static String convertToISOLatin1 (String name) {
-
- int length = name.length();
- if (length == 0) {
- return name;
- }
- StringBuffer buffer = null;
-
- for (int i = 0; i < length; i++) {
-
- char c = name.charAt(i);
-
- if (c > 255 || IDL_IDENTIFIER_CHARS[c] == 0) {
-
- // We gotta convert. Have we already started?
-
- if (buffer == null) {
-
- // No, so get set up...
-
- buffer = new StringBuffer(name.substring(0,i));
- }
-
- // Convert the character into the IDL escape syntax...
- buffer.append(
- "\\U" +
- (char)ASCII_HEX[(c & 0xF000) >>> 12] +
- (char)ASCII_HEX[(c & 0x0F00) >>> 8] +
- (char)ASCII_HEX[(c & 0x00F0) >>> 4] +
- (char)ASCII_HEX[(c & 0x000F)]);
-
- } else {
- if (buffer != null) {
- buffer.append(c);
- }
- }
- }
-
- if (buffer != null) {
- name = buffer.toString();
- }
-
- return name;
- }
-
- /**
- * Convert strings with ISO Latin 1 escape sequences back to original strings.
- *
- * Section 5.5.7 of OBV spec.
- */
- private static String convertFromISOLatin1 (String name) {
-
- int index = -1;
- StringBuffer buf = new StringBuffer(name);
-
- while ((index = buf.toString().indexOf("\\U")) != -1){
- String str = "0000" + buf.toString().substring(index+2, index+6);
-
- // Convert Hexadecimal
- byte[] buffer = new byte[(str.length() - 4) / 2];
- for (int i=4, j=0; i < str.length(); i +=2, j++) {
- buffer[j] = (byte)((ORBUtility.hexOf(str.charAt(i)) << 4) & 0xF0);
- buffer[j] |= (byte)((ORBUtility.hexOf(str.charAt(i+1)) << 0) & 0x0F);
- }
- buf = new StringBuffer(delete(buf.toString(), index, index+6));
- buf.insert(index, (char)buffer[1]);
- }
-
- return buf.toString();
-
-
- }
-
- private static String delete(String str, int from, int to)
- {
- return str.substring(0, from) + str.substring(to, str.length());
- }
-
- private static String replace(String target, String arg, String source)
- {
- int i = 0;
- i = target.indexOf(arg);
-
- while(i != -1)
- {
- String left = target.substring(0, i);
- String right = target.substring(i+arg.length());
- target = new String(left+source+right);
- i = target.indexOf(arg);
- }
- return target;
- }
-
- public static int computeValueTag(boolean codeBasePresent, int typeInfo, boolean chunkedEncoding){
- int value_tag = kInitialValueTag;
-
- if (codeBasePresent)
- value_tag = value_tag | 0x00000001;
-
- value_tag = value_tag | typeInfo;
-
- if (chunkedEncoding)
- value_tag = value_tag | kChunkedMask;
-
- return value_tag;
- }
-
- public static boolean isCodeBasePresent(int value_tag){
- return ((value_tag & 0x00000001) == 1);
- }
-
- public static int getTypeInfo(int value_tag){
- return (value_tag & 0x00000006);
- }
-
- public static boolean isChunkedEncoding(int value_tag){
- return ((value_tag & kChunkedMask) != 0);
- }
-
- public static String getServerURL(){
- return defaultServerURL;
- }
-
- /*
- * Load a class and check that it is assignable to a given type.
- * @param className the class name.
- * @param remoteCodebase the codebase to use. May be null.
- * @param loader the class loader of last resort. May be null.
- * @param expectedType the expected type. May be null.
- * @return the loaded class.
- */
- private Class loadClassOfType (String className,
- String remoteCodebase,
- ClassLoader loader,
- Class expectedType,
- ClassLoader expectedTypeClassLoader)
- throws ClassNotFoundException {
-
- Class loadedClass = null;
-
- try {
- //Sequence finding of the stubs according to spec
- try{
- //If-else is put here for speed up of J2EE.
- //According to the OMG spec, the if clause is not dead code.
- //It can occur if some compiler has allowed generation
- //into org.omg.stub hierarchy for non-offending
- //classes. This will encourage people to
- //produce non-offending class stubs in their own hierarchy.
- if(!PackagePrefixChecker
- .hasOffendingPrefix(PackagePrefixChecker
- .withoutPackagePrefix(className))){
- loadedClass = Util.loadClass
- (PackagePrefixChecker.withoutPackagePrefix(className),
- remoteCodebase,
- loader);
- } else {
- loadedClass = Util.loadClass
- (className,
- remoteCodebase,
- loader);
- }
- } catch (ClassNotFoundException cnfe) {
- loadedClass = Util.loadClass
- (className,
- remoteCodebase,
- loader);
- }
- if (expectedType == null)
- return loadedClass;
- } catch (ClassNotFoundException cnfe) {
- if (expectedType == null)
- throw cnfe;
- }
-
- // If no class was not loaded, or if the loaded class is not of the
- // correct type, make a further attempt to load the correct class
- // using the classloader of the expected type.
- // _REVISIT_ Is this step necessary, or should the Util,loadClass
- // algorithm always produce a valid class if the setup is correct?
- // Does the OMG standard algorithm need to be changed to include
- // this step?
- if (loadedClass == null || !expectedType.isAssignableFrom(loadedClass)) {
- if (expectedType.getClassLoader() != expectedTypeClassLoader)
- throw new IllegalArgumentException("expectedTypeClassLoader not class loader of expectedType.");
-
- if (expectedTypeClassLoader != null)
- loadedClass = expectedTypeClassLoader.loadClass(className);
- else
- loadedClass = Class.forName(className);
- }
-
- return loadedClass;
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java
deleted file mode 100755
index 68b53c3..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999 All Rights Reserved
- *
- */
-
-package com.sun.corba.se.impl.orbutil;
-
-import javax.rmi.CORBA.Util;
-import javax.rmi.PortableRemoteObject;
-
-import java.util.Hashtable;
-import java.util.Stack;
-import java.io.IOException;
-import java.util.EmptyStackException;
-
-import com.sun.corba.se.impl.util.Utility;
-import com.sun.corba.se.impl.io.IIOPInputStream;
-import com.sun.corba.se.impl.io.IIOPOutputStream;
-import com.sun.corba.se.impl.util.RepositoryId;
-import com.sun.corba.se.impl.util.Utility;
-
-import org.omg.CORBA.TCKind;
-import org.omg.CORBA.MARSHAL;
-import org.omg.CORBA.CompletionStatus;
-import org.omg.CORBA.portable.IndirectionException;
-import com.sun.org.omg.SendingContext.CodeBase;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-/**
- * This class overrides behavior of our current ValueHandlerImpl to
- * provide backwards compatibility with JDK 1.3.0.
- */
-public class ValueHandlerImpl_1_3 extends com.sun.corba.se.impl.io.ValueHandlerImpl {
-
- public ValueHandlerImpl_1_3(){
- super();
- }
-
- public ValueHandlerImpl_1_3(boolean isInputStream) {
- super(isInputStream);
- }
-
- /**
- * Writes the value to the stream using java semantics.
- * @param out The stream to write the value to
- * @param value The value to be written to the stream
- **/
- public void writeValue(org.omg.CORBA.portable.OutputStream _out, java.io.Serializable value) {
- super.writeValue(_out, value);
- }
-
- /**
- * Reads a value from the stream using java semantics.
- * @param in The stream to read the value from
- * @param clazz The type of the value to be read in
- * @param sender The sending context runtime
- **/
- public java.io.Serializable readValue(org.omg.CORBA.portable.InputStream _in,
- int offset,
- java.lang.Class clazz,
- String repositoryID,
- org.omg.SendingContext.RunTime _sender)
- {
- return super.readValue(_in, offset, clazz, repositoryID, _sender);
- }
-
- /**
- * Returns the repository ID for the given RMI value Class.
- * @param clz The class to return a repository ID for.
- * @return the repository ID of the Class.
- **/
- public java.lang.String getRMIRepositoryID(java.lang.Class clz) {
- return RepositoryId_1_3.createForJavaType(clz);
- }
-
- /**
- * Indicates whether the given Class performs custom or
- * default marshaling.
- * @param clz The class to test for custom marshaling.
- * @return True if the class performs custom marshaling, false
- * if it does not.
- **/
- public boolean isCustomMarshaled(java.lang.Class clz) {
- return super.isCustomMarshaled(clz);
- }
-
- /**
- * Returns the CodeBase for this ValueHandler. This is used by
- * the ORB runtime. The server sends the service context containing
- * the IOR for this CodeBase on the first GIOP reply. The clients
- * do the same on the first GIOP request.
- * @return the SendingContext.CodeBase of this ValueHandler.
- **/
- public org.omg.SendingContext.RunTime getRunTimeCodeBase() {
- return super.getRunTimeCodeBase();
- }
-
- /**
- * If the value contains a writeReplace method then the result
- * is returned. Otherwise, the value itself is returned.
- * @return the true value to marshal on the wire.
- **/
- public java.io.Serializable writeReplace(java.io.Serializable value) {
- return super.writeReplace(value);
- }
-
- // methods supported for backward compatability so that the appropriate
- // Rep-id calculations take place based on the ORB version
-
- /**
- * Returns a boolean of whether or not RepositoryId indicates
- * FullValueDescriptor.
- * used for backward compatability
- */
-
- public boolean useFullValueDescription(Class clazz, String repositoryID)
- throws IOException
-
- {
- return RepositoryId_1_3.useFullValueDescription(clazz, repositoryID);
- }
-
- public String getClassName(String id)
- {
- RepositoryId_1_3 repID = RepositoryId_1_3.cache.getId(id);
- return repID.getClassName();
- }
-
- public Class getClassFromType(String id)
- throws ClassNotFoundException
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getClassFromType();
- }
-
- public Class getAnyClassFromType(String id)
- throws ClassNotFoundException
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getAnyClassFromType();
- }
-
- public String createForAnyType(Class cl)
- {
- return RepositoryId_1_3.createForAnyType(cl);
- }
-
- public String getDefinedInId(String id)
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getDefinedInId();
- }
-
- public String getUnqualifiedName(String id)
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getUnqualifiedName();
- }
-
- public String getSerialVersionUID(String id)
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getSerialVersionUID();
- }
-
- public boolean isAbstractBase(Class clazz)
- {
- return RepositoryId_1_3.isAbstractBase(clazz);
- }
-
- public boolean isSequence(String id)
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.isSequence();
- }
-
- /**
- * Preserves the incorrect 1.3 behavior which truncates Java chars in
- * arrays to 8-bit CORBA chars. Bug 4367783. This enables us to
- * continue interoperating with our legacy ORBs. If this goes into
- * Ladybird, then Ladybird and Kestrel will interoperate as long as
- * people don't use chars greater than 8-bits.
- */
- protected void writeCharArray(org.omg.CORBA_2_3.portable.OutputStream out,
- char[] array,
- int offset,
- int length)
- {
- out.write_char_array(array, offset, length);
- }
-
- /**
- * Preserves the incorrect 1.3 behavior which truncates Java chars in
- * arrays to 8-bit CORBA chars. Bug 4367783. This enables us to
- * continue interoperating with our legacy ORBs. If this goes into
- * Ladybird, then Ladybird and Kestrel will interoperate as long as
- * people don't use chars greater than 8-bits.
- */
- protected void readCharArray(org.omg.CORBA_2_3.portable.InputStream in,
- char[] array,
- int offset,
- int length)
- {
- in.read_char_array(array, offset, length);
- }
-
- protected final String getOutputStreamClassName() {
- return "com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3";
- }
-
- protected final String getInputStreamClassName() {
- return "com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3";
- }
-
- /**
- * Our JDK 1.3 and JDK 1.3.1 behavior subclasses override this.
- * The correct behavior is for a Java char to map to a CORBA wchar,
- * but our older code mapped it to a CORBA char.
- */
- protected TCKind getJavaCharTCKind() {
- return TCKind.tk_char;
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java
deleted file mode 100755
index 7309ec1..0000000
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.corba.se.impl.orbutil;
-
-import org.omg.CORBA.TCKind;
-
-/**
- * This class overrides behavior of our current ValueHandlerImpl to
- * provide backwards compatibility with JDK 1.3.1.
- */
-public class ValueHandlerImpl_1_3_1
- extends com.sun.corba.se.impl.io.ValueHandlerImpl
-{
- public ValueHandlerImpl_1_3_1() {}
-
- public ValueHandlerImpl_1_3_1(boolean isInputStream) {
- super(isInputStream);
- }
-
- /**
- * Our JDK 1.3 and JDK 1.3.1 behavior subclasses override this.
- * The correct behavior is for a Java char to map to a CORBA wchar,
- * but our older code mapped it to a CORBA char.
- */
- protected TCKind getJavaCharTCKind() {
- return TCKind.tk_char;
- }
-
- /**
- * RepositoryId_1_3_1 performs an incorrect repId calculation
- * when using serialPersistentFields and one of the fields no longer
- * exists on the class itself.
- */
- public boolean useFullValueDescription(Class clazz, String repositoryID)
- throws java.io.IOException
- {
- return RepositoryId_1_3_1.useFullValueDescription(clazz, repositoryID);
- }
-
- /**
- * Installs the legacy IIOPOutputStream_1_3_1 which does
- * PutFields/GetFields incorrectly. Bug 4407244.
- */
- protected final String getOutputStreamClassName() {
- return "com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3_1";
- }
-
- /**
- * Installs the legacy IIOPInputStream_1_3_1 which does
- * PutFields/GetFields incorrectly. Bug 4407244.
- */
- protected final String getInputStreamClassName() {
- return "com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3_1";
- }
-}
diff --git a/corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java b/corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java
index 22b89e7..89506e7 100755
--- a/corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java
+++ b/corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java
@@ -98,6 +98,7 @@ import com.sun.corba.se.impl.logging.OMGSystemException ;
import com.sun.corba.se.impl.presentation.rmi.PresentationManagerImpl ;
import com.sun.corba.se.impl.orbutil.ORBClassLoader ;
+import sun.awt.AppContext;
public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
implements Broker, TypeCodeFactory
@@ -173,14 +174,7 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
protected MonitoringManager monitoringManager;
- // There is only one instance of the PresentationManager
- // that is shared between all ORBs. This is necessary
- // because RMI-IIOP requires the PresentationManager in
- // places where no ORB is available, so the PresentationManager
- // must be global. It is initialized here as well.
- protected static PresentationManager globalPM = null ;
-
- static {
+ private static PresentationManager setupPresentationManager() {
staticWrapper = ORBUtilSystemException.get(
CORBALogDomains.RPC_PRESENTATION ) ;
@@ -218,12 +212,13 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
return sff ;
}
}
- ) ;
+ );
- globalPM = new PresentationManagerImpl( useDynamicStub ) ;
- globalPM.setStubFactoryFactory( false,
+ PresentationManager pm = new PresentationManagerImpl( useDynamicStub ) ;
+ pm.setStubFactoryFactory( false,
PresentationDefaults.getStaticStubFactoryFactory() ) ;
- globalPM.setStubFactoryFactory( true, dynamicStubFactoryFactory ) ;
+ pm.setStubFactoryFactory( true, dynamicStubFactoryFactory ) ;
+ return pm;
}
public void destroy() {
@@ -234,11 +229,19 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
byteBufferPool = null;
}
- /** Get the single instance of the PresentationManager
+ /**
+ * Returns the Presentation Manager for the current thread group, using the ThreadGroup-specific
+ * AppContext to hold it. Creates and records one if needed.
*/
public static PresentationManager getPresentationManager()
{
- return globalPM ;
+ AppContext ac = AppContext.getAppContext();
+ PresentationManager pm = (PresentationManager) ac.get(PresentationManager.class);
+ if (pm == null) {
+ pm = setupPresentationManager();
+ ac.put(PresentationManager.class, pm);
+ }
+ return pm;
}
/** Get the appropriate StubFactoryFactory. This
@@ -248,8 +251,9 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
public static PresentationManager.StubFactoryFactory
getStubFactoryFactory()
{
- boolean useDynamicStubs = globalPM.useDynamicStubs() ;
- return globalPM.getStubFactoryFactory( useDynamicStubs ) ;
+ PresentationManager gPM = getPresentationManager();
+ boolean useDynamicStubs = gPM.useDynamicStubs() ;
+ return gPM.getStubFactoryFactory( useDynamicStubs ) ;
}
protected ORB()
@@ -543,6 +547,7 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
public abstract ThreadPoolManager getThreadPoolManager();
public abstract CopierManager getCopierManager() ;
+
}
// End of file.
diff --git a/corba/src/share/classes/sun/corba/JavaCorbaAccess.java b/corba/src/share/classes/sun/corba/JavaCorbaAccess.java
new file mode 100644
index 0000000..046453f
--- /dev/null
+++ b/corba/src/share/classes/sun/corba/JavaCorbaAccess.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.corba;
+
+import com.sun.corba.se.impl.io.ValueHandlerImpl;
+
+public interface JavaCorbaAccess {
+ public ValueHandlerImpl newValueHandlerImpl();
+}
diff --git a/corba/src/share/classes/sun/corba/SharedSecrets.java b/corba/src/share/classes/sun/corba/SharedSecrets.java
new file mode 100644
index 0000000..aba3ee0
--- /dev/null
+++ b/corba/src/share/classes/sun/corba/SharedSecrets.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.corba;
+
+import com.sun.corba.se.impl.io.ValueUtility;
+import sun.misc.Unsafe;
+
+import java.security.AccessController;
+
+/** A repository of "shared secrets", which are a mechanism for
+ calling implementation-private methods in another package without
+ using reflection. A package-private class implements a public
+ interface and provides the ability to call package-private methods
+ within that package; the object implementing that interface is
+ provided through a third package to which access is restricted.
+ This framework avoids the primary disadvantage of using reflection
+ for this purpose, namely the loss of compile-time checking. */
+
+// SharedSecrets cloned in corba repo to avoid build issues
+public class SharedSecrets {
+ private static final Unsafe unsafe = Unsafe.getUnsafe();
+ private static JavaCorbaAccess javaCorbaAccess;
+
+ public static JavaCorbaAccess getJavaCorbaAccess() {
+ if (javaCorbaAccess == null) {
+ // Ensure ValueUtility is initialized; we know that that class
+ // provides the shared secret
+ unsafe.ensureClassInitialized(ValueUtility.class);
+ }
+ return javaCorbaAccess;
+ }
+
+ public static void setJavaCorbaAccess(JavaCorbaAccess access) {
+ javaCorbaAccess = access;
+ }
+
+}
diff --git a/hotspot/.hgtags b/hotspot/.hgtags
index 22348bc..ae81f9c 100755
--- a/hotspot/.hgtags
+++ b/hotspot/.hgtags
@@ -182,6 +182,7 @@ fe189d4a44e9e8f0c7d78fcbd1c63701745752ca jdk7-b144
38fa55e5e79232d48f1bb8cf27d88bc094c9375a hs21-b16
81d815b05abb564aa1f4100ae13491c949b9a07e jdk7-b147
81d815b05abb564aa1f4100ae13491c949b9a07e hs21-b17
+f1a18ada5853af49fce54d43dd5a5b67dc291470 7u0
9b0ca45cd756d538c4c30afab280a91868eee1a5 jdk7u2-b01
0cc8a70952c368e06de2adab1f2649a408f5e577 jdk8-b01
31e253c1da429124bb87570ab095d9bc89850d0a jdk8-b02
@@ -318,5 +319,69 @@ a0c2fa4baeb6aad6f33dc87b676b21345794d61e hs23.2-b09
02a6c89432d724119565f9ba25672829b136fc5f jdk7u6-b21
a79d86eef6ac995a1fc35554f082f3a61abe9ae0 jdk7u6-b22
df57f6208cb76b4e8d1a0bd0eea3d2ad577cb79b jdk7u6-b23
-02a6c89432d724119565f9ba25672829b136fc5f jdk7u8-b01
-528502f930967f70c320472a002418f1e38029e0 jdk7u8-b02
+b03c2687fb16514652e79261ad68d2c601dcee62 jdk7u6-b24
+cffde29ea7cc8647f17002a4d0e94065dcd82839 jdk7u6-b30
+7566374c3c89b7d99be9bcdb9342283a3bea6930 jdk7u6-b31
+f7933fecea9aa494e4032e17ff07e5fcec4b5961 jdk7u7-b10
+eeef33dc4b40f9ba50c4c9b1ac61b30f0f2523bf jdk7u7-b30
+f1551c70c7f598b7049bcc33e530fc738a81c7a4 jdk7u7-b11
+6b9db7216dd4b7846faf372f19566a418c8e391f jdk7u7-b31
+b66bb0e3224ff15259361a5b501bf8fa6b346113 jdk7u7-b01
+ca6943c94e6075fc28353d52ac6ea52c80aef9bb jdk7u7-b02
+e043d96d767d8ba4d74d53c477af8e07b78b6128 jdk7u9-b03
+0000000000000000000000000000000000000000 jdk7u7-b01
+b66bb0e3224ff15259361a5b501bf8fa6b346113 jdk7u9-b01
+0000000000000000000000000000000000000000 jdk7u7-b02
+ca6943c94e6075fc28353d52ac6ea52c80aef9bb jdk7u9-b02
+ed42837374ac730ddaf2fd28814017c665634a8b jdk7u9-b04
+da4aa289ac100017f850ed4d492e8054db6a1e28 jdk7u9-b05
+8eaa45ed5f804199c0823b409dc37f72e808926f jdk7u9-b31
+ea83168282c8c3a9f4a8ca723cc86972a3188d58 jdk7u9-b32
+d2e25680db9d4209b3f0f51e5c848284cedea508 jdk7u10-b10
+d37fd995683ab5bc2d941648ce7bf8bd194732f2 jdk7u10-b11
+f26f3d92e6d9ef7842b2d785f92439dbb15e670e jdk7u10-b12
+58881c615a5179bcea69148d0b3eb47a1f1a7de8 jdk7u10-b13
+cdbf4d442b56ece8ac521c65b59087682e5ae918 jdk7u10-b14
+63e8b49b329e4b50547b13f5c732665bed535732 jdk7u10-b15
+1cb34ef50bddc334c8538cf85d8612383debc74f jdk7u10-b16
+5c154a591de987d515f5b102a988bcf96d439f53 jdk7u10-b17
+78c7e1b4a006342230e04fbb73f637834207abef jdk7u10-b18
+c6b78bbaf6976197ead9d5aa3f65e0224cd13541 jdk7u10-b30
+07f7daeb261073a4a2946d988979ee65ba8ed753 jdk7u10-b31
+25a92b94ad538963d009bf8a53ce548e13f55c82 jdk7u11-b20
+7a2cf85fc36e845db9ccb2a22af195c70af33bdf jdk7u11-b21
+06b5c3f663b81f11da2080a91d215a96ae431f84 jdk7u11-b32
+abb5b690122caabf09f93958c747358cc22f8a59 jdk7u11-b33
+db7028c8a953f46225fceb6148f97de87c784dda jdk7u11-b03
+4d418a1b8be04220f504cf414b47877821a22a26 jdk7u11-b04
+f71032f398a3baea567710ba7161c64b94495cac jdk7u11-b05
+0cbce123c9027d531e585fd81fbc361c5f8407f1 jdk7u11-b06
+94bf1e3dafef3cc06d3f97f81d304313ccd999ee jdk7u11-b07
+2b543aa340e4a75671fe05803fcee08bf3e136db jdk7u11-b08
+34a7b6dda06e2ff6f7e9ad563e3fc3ecd8993579 jdk7u13-b09
+e0e52e35e0c53a84daadae95f626e36fd74f3eba jdk7u13-b10
+be57a8d7a1a75971c3b1e7777dcacd20f3d33264 jdk7u13-b30
+e0e52e35e0c53a84daadae95f626e36fd74f3eba jdk7u13-b20
+5fbe0cae3a2a78a73946cfd08c56a64860f1afd9 jdk7u15-b01
+30d72c9abb560bc424d16d96bfd396ccd3c62cbc jdk7u15-b02
+221c64550c5b4411d78b63820835de1a8cd0c118 jdk7u15-b30
+0b905a04f573565515aa8614085099abd73dcac4 jdk7u15-b31
+8b349f332a66ebe5982b5680c85f903efb03da8e jdk7u15-b33
+5b55cef461b034766f05a46640caa123aa4247d4 jdk7u15-b03
+34a7b6dda06e2ff6f7e9ad563e3fc3ecd8993579 jdk7u15-b32
+a4dfda7a2655209abb170b2fa4914dbbba89bcd3 jdk7u17-b01
+0d82bf449a610602b6e9ddcc9e076839d5351449 jdk7u17-b02
+7b357c079370e2fd324c229f2e24c982915c80a0 jdk7u17-b30
+22b6fd616cfe61774525a944f162bf5e7c418f03 jdk7u17-b31
+be57a8d7a1a75971c3b1e7777dcacd20f3d33264 jdk7u21-b01
+5119d89c7cc844190c0799dca85710e7592d42e7 jdk7u21-b02
+ad14169fb640ca532193cca0fd6e14910f226075 jdk7u21-b03
+c954aab38a7f8f62e33ae5103494576f67fc36d9 jdk7u21-b04
+0e8e9d990d91dc0f8b8807bb82c090de3264c809 jdk7u21-b05
+beeb3d6b76f06d9f60c31d6c5b9e04d82f01ad79 jdk7u21-b06
+663b5c744e82d1c884048cd9b38f625e52004773 jdk7u21-b07
+87e9bb582938552180b024dd99bc5166816f3921 jdk7u21-b08
+1f195ee7856aecb6527bc5c957f66e1960e51a12 jdk7u21-b09
+d4a4c2bd389abcd80c25d20e0ffb7d5cee356715 jdk7u21-b10
+d07dafb51e1d75f110a3c506c250d995235acca6 jdk7u21-b11
+a977dedec81c346247631ead6f3364c76949d67a jdk7u21-b30
diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java
index 029c20f..ba19e39 100755
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java
@@ -33,6 +33,7 @@ import sun.jvm.hotspot.debugger.proc.*;
import sun.jvm.hotspot.debugger.remote.*;
import sun.jvm.hotspot.debugger.windbg.*;
import sun.jvm.hotspot.debugger.linux.*;
+import sun.jvm.hotspot.debugger.bsd.*;
import sun.jvm.hotspot.memory.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java
index 3b89f59..c95d933 100755
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java
@@ -35,6 +35,7 @@ import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.debugger.windbg.*;
import sun.jvm.hotspot.debugger.linux.*;
import sun.jvm.hotspot.debugger.sparc.*;
+import sun.jvm.hotspot.debugger.bsd.*;
import sun.jvm.hotspot.debugger.remote.*;
import sun.jvm.hotspot.livejvm.*;
import sun.jvm.hotspot.memory.*;
diff --git a/hotspot/make/bsd/Makefile b/hotspot/make/bsd/Makefile
index 9660f4a..874dcfb 100755
--- a/hotspot/make/bsd/Makefile
+++ b/hotspot/make/bsd/Makefile
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2012, Oracle and/or its affiliates. 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
@@ -211,6 +211,8 @@ BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) LIBRARY_SUFFIX=$(LIBRARY_SUFFIX)
BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
+
BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
#-------------------------------------------------------------------------------
@@ -337,9 +339,11 @@ treeshark: $(SUBDIRS_SHARK)
# Doc target. This is the same for all build options.
# Hence create a docs directory beside ...$(ARCH)_[...]
+# We specify 'BUILD_FLAVOR=product' so that the proper
+# ENABLE_FULL_DEBUG_SYMBOLS value is used.
docs: checks
$(QUIETLY) mkdir -p $(SUBDIR_DOCS)
- $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) jvmtidocs
+ $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) BUILD_FLAVOR=product jvmtidocs
# Synonyms for win32-like targets.
compiler2: jvmg product
diff --git a/hotspot/make/bsd/makefiles/buildtree.make b/hotspot/make/bsd/makefiles/buildtree.make
index 960a382..8e147d4 100755
--- a/hotspot/make/bsd/makefiles/buildtree.make
+++ b/hotspot/make/bsd/makefiles/buildtree.make
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2012, Oracle and/or its affiliates. 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
@@ -242,6 +242,16 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
[ -n "$(CFLAGS_BROWSE)" ] && \
echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
+ [ -n "$(ENABLE_FULL_DEBUG_SYMBOLS)" ] && \
+ echo && echo "ENABLE_FULL_DEBUG_SYMBOLS = $(ENABLE_FULL_DEBUG_SYMBOLS)"; \
+ [ -n "$(OBJCOPY)" ] && \
+ echo && echo "OBJCOPY = $(OBJCOPY)"; \
+ [ -n "$(STRIP_POLICY)" ] && \
+ echo && echo "STRIP_POLICY = $(STRIP_POLICY)"; \
+ [ -n "$(ZIP_DEBUGINFO_FILES)" ] && \
+ echo && echo "ZIP_DEBUGINFO_FILES = $(ZIP_DEBUGINFO_FILES)"; \
+ [ -n "$(ZIPEXE)" ] && \
+ echo && echo "ZIPEXE = $(ZIPEXE)"; \
[ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
echo && \
echo "HOTSPOT_EXTRA_SYSDEFS\$$(HOTSPOT_EXTRA_SYSDEFS) = $(HOTSPOT_EXTRA_SYSDEFS)" && \
@@ -359,7 +369,7 @@ jdkpath.sh: $(BUILDTREE_MAKE)
$(QUIETLY) ( \
$(BUILDTREE_COMMENT); \
echo "JDK=${JAVA_HOME}"; \
- ) > $@
+ ) > $@
.dbxrc: $(BUILDTREE_MAKE)
@echo Creating $@ ...
diff --git a/hotspot/make/bsd/makefiles/defs.make b/hotspot/make/bsd/makefiles/defs.make
index 7048970..e6f1d0f 100755
--- a/hotspot/make/bsd/makefiles/defs.make
+++ b/hotspot/make/bsd/makefiles/defs.make
@@ -86,7 +86,7 @@ ifneq (,$(findstring $(ARCH), amd64 x86_64))
VM_PLATFORM = bsd_i486
HS_ARCH = x86
# We have to reset ARCH to i386 since SRCARCH relies on it
- ARCH = i386
+ ARCH = i386
endif
endif
@@ -124,6 +124,107 @@ ifeq ($(ARCH), ppc)
HS_ARCH = ppc
endif
+# determine if HotSpot is being built in JDK6 or earlier version
+JDK6_OR_EARLIER=0
+ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
+ # if the longer variable names (newer build style) are set, then check those
+ ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
+ JDK6_OR_EARLIER=1
+ endif
+else
+ # the longer variables aren't set so check the shorter variable names
+ ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
+ JDK6_OR_EARLIER=1
+ endif
+endif
+
+ifeq ($(JDK6_OR_EARLIER),0)
+ # Full Debug Symbols is supported on JDK7 or newer.
+ # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
+ # builds is enabled with debug info files ZIP'ed to save space. For
+ # BUILD_FLAVOR != product builds, FDS is always enabled, after all a
+ # debug build without debug info isn't very useful.
+ # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
+ #
+ # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
+ # disabled for a BUILD_FLAVOR == product build.
+ #
+ # Note: Use of a different variable name for the FDS override option
+ # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
+ # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
+ # in options via environment variables, use of distinct variables
+ # prevents strange behaviours. For example, in a BUILD_FLAVOR !=
+ # product build, the FULL_DEBUG_SYMBOLS environment variable will be
+ # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
+ # the same variable name is used, then different values can be picked
+ # up by different parts of the build. Just to be clear, we only need
+ # two variable names because the incoming option value can be
+ # overridden in some situations, e.g., a BUILD_FLAVOR != product
+ # build.
+
+ ifeq ($(BUILD_FLAVOR), product)
+ FULL_DEBUG_SYMBOLS ?= 1
+ ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
+ else
+ # debug variants always get Full Debug Symbols (if available)
+ ENABLE_FULL_DEBUG_SYMBOLS = 1
+ endif
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
+ # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
+
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ # Default OBJCOPY comes from GNU Binutils on Linux:
+ DEF_OBJCOPY=/usr/bin/objcopy
+ ifdef CROSS_COMPILE_ARCH
+ # don't try to generate .debuginfo files when cross compiling
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: cross compiling for ARCH $(CROSS_COMPILE_ARCH)," \
+ "skipping .debuginfo generation.")
+ OBJCOPY=
+ else
+ OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
+ ifneq ($(ALT_OBJCOPY),)
+ _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
+ OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
+ endif
+ endif
+ else
+ OBJCOPY=
+ endif
+
+ ifeq ($(OBJCOPY),)
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
+ ENABLE_FULL_DEBUG_SYMBOLS=0
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
+ else
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
+
+ # Library stripping policies for .debuginfo configs:
+ # all_strip - strips everything from the library
+ # min_strip - strips most stuff from the library; leaves minimum symbols
+ # no_strip - does not strip the library at all
+ #
+ # Oracle security policy requires "all_strip". A waiver was granted on
+ # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
+ #
+ # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
+ #
+ STRIP_POLICY ?= min_strip
+
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
+
+ ZIP_DEBUGINFO_FILES ?= 1
+
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)")
+ endif
+endif
+
JDK_INCLUDE_SUBDIR=bsd
# Library suffix
@@ -141,18 +242,39 @@ EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
# client and server subdirectories have symbolic links to ../libjsig.so
EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
+ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz
+ else
+ EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo
+ endif
+endif
EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
ifndef BUILD_CLIENT_ONLY
EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
+ else
+ EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
+ endif
+ endif
endif
ifneq ($(ZERO_BUILD), true)
ifeq ($(ARCH_DATA_MODEL), 32)
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
+ else
+ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
+ endif
+ endif
endif
endif
@@ -164,6 +286,15 @@ ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
$(EXPORT_LIB_DIR)/sa-jdi.jar
ADD_SA_BINARIES/universal = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
$(EXPORT_LIB_DIR)/sa-jdi.jar
+ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ ADD_SA_BINARIES/x86 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
+ ADD_SA_BINARIES/sparc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
+ else
+ ADD_SA_BINARIES/x86 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
+ ADD_SA_BINARIES/sparc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
+ endif
+endif
ADD_SA_BINARIES/ppc =
ADD_SA_BINARIES/ia64 =
ADD_SA_BINARIES/arm =
diff --git a/hotspot/make/bsd/makefiles/gcc.make b/hotspot/make/bsd/makefiles/gcc.make
index d7a6422..f06d570 100755
--- a/hotspot/make/bsd/makefiles/gcc.make
+++ b/hotspot/make/bsd/makefiles/gcc.make
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2012, Oracle and/or its affiliates. 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
@@ -124,7 +124,11 @@ ARCHFLAG/amd64 = -m64
ARCHFLAG/ia64 =
ARCHFLAG/sparc = -m32 -mcpu=v9
ARCHFLAG/sparcv9 = -m64 -mcpu=v9
+ARCHFLAG/arm = -fsigned-char
ARCHFLAG/zero = $(ZERO_ARCHFLAG)
+ifndef E500V2
+ARCHFLAG/ppc = -mcpu=powerpc
+endif
# Darwin-specific build flags
ifeq ($(OS_VENDOR), Darwin)
@@ -285,6 +289,26 @@ ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
DEBUG_CFLAGS += -gstabs
endif
+ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ FASTDEBUG_CFLAGS/ia64 = -g
+ FASTDEBUG_CFLAGS/amd64 = -g
+ FASTDEBUG_CFLAGS/arm = -g
+ FASTDEBUG_CFLAGS/ppc = -g
+ FASTDEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
+ ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),)
+ FASTDEBUG_CFLAGS += -gstabs
+ endif
+
+ OPT_CFLAGS/ia64 = -g
+ OPT_CFLAGS/amd64 = -g
+ OPT_CFLAGS/arm = -g
+ OPT_CFLAGS/ppc = -g
+ OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH))
+ ifeq ($(OPT_CFLAGS/$(BUILDARCH)),)
+ OPT_CFLAGS += -gstabs
+ endif
+endif
+
# DEBUG_BINARIES overrides everything, use full -g debug information
ifeq ($(DEBUG_BINARIES), true)
DEBUG_CFLAGS = -g
@@ -302,3 +326,9 @@ endif
ifdef MINIMIZE_RAM_USAGE
CFLAGS += -DMINIMIZE_RAM_USAGE
endif
+
+ifdef CROSS_COMPILE_ARCH
+ STRIP = $(ALT_COMPILER_PATH)/strip
+else
+ STRIP = strip
+endif
diff --git a/hotspot/make/bsd/makefiles/jsig.make b/hotspot/make/bsd/makefiles/jsig.make
index 80be208..0050356 100755
--- a/hotspot/make/bsd/makefiles/jsig.make
+++ b/hotspot/make/bsd/makefiles/jsig.make
@@ -36,9 +36,16 @@ else
LIBJSIG_G = lib$(JSIG_G).so
endif
+LIBJSIG_DEBUGINFO = lib$(JSIG).debuginfo
+LIBJSIG_DIZ = lib$(JSIG).diz
+LIBJSIG_G_DEBUGINFO = lib$(JSIG_G).debuginfo
+LIBJSIG_G_DIZ = lib$(JSIG_G).diz
+
JSIGSRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/vm
DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG)
+DEST_JSIG_DEBUGINFO = $(JDK_LIBDIR)/$(LIBJSIG_DEBUGINFO)
+DEST_JSIG_DIZ = $(JDK_LIBDIR)/$(LIBJSIG_DIZ)
LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
@@ -57,11 +64,33 @@ endif
$(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
@echo Making signal interposition lib...
$(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) -o $@ $<
+ $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) -o $@ $<
$(QUIETLY) [ -f $(LIBJSIG_G) ] || { ln -s $@ $(LIBJSIG_G); }
+ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
+ $(QUIETLY) $(STRIP) -S $@
+ # implied else here is no stripping at all
+ endif
+ endif
+ [ -f $(LIBJSIG_G_DEBUGINFO) ] || { ln -s $(LIBJSIG_DEBUGINFO) $(LIBJSIG_G_DEBUGINFO); }
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO) $(LIBJSIG_G_DEBUGINFO)
+ $(RM) $(LIBJSIG_DEBUGINFO) $(LIBJSIG_G_DEBUGINFO)
+ [ -f $(LIBJSIG_G_DIZ) ] || { ln -s $(LIBJSIG_DIZ) $(LIBJSIG_G_DIZ); }
+ endif
+endif
install_jsig: $(LIBJSIG)
@echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
+ $(QUIETLY) test -f $(LIBJSIG_DEBUGINFO) && \
+ cp -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
+ $(QUIETLY) test -f $(LIBJSIG_DIZ) && \
+ cp -f $(LIBJSIG_DIZ) $(DEST_JSIG_DIZ)
$(QUIETLY) cp -f $(LIBJSIG) $(DEST_JSIG) && echo "Done"
.PHONY: install_jsig
diff --git a/hotspot/make/bsd/makefiles/launcher.make b/hotspot/make/bsd/makefiles/launcher.make
index c78d551..bc7bbda 100755
--- a/hotspot/make/bsd/makefiles/launcher.make
+++ b/hotspot/make/bsd/makefiles/launcher.make
@@ -50,7 +50,7 @@ ifeq ($(LINK_INTO),AOUT)
LIBS_LAUNCHER += $(STATIC_STDCXX) $(LIBS)
else
LAUNCHER.o = launcher.o
- LFLAGS_LAUNCHER += -L`pwd`
+ LFLAGS_LAUNCHER += -L`pwd`
# The gamma launcher runs the JDK from $JAVA_HOME, overriding the JVM with a
# freshly built JVM at ./libjvm.{so|dylib}. This is accomplished by setting
diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-debug b/hotspot/make/bsd/makefiles/mapfile-vers-debug
index 9a2d42f..1de9a70 100755
--- a/hotspot/make/bsd/makefiles/mapfile-vers-debug
+++ b/hotspot/make/bsd/makefiles/mapfile-vers-debug
@@ -221,6 +221,7 @@ SUNWprivate_1.1 {
JVM_SetArrayElement;
JVM_SetClassSigners;
JVM_SetLength;
+ JVM_SetNativeThreadName;
JVM_SetPrimitiveArrayElement;
JVM_SetProtectionDomain;
JVM_SetSockOpt;
@@ -244,24 +245,6 @@ SUNWprivate_1.1 {
JVM_Yield;
JVM_handle_bsd_signal;
- # Old reflection routines
- # These do not need to be present in the product build in JDK 1.4
- # but their code has not been removed yet because there will not
- # be a substantial code savings until JVM_InvokeMethod and
- # JVM_NewInstanceFromConstructor can also be removed; see
- # reflectionCompat.hpp.
- JVM_GetClassConstructor;
- JVM_GetClassConstructors;
- JVM_GetClassField;
- JVM_GetClassFields;
- JVM_GetClassMethod;
- JVM_GetClassMethods;
- JVM_GetField;
- JVM_GetPrimitiveField;
- JVM_NewInstance;
- JVM_SetField;
- JVM_SetPrimitiveField;
-
# debug JVM
JVM_AccessVMBooleanFlag;
JVM_AccessVMIntFlag;
diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-product b/hotspot/make/bsd/makefiles/mapfile-vers-product
index 7a5d7c7..0aa179e 100755
--- a/hotspot/make/bsd/makefiles/mapfile-vers-product
+++ b/hotspot/make/bsd/makefiles/mapfile-vers-product
@@ -221,6 +221,7 @@ SUNWprivate_1.1 {
JVM_SetArrayElement;
JVM_SetClassSigners;
JVM_SetLength;
+ JVM_SetNativeThreadName;
JVM_SetPrimitiveArrayElement;
JVM_SetProtectionDomain;
JVM_SetSockOpt;
@@ -244,24 +245,6 @@ SUNWprivate_1.1 {
JVM_Yield;
JVM_handle_bsd_signal;
- # Old reflection routines
- # These do not need to be present in the product build in JDK 1.4
- # but their code has not been removed yet because there will not
- # be a substantial code savings until JVM_InvokeMethod and
- # JVM_NewInstanceFromConstructor can also be removed; see
- # reflectionCompat.hpp.
- JVM_GetClassConstructor;
- JVM_GetClassConstructors;
- JVM_GetClassField;
- JVM_GetClassFields;
- JVM_GetClassMethod;
- JVM_GetClassMethods;
- JVM_GetField;
- JVM_GetPrimitiveField;
- JVM_NewInstance;
- JVM_SetField;
- JVM_SetPrimitiveField;
-
# miscellaneous functions
jio_fprintf;
jio_printf;
diff --git a/hotspot/make/bsd/makefiles/ppc.make b/hotspot/make/bsd/makefiles/ppc.make
index 92957f9..8d085e6 100755
--- a/hotspot/make/bsd/makefiles/ppc.make
+++ b/hotspot/make/bsd/makefiles/ppc.make
@@ -28,3 +28,6 @@ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
# Must also specify if CPU is big endian
CFLAGS += -DVM_BIG_ENDIAN
+ifdef E500V2
+ASFLAGS += -Wa,-mspe -Wa,--defsym -Wa,E500V2=1
+endif
diff --git a/hotspot/make/bsd/makefiles/saproc.make b/hotspot/make/bsd/makefiles/saproc.make
index 458cd3a..d373a48 100755
--- a/hotspot/make/bsd/makefiles/saproc.make
+++ b/hotspot/make/bsd/makefiles/saproc.make
@@ -36,6 +36,11 @@ else
LIBSAPROC_G = lib$(SAPROC_G).so
endif
+LIBSAPROC_DEBUGINFO = lib$(SAPROC).debuginfo
+LIBSAPROC_DIZ = lib$(SAPROC).diz
+LIBSAPROC_G_DEBUGINFO = lib$(SAPROC_G).debuginfo
+LIBSAPROC_G_DIZ = lib$(SAPROC_G).diz
+
AGENT_DIR = $(GAMMADIR)/agent
SASRCDIR = $(AGENT_DIR)/src/os/$(Platform_os_family)
@@ -66,7 +71,9 @@ endif
SAMAPFILE = $(SASRCDIR)/mapfile
-DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC)
+DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC)
+DEST_SAPROC_DEBUGINFO = $(JDK_LIBDIR)/$(LIBSAPROC_DEBUGINFO)
+DEST_SAPROC_DIZ = $(JDK_LIBDIR)/$(LIBSAPROC_DIZ)
# DEBUG_BINARIES overrides everything, use full -g debug information
ifeq ($(DEBUG_BINARIES), true)
@@ -114,10 +121,32 @@ $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
-o $@ \
$(SALIBS)
$(QUIETLY) [ -f $(LIBSAPROC_G) ] || { ln -s $@ $(LIBSAPROC_G); }
+ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
+ $(QUIETLY) $(STRIP) -S $@
+ # implied else here is no stripping at all
+ endif
+ endif
+ [ -f $(LIBSAPROC_G_DEBUGINFO) ] || { ln -s $(LIBSAPROC_DEBUGINFO) $(LIBSAPROC_G_DEBUGINFO); }
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO) $(LIBSAPROC_G_DEBUGINFO)
+ $(RM) $(LIBSAPROC_DEBUGINFO) $(LIBSAPROC_G_DEBUGINFO)
+ [ -f $(LIBSAPROC_G_DIZ) ] || { ln -s $(LIBSAPROC_DIZ) $(LIBSAPROC_G_DIZ); }
+ endif
+endif
install_saproc: $(BUILDLIBSAPROC)
$(QUIETLY) if [ -e $(LIBSAPROC) ] ; then \
echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"; \
+ test -f $(LIBSAPROC_DEBUGINFO) && \
+ cp -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \
+ test -f $(LIBSAPROC_DIZ) && \
+ cp -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ); \
cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"; \
fi
diff --git a/hotspot/make/bsd/makefiles/vm.make b/hotspot/make/bsd/makefiles/vm.make
index 0124422..99f9277 100755
--- a/hotspot/make/bsd/makefiles/vm.make
+++ b/hotspot/make/bsd/makefiles/vm.make
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2012, Oracle and/or its affiliates. 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
@@ -60,10 +60,16 @@ Src_Dirs_I += $(GENERATED)
# The order is important for the precompiled headers to work.
INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%)
-ifeq (${VERSION}, debug)
+# SYMFLAG is used by {jsig,saproc}.make
+ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ # always build with debug info when we can create .debuginfo files
SYMFLAG = -g
else
- SYMFLAG =
+ ifeq (${VERSION}, debug)
+ SYMFLAG = -g
+ else
+ SYMFLAG =
+ endif
endif
# HOTSPOT_RELEASE_VERSION and HOTSPOT_BUILD_VERSION are defined
@@ -100,9 +106,11 @@ ifdef DEFAULT_LIBPATH
CXXFLAGS += -DDEFAULT_LIBPATH="\"$(DEFAULT_LIBPATH)\""
endif
-ifndef JAVASE_EMBEDDED
+ifndef JAVASE_EMBEDDED
+ifneq (${ARCH},arm)
CFLAGS += -DINCLUDE_TRACE
endif
+endif
# CFLAGS_WARN holds compiler options to suppress/enable warnings.
CFLAGS += $(CFLAGS_WARN/BYFILE)
@@ -145,6 +153,11 @@ else
LIBJVM_G = lib$(JVM)$(G_SUFFIX).so
endif
+LIBJVM_DEBUGINFO = lib$(JVM).debuginfo
+LIBJVM_DIZ = lib$(JVM).diz
+LIBJVM_G_DEBUGINFO = lib$(JVM)$(G_SUFFIX).debuginfo
+LIBJVM_G_DIZ = lib$(JVM)$(G_SUFFIX).diz
+
SPECIAL_PATHS:=adlc c1 gc_implementation opto shark libadt
SOURCE_PATHS=\
@@ -155,11 +168,13 @@ SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
-ifndef JAVASE_EMBEDDED
+ifndef JAVASE_EMBEDDED
+ifneq (${ARCH},arm)
SOURCE_PATHS+=$(shell if [ -d $(HS_ALT_SRC)/share/vm/jfr ]; then \
find $(HS_ALT_SRC)/share/vm/jfr -type d; \
fi)
endif
+endif
CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
CORE_PATHS+=$(GENERATED)/jvmtifiles
@@ -316,11 +331,38 @@ $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
rm -f $@.1; ln -s $@ $@.1; \
[ -f $(LIBJVM_G) ] || { ln -s $@ $(LIBJVM_G); ln -s $@.1 $(LIBJVM_G).1; }; \
}
+ifeq ($(CROSS_COMPILE_ARCH),)
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
+ $(QUIETLY) $(STRIP) -S $@
+ # implied else here is no stripping at all
+ endif
+ endif
+ $(QUIETLY) [ -f $(LIBJVM_G_DEBUGINFO) ] || ln -s $(LIBJVM_DEBUGINFO) $(LIBJVM_G_DEBUGINFO)
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO) $(LIBJVM_G_DEBUGINFO)
+ $(RM) $(LIBJVM_DEBUGINFO) $(LIBJVM_G_DEBUGINFO)
+ [ -f $(LIBJVM_G_DIZ) ] || { ln -s $(LIBJVM_DIZ) $(LIBJVM_G_DIZ); }
+ endif
+ endif
+endif
-DEST_JVM = $(JDK_LIBDIR)/$(VM_SUBDIR)/$(LIBJVM)
+DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR)
+DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM)
+DEST_JVM_DEBUGINFO = $(DEST_SUBDIR)/$(LIBJVM_DEBUGINFO)
+DEST_JVM_DIZ = $(DEST_SUBDIR)/$(LIBJVM_DIZ)
install_jvm: $(LIBJVM)
@echo "Copying $(LIBJVM) to $(DEST_JVM)"
+ $(QUIETLY) test -f $(LIBJVM_DEBUGINFO) && \
+ cp -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
+ $(QUIETLY) test -f $(LIBJVM_DIZ) && \
+ cp -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
$(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done"
#----------------------------------------------------------------------
diff --git a/hotspot/make/hotspot_version b/hotspot/make/hotspot_version
index bd1459a..6314c66 100755
--- a/hotspot/make/hotspot_version
+++ b/hotspot/make/hotspot_version
@@ -31,11 +31,11 @@
#
# Don't put quotes (fail windows build).
-HOTSPOT_VM_COPYRIGHT=Copyright 2012
+HOTSPOT_VM_COPYRIGHT=Copyright 2013
HS_MAJOR_VER=23
-HS_MINOR_VER=2
-HS_BUILD_NUMBER=09
+HS_MINOR_VER=21
+HS_BUILD_NUMBER=01
JDK_MAJOR_VER=1
JDK_MINOR_VER=7
diff --git a/hotspot/make/solaris/makefiles/defs.make b/hotspot/make/solaris/makefiles/defs.make
index 7c79113..8b19592 100755
--- a/hotspot/make/solaris/makefiles/defs.make
+++ b/hotspot/make/solaris/makefiles/defs.make
@@ -194,8 +194,8 @@ EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX)
endif
ifeq ($(ARCH_DATA_MODEL), 32)
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.$(LIBRARY_SUFFIX)
+ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
+ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.$(LIBRARY_SUFFIX)
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX)
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX)
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
diff --git a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp
index dca0441..5a87b83 100755
--- a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp
+++ b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp
@@ -71,7 +71,11 @@ define_pd_global(intx, PreInflateSpin, 40); // Determined by running desi
define_pd_global(bool, RewriteBytecodes, true);
define_pd_global(bool, RewriteFrequentPairs, true);
+#ifdef _ALLBSD_SOURCE
+define_pd_global(bool, UseMembar, true);
+#else
define_pd_global(bool, UseMembar, false);
+#endif
// GC Ergo Flags
define_pd_global(intx, CMSYoungGenPerWorker, 16*M); // default max size of CMS young gen, per GC worker thread
diff --git a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp
index 9adb9d9..7c0d86c 100755
--- a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp
@@ -698,6 +698,17 @@ void MethodHandles::insert_arg_slots(MacroAssembler* _masm,
if (arg_slots.is_constant() && arg_slots.as_constant() == 0)
return;
+ // We have to insert at least one word, so bang the stack.
+ if (UseStackBanging) {
+ // Save G3_method_handle since bang_stack_with_offset uses it as a temp register
+ __ mov(G3_method_handle, temp_reg);
+ int frame_size = (arg_slots.is_constant() ? -1 * arg_slots.as_constant() * wordSize : 0);
+ if (frame_size <= 0)
+ frame_size = 256 * Interpreter::stackElementSize; // conservative
+ __ generate_stack_overflow_check(frame_size);
+ __ mov(temp_reg, G3_method_handle);
+ }
+
assert_different_registers(argslot_reg, temp_reg, temp2_reg, temp3_reg,
(!arg_slots.is_register() ? Gargs : arg_slots.as_register()));
@@ -1702,6 +1713,14 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan
"copied argument(s) must fall within current frame");
}
+ if (UseStackBanging) {
+ // Save G3_method_handle since bang_stack_with_offset uses it as a temp register
+ __ mov(G3_method_handle, O3_scratch);
+ // Bang the stack before pushing args.
+ int frame_size = 256 * Interpreter::stackElementSize; // conservative
+ __ generate_stack_overflow_check(frame_size + sizeof(RicochetFrame));
+ __ mov(O3_scratch, G3_method_handle);
+ }
// insert location is always the bottom of the argument list:
__ neg(O1_stack_move);
push_arg_slots(_masm, O0_argslot, O1_stack_move, O2_scratch, O3_scratch);
@@ -2118,6 +2137,18 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan
// The return handler will further cut back the stack when it takes
// down the RF. Perhaps there is a way to streamline this further.
+ if (UseStackBanging) {
+ // Save G3_method_handle since bang_stack_with_offset uses it as a temp register
+ __ mov(G3_method_handle, O4_scratch);
+ // Bang the stack before recursive call.
+ // Even if slots == 0, we are inside a RicochetFrame.
+ int frame_size = collect_count.is_constant() ? collect_count.as_constant() * wordSize : -1;
+ if (frame_size < 0) {
+ frame_size = 256 * Interpreter::stackElementSize; // conservative
+ }
+ __ generate_stack_overflow_check(frame_size + sizeof(RicochetFrame));
+ __ mov(O4_scratch, G3_method_handle);
+ }
// State during recursive call:
// ... keep1 | dest | dest=42 | keep3 | RF... | collect | bounce_pc |
__ jump_to_method_handle_entry(G3_method_handle, O1_scratch);
diff --git a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp
index 60c4b01..29bffcf 100755
--- a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp
@@ -691,6 +691,14 @@ void MethodHandles::insert_arg_slots(MacroAssembler* _masm,
if (VerifyMethodHandles)
verify_stack_move(_masm, arg_slots, -1);
+ // We have to insert at least one word, so bang the stack.
+ if (UseStackBanging) {
+ int frame_size = (arg_slots.is_constant() ? -1 * arg_slots.as_constant() * wordSize : 0);
+ if (frame_size <= 0)
+ frame_size = 256 * Interpreter::stackElementSize; // conservative
+ __ generate_stack_overflow_check(frame_size);
+ }
+
// Make space on the stack for the inserted argument(s).
// Then pull down everything shallower than rax_argslot.
// The stacked return address gets pulled down with everything else.
@@ -1769,6 +1777,11 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan
"copied argument(s) must fall within current frame");
}
+ if (UseStackBanging) {
+ // Bang the stack before pushing args.
+ int frame_size = 256 * Interpreter::stackElementSize; // conservative
+ __ generate_stack_overflow_check(frame_size + sizeof(RicochetFrame));
+ }
// insert location is always the bottom of the argument list:
Address insert_location = __ argument_address(constant(0));
int pre_arg_words = insert_location.disp() / wordSize; // return PC is pushed
@@ -2206,6 +2219,15 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan
// The return handler will further cut back the stack when it takes
// down the RF. Perhaps there is a way to streamline this further.
+ if (UseStackBanging) {
+ // Bang the stack before recursive call.
+ // Even if slots == 0, we are inside a RicochetFrame.
+ int frame_size = collect_count.is_constant() ? collect_count.as_constant() * wordSize : -1;
+ if (frame_size < 0) {
+ frame_size = 256 * Interpreter::stackElementSize; // conservative
+ }
+ __ generate_stack_overflow_check(frame_size + sizeof(RicochetFrame));
+ }
// State during recursive call:
// ... keep1 | dest | dest=42 | keep3 | RF... | collect | bounce_pc |
__ jump_to_method_handle_entry(rcx_recv, rdx_temp);
@@ -2366,10 +2388,15 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan
// case in a 32-bit version of the VM) we have to save 'rsi'
// on the stack because later on (at 'L_array_is_empty') 'rsi'
// will be overwritten.
- { if (rsi_temp == saved_last_sp) __ push(saved_last_sp); }
+ if (rsi_temp == saved_last_sp) {
+ __ push(saved_last_sp);
+ // Need to re-push return PC to keep it on stack top.
+ __ lea(saved_last_sp, ExternalAddress(SharedRuntime::ricochet_blob()->bounce_addr()).addr());
+ __ push(saved_last_sp);
+ }
// Also prepare a handy macro which restores 'rsi' if required.
#define UNPUSH_RSI \
- { if (rsi_temp == saved_last_sp) __ pop(saved_last_sp); }
+ { if (rsi_temp == saved_last_sp) { __ pop(saved_last_sp); __ pop(saved_last_sp); } }
__ jmp(L_array_is_empty);
__ bind(L_skip);
@@ -2382,7 +2409,12 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan
// called in the case of a null pointer exception will not be
// confused by the extra value on the stack (it expects the
// return pointer on top of the stack)
- { if (rsi_temp == saved_last_sp) __ push(saved_last_sp); }
+ if (rsi_temp == saved_last_sp) {
+ __ push(saved_last_sp);
+ // Need to re-push return PC to keep it on stack top.
+ __ lea(saved_last_sp, ExternalAddress(SharedRuntime::ricochet_blob()->bounce_addr()).addr());
+ __ push(saved_last_sp);
+ }
// Check the array type.
Register rbx_klass = rbx_temp;
diff --git a/hotspot/src/os/bsd/vm/decoder_bsd.cpp b/hotspot/src/os/bsd/vm/decoder_bsd.cpp
new file mode 100644
index 0000000..e462396
--- /dev/null
+++ b/hotspot/src/os/bsd/vm/decoder_bsd.cpp
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. 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.
+ *
+ * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "prims/jvm.h"
+#include "utilities/decoder_elf.hpp"
+
+#include
+
+bool ElfDecoder::demangle(const char* symbol, char *buf, int buflen) {
+ int status;
+ char* result;
+ size_t size = (size_t)buflen;
+
+ // Don't pass buf to __cxa_demangle. In case of the 'buf' is too small,
+ // __cxa_demangle will call system "realloc" for additional memory, which
+ // may use different malloc/realloc mechanism that allocates 'buf'.
+ if ((result = abi::__cxa_demangle(symbol, NULL, NULL, &status)) != NULL) {
+ jio_snprintf(buf, buflen, "%s", result);
+ // call c library's free
+ ::free(result);
+ return true;
+ }
+ return false;
+}
+
diff --git a/hotspot/src/os/bsd/vm/os_bsd.cpp b/hotspot/src/os/bsd/vm/os_bsd.cpp
index f9b21ac..b0f6e4a 100755
--- a/hotspot/src/os/bsd/vm/os_bsd.cpp
+++ b/hotspot/src/os/bsd/vm/os_bsd.cpp
@@ -2341,14 +2341,14 @@ void os::print_dll_info(outputStream *st) {
}
void os::print_os_info_brief(outputStream* st) {
- st->print("Bsd");
+ st->print("BSD");
os::Posix::print_uname_info(st);
}
void os::print_os_info(outputStream* st) {
st->print("OS:");
- st->print("Bsd");
+ st->print("BSD");
os::Posix::print_uname_info(st);
@@ -2357,10 +2357,6 @@ void os::print_os_info(outputStream* st) {
os::Posix::print_load_average(st);
}
-void os::pd_print_cpu_info(outputStream* st) {
- // Nothing to do for now.
-}
-
void os::print_memory_info(outputStream* st) {
st->print("Memory:");
@@ -2377,6 +2373,7 @@ void os::print_memory_info(outputStream* st) {
st->print("(" UINT64_FORMAT "k free)",
os::available_memory() >> 10);
#ifndef _ALLBSD_SOURCE
+ // FIXME: Make this work for *BSD
st->print(", swap " UINT64_FORMAT "k",
((jlong)si.totalswap * si.mem_unit) >> 10);
st->print("(" UINT64_FORMAT "k free)",
@@ -2384,12 +2381,22 @@ void os::print_memory_info(outputStream* st) {
#endif
st->cr();
+ // FIXME: Make this work for *BSD
// meminfo
st->print("\n/proc/meminfo:\n");
_print_ascii_file("/proc/meminfo", st);
st->cr();
}
+void os::pd_print_cpu_info(outputStream* st) {
+ // FIXME: Make this work for *BSD
+ st->print("\n/proc/cpuinfo:\n");
+ if (!_print_ascii_file("/proc/cpuinfo", st)) {
+ st->print(" ");
+ }
+ st->cr();
+}
+
// Taken from /usr/include/bits/siginfo.h Supposed to be architecture specific
// but they're the same for all the bsd arch that we support
// and they're the same for solaris but there's no common place to put this.
@@ -2532,6 +2539,25 @@ void os::jvm_path(char *buf, jint buflen) {
len = strlen(buf);
jrelib_p = buf + len;
+#ifndef __APPLE__
+ snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch);
+ if (0 != access(buf, F_OK)) {
+ snprintf(jrelib_p, buflen-len, "/lib/%s", cpu_arch);
+ }
+
+ if (0 == access(buf, F_OK)) {
+ // Use current module name "libjvm[_g].so" instead of
+ // "libjvm"debug_only("_g")".so" since for fastdebug version
+ // we should have "libjvm.so" but debug_only("_g") adds "_g"!
+ len = strlen(buf);
+ snprintf(buf + len, buflen-len, "/hotspot/libjvm%s.so", p);
+ } else {
+ // Go back to path of .so
+ rp = realpath(dli_fname, buf);
+ if (rp == NULL)
+ return;
+ }
+#else
// Add the appropriate library subdir
snprintf(jrelib_p, buflen-len, "/jre/lib");
if (0 != access(buf, F_OK)) {
@@ -2561,6 +2587,7 @@ void os::jvm_path(char *buf, jint buflen) {
if (rp == NULL)
return;
}
+#endif
}
}
}
@@ -2817,7 +2844,11 @@ void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) {
}
void os::free_memory(char *addr, size_t bytes, size_t alignment_hint) {
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
+ commit_memory(addr, bytes, alignment_hint, false);
+#else
::madvise(addr, bytes, MADV_DONTNEED);
+#endif
}
void os::numa_make_global(char *addr, size_t bytes) {
diff --git a/hotspot/src/os/bsd/vm/os_bsd.hpp b/hotspot/src/os/bsd/vm/os_bsd.hpp
index 271d1e2..38ec0ea 100755
--- a/hotspot/src/os/bsd/vm/os_bsd.hpp
+++ b/hotspot/src/os/bsd/vm/os_bsd.hpp
@@ -103,6 +103,12 @@ class Bsd {
static bool hugetlbfs_sanity_check(bool warn, size_t page_size);
+ static void print_full_memory_info(outputStream* st);
+#ifndef _ALLBSD_SOURCE
+ static void print_distro_info(outputStream* st);
+ static void print_libversion_info(outputStream* st);
+#endif
+
public:
static void init_thread_fpu_state();
diff --git a/hotspot/src/os/bsd/vm/os_bsd.inline.hpp b/hotspot/src/os/bsd/vm/os_bsd.inline.hpp
index c582a45..e4627cf 100755
--- a/hotspot/src/os/bsd/vm/os_bsd.inline.hpp
+++ b/hotspot/src/os/bsd/vm/os_bsd.inline.hpp
@@ -31,10 +31,22 @@
# include "atomic_bsd_x86.inline.hpp"
# include "orderAccess_bsd_x86.inline.hpp"
#endif
+#ifdef TARGET_OS_ARCH_bsd_sparc
+# include "atomic_bsd_sparc.inline.hpp"
+# include "orderAccess_bsd_sparc.inline.hpp"
+#endif
#ifdef TARGET_OS_ARCH_bsd_zero
# include "atomic_bsd_zero.inline.hpp"
# include "orderAccess_bsd_zero.inline.hpp"
#endif
+#ifdef TARGET_OS_ARCH_bsd_arm
+# include "atomic_bsd_arm.inline.hpp"
+# include "orderAccess_bsd_arm.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_bsd_ppc
+# include "atomic_bsd_ppc.inline.hpp"
+# include "orderAccess_bsd_ppc.inline.hpp"
+#endif
// System includes
diff --git a/hotspot/src/os/bsd/vm/thread_bsd.inline.hpp b/hotspot/src/os/bsd/vm/thread_bsd.inline.hpp
index 290f477..5204070 100755
--- a/hotspot/src/os/bsd/vm/thread_bsd.inline.hpp
+++ b/hotspot/src/os/bsd/vm/thread_bsd.inline.hpp
@@ -34,11 +34,26 @@
# include "orderAccess_bsd_x86.inline.hpp"
# include "prefetch_bsd_x86.inline.hpp"
#endif
+#ifdef TARGET_OS_ARCH_bsd_sparc
+# include "atomic_bsd_sparc.inline.hpp"
+# include "orderAccess_bsd_sparc.inline.hpp"
+# include "prefetch_bsd_sparc.inline.hpp"
+#endif
#ifdef TARGET_OS_ARCH_bsd_zero
# include "atomic_bsd_zero.inline.hpp"
# include "orderAccess_bsd_zero.inline.hpp"
# include "prefetch_bsd_zero.inline.hpp"
#endif
+#ifdef TARGET_OS_ARCH_bsd_arm
+# include "atomic_bsd_arm.inline.hpp"
+# include "orderAccess_bsd_arm.inline.hpp"
+# include "prefetch_bsd_arm.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_bsd_ppc
+# include "atomic_bsd_ppc.inline.hpp"
+# include "orderAccess_bsd_ppc.inline.hpp"
+# include "prefetch_bsd_ppc.inline.hpp"
+#endif
// Contains inlined functions for class Thread and ThreadLocalStorage
diff --git a/hotspot/src/os/posix/vm/os_posix.cpp b/hotspot/src/os/posix/vm/os_posix.cpp
index 9f05a74..b02f628 100755
--- a/hotspot/src/os/posix/vm/os_posix.cpp
+++ b/hotspot/src/os/posix/vm/os_posix.cpp
@@ -75,6 +75,47 @@ void os::wait_for_keypress_at_exit(void) {
return;
}
+// Multiple threads can race in this code, and can remap over each other with MAP_FIXED,
+// so on posix, unmap the section at the start and at the end of the chunk that we mapped
+// rather than unmapping and remapping the whole chunk to get requested alignment.
+char* os::reserve_memory_aligned(size_t size, size_t alignment) {
+ assert((alignment & (os::vm_allocation_granularity() - 1)) == 0,
+ "Alignment must be a multiple of allocation granularity (page size)");
+ assert((size & (alignment -1)) == 0, "size must be 'alignment' aligned");
+
+ size_t extra_size = size + alignment;
+ assert(extra_size >= size, "overflow, size is too large to allow alignment");
+
+ char* extra_base = os::reserve_memory(extra_size, NULL, alignment);
+
+ if (extra_base == NULL) {
+ return NULL;
+ }
+
+ // Do manual alignment
+ char* aligned_base = (char*) align_size_up((uintptr_t) extra_base, alignment);
+
+ // [ | | ]
+ // ^ extra_base
+ // ^ extra_base + begin_offset == aligned_base
+ // extra_base + begin_offset + size ^
+ // extra_base + extra_size ^
+ // |<>| == begin_offset
+ // end_offset == |<>|
+ size_t begin_offset = aligned_base - extra_base;
+ size_t end_offset = (extra_base + extra_size) - (aligned_base + size);
+
+ if (begin_offset > 0) {
+ os::release_memory(extra_base, begin_offset);
+ }
+
+ if (end_offset > 0) {
+ os::release_memory(extra_base + begin_offset + size, end_offset);
+ }
+
+ return aligned_base;
+}
+
void os::Posix::print_load_average(outputStream* st) {
st->print("load average:");
double loadavg[3];
@@ -110,11 +151,19 @@ void os::Posix::print_rlimit_info(outputStream* st) {
if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
else st->print("%d", rlim.rlim_cur);
+#ifdef __OpenBSD__
+ st->print(", DATA ");
+ getrlimit(RLIMIT_DATA, &rlim);
+ if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
+ else st->print("%uk", rlim.rlim_cur >> 10);
+ st->cr();
+#else
st->print(", AS ");
getrlimit(RLIMIT_AS, &rlim);
if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
else st->print("%uk", rlim.rlim_cur >> 10);
st->cr();
+#endif
}
void os::Posix::print_uname_info(outputStream* st) {
diff --git a/hotspot/src/os/windows/vm/os_windows.cpp b/hotspot/src/os/windows/vm/os_windows.cpp
index e2ecf53..69e4718 100755
--- a/hotspot/src/os/windows/vm/os_windows.cpp
+++ b/hotspot/src/os/windows/vm/os_windows.cpp
@@ -2941,6 +2941,36 @@ void os::split_reserved_memory(char *base, size_t size, size_t split,
}
}
+// Multiple threads can race in this code but it's not possible to unmap small sections of
+// virtual space to get requested alignment, like posix-like os's.
+// Windows prevents multiple thread from remapping over each other so this loop is thread-safe.
+char* os::reserve_memory_aligned(size_t size, size_t alignment) {
+ assert((alignment & (os::vm_allocation_granularity() - 1)) == 0,
+ "Alignment must be a multiple of allocation granularity (page size)");
+ assert((size & (alignment -1)) == 0, "size must be 'alignment' aligned");
+
+ size_t extra_size = size + alignment;
+ assert(extra_size >= size, "overflow, size is too large to allow alignment");
+
+ char* aligned_base = NULL;
+
+ do {
+ char* extra_base = os::reserve_memory(extra_size, NULL, alignment);
+ if (extra_base == NULL) {
+ return NULL;
+ }
+ // Do manual alignment
+ aligned_base = (char*) align_size_up((uintptr_t) extra_base, alignment);
+
+ os::release_memory(extra_base, extra_size);
+
+ aligned_base = os::reserve_memory(size, aligned_base);
+
+ } while (aligned_base == NULL);
+
+ return aligned_base;
+}
+
char* os::reserve_memory(size_t bytes, char* addr, size_t alignment_hint) {
assert((size_t)addr % os::vm_allocation_granularity() == 0,
"reserve alignment");
diff --git a/hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp b/hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
index 4ccf807..04fb842 100755
--- a/hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
+++ b/hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
@@ -52,7 +52,7 @@
/* Posix Thread IDs */ \
/**********************/ \
\
- declare_unsigned_integer_type(thread_t) \
+ declare_unsigned_integer_type(OS_THREAD_ID_TYPE) \
declare_unsigned_integer_type(pthread_t) \
\
/* This must be the last entry, and must be present */ \
diff --git a/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp b/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
index ff5b32d..aec8e36 100755
--- a/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+++ b/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
@@ -24,7 +24,7 @@
*/
#if defined(_ALLBSD_SOURCE) && !defined(__APPLE__) && !defined(__NetBSD__)
-#include
+# include
# include /* For pthread_attr_get_np */
#endif
diff --git a/hotspot/src/share/vm/compiler/compilerOracle.cpp b/hotspot/src/share/vm/compiler/compilerOracle.cpp
index 7869342..54e7a3e 100755
--- a/hotspot/src/share/vm/compiler/compilerOracle.cpp
+++ b/hotspot/src/share/vm/compiler/compilerOracle.cpp
@@ -575,7 +575,7 @@ void CompilerOracle::parse_from_file() {
char token[1024];
int pos = 0;
int c = getc(stream);
- while(c != EOF) {
+ while(c != EOF && pos < (int)(sizeof(token)-1)) {
if (c == '\n') {
token[pos++] = '\0';
parse_from_line(token);
@@ -596,7 +596,7 @@ void CompilerOracle::parse_from_string(const char* str, void (*parse_line)(char*
int pos = 0;
const char* sp = str;
int c = *sp++;
- while (c != '\0') {
+ while (c != '\0' && pos < (int)(sizeof(token)-1)) {
if (c == '\n') {
token[pos++] = '\0';
parse_line(token);
diff --git a/hotspot/src/share/vm/interpreter/linkResolver.cpp b/hotspot/src/share/vm/interpreter/linkResolver.cpp
index b7defd7..c2e3723 100755
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp
@@ -712,7 +712,7 @@ void LinkResolver::runtime_resolve_special_method(CallInfo& result, methodHandle
if (check_access &&
// a) check if ACC_SUPER flag is set for the current class
- current_klass->is_super() &&
+ (current_klass->is_super() || !AllowNonVirtualCalls) &&
// b) check if the method class is a superclass of the current class (superclass relation is not reflexive!)
current_klass->is_subtype_of(method_klass()) && current_klass() != method_klass() &&
// c) check if the method is not
diff --git a/hotspot/src/share/vm/oops/cpCacheOop.cpp b/hotspot/src/share/vm/oops/cpCacheOop.cpp
index 678bc13..94268f0 100755
--- a/hotspot/src/share/vm/oops/cpCacheOop.cpp
+++ b/hotspot/src/share/vm/oops/cpCacheOop.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
@@ -470,6 +470,24 @@ bool ConstantPoolCacheEntry::adjust_method_entry(methodOop old_method,
return false;
}
+// a constant pool cache entry should never contain old or obsolete methods
+bool ConstantPoolCacheEntry::check_no_old_or_obsolete_entries() {
+ if (is_vfinal()) {
+ // virtual and final so _f2 contains method ptr instead of vtable index
+ methodOop m = (methodOop)_f2;
+ // Return false if _f2 refers to an old or an obsolete method.
+ // _f2 == NULL || !m->is_method() are just as unexpected here.
+ return (m != NULL && m->is_method() && !m->is_old() && !m->is_obsolete());
+ } else if ((oop)_f1 == NULL || !((oop)_f1)->is_method()) {
+ // _f1 == NULL || !_f1->is_method() are OK here
+ return true;
+ }
+
+ methodOop m = (methodOop)_f1;
+ // return false if _f1 refers to an old or an obsolete method
+ return (!m->is_old() && !m->is_obsolete());
+}
+
bool ConstantPoolCacheEntry::is_interesting_method_entry(klassOop k) {
if (!is_method_entry()) {
// not a method entry so not interesting by default
@@ -492,7 +510,7 @@ bool ConstantPoolCacheEntry::is_interesting_method_entry(klassOop k) {
}
assert(m != NULL && m->is_method(), "sanity check");
- if (m == NULL || !m->is_method() || m->method_holder() != k) {
+ if (m == NULL || !m->is_method() || (k != NULL && m->method_holder() != k)) {
// robustness for above sanity checks or method is not in
// the interesting class
return false;
@@ -577,3 +595,22 @@ void constantPoolCacheOopDesc::adjust_method_entries(methodOop* old_methods, met
}
}
}
+
+// the constant pool cache should never contain old or obsolete methods
+bool constantPoolCacheOopDesc::check_no_old_or_obsolete_entries() {
+ for (int i = 1; i < length(); i++) {
+ if (entry_at(i)->is_interesting_method_entry(NULL) &&
+ !entry_at(i)->check_no_old_or_obsolete_entries()) {
+ return false;
+ }
+ }
+ return true;
+}
+
+void constantPoolCacheOopDesc::dump_cache() {
+ for (int i = 1; i < length(); i++) {
+ if (entry_at(i)->is_interesting_method_entry(NULL)) {
+ entry_at(i)->print(tty, i);
+ }
+ }
+}
diff --git a/hotspot/src/share/vm/oops/cpCacheOop.hpp b/hotspot/src/share/vm/oops/cpCacheOop.hpp
index c3d1847..1ea0ef1 100755
--- a/hotspot/src/share/vm/oops/cpCacheOop.hpp
+++ b/hotspot/src/share/vm/oops/cpCacheOop.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
@@ -298,6 +298,7 @@ class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC {
// group don't print the klass name.
bool adjust_method_entry(methodOop old_method, methodOop new_method,
bool * trace_name_printed);
+ bool check_no_old_or_obsolete_entries();
bool is_interesting_method_entry(klassOop k);
bool is_field_entry() const { return (_flags & (1 << hotSwapBit)) == 0; }
bool is_method_entry() const { return (_flags & (1 << hotSwapBit)) != 0; }
@@ -405,6 +406,8 @@ class constantPoolCacheOopDesc: public oopDesc {
// group don't print the klass name.
void adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
int methods_length, bool * trace_name_printed);
+ bool check_no_old_or_obsolete_entries();
+ void dump_cache();
};
#endif // SHARE_VM_OOPS_CPCACHEOOP_HPP
diff --git a/hotspot/src/share/vm/oops/klassVtable.cpp b/hotspot/src/share/vm/oops/klassVtable.cpp
index 8b8bc7d..94e2e04 100755
--- a/hotspot/src/share/vm/oops/klassVtable.cpp
+++ b/hotspot/src/share/vm/oops/klassVtable.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -640,11 +640,37 @@ void klassVtable::adjust_method_entries(methodOop* old_methods, methodOop* new_m
new_method->name()->as_C_string(),
new_method->signature()->as_C_string()));
}
+ // cannot 'break' here; see for-loop comment above.
}
}
}
}
+// a vtable should never contain old or obsolete methods
+bool klassVtable::check_no_old_or_obsolete_entries() {
+ for (int i = 0; i < length(); i++) {
+ methodOop m = unchecked_method_at(i);
+ if (m != NULL && (m->is_old() || m->is_obsolete())) {
+ return false;
+ }
+ }
+ return true;
+}
+
+void klassVtable::dump_vtable() {
+ tty->print_cr("vtable dump --");
+ for (int i = 0; i < length(); i++) {
+ methodOop m = unchecked_method_at(i);
+ if (m != NULL) {
+ tty->print(" (%5d) ", i);
+ m->access_flags().print_on(tty);
+ tty->print(" -- ");
+ m->print_name(tty);
+ tty->cr();
+ }
+ }
+}
+
// CDS/RedefineClasses support - clear vtables so they can be reinitialized
void klassVtable::clear_vtable() {
for (int i = 0; i < _length; i++) table()[i].clear();
@@ -994,13 +1020,42 @@ void klassItable::adjust_method_entries(methodOop* old_methods, methodOop* new_m
new_method->name()->as_C_string(),
new_method->signature()->as_C_string()));
}
- break;
+ // cannot 'break' here; see for-loop comment above.
}
ime++;
}
}
}
+// an itable should never contain old or obsolete methods
+bool klassItable::check_no_old_or_obsolete_entries() {
+ itableMethodEntry* ime = method_entry(0);
+ for (int i = 0; i < _size_method_table; i++) {
+ methodOop m = ime->method();
+ if (m != NULL && (m->is_old() || m->is_obsolete())) {
+ return false;
+ }
+ ime++;
+ }
+ return true;
+}
+
+void klassItable::dump_itable() {
+ itableMethodEntry* ime = method_entry(0);
+ tty->print_cr("itable dump --");
+ for (int i = 0; i < _size_method_table; i++) {
+ methodOop m = ime->method();
+ if (m != NULL) {
+ tty->print(" (%5d) ", i);
+ m->access_flags().print_on(tty);
+ tty->print(" -- ");
+ m->print_name(tty);
+ tty->cr();
+ }
+ ime++;
+ }
+}
+
// Setup
class InterfaceVisiterClosure : public StackObj {
@@ -1287,33 +1342,6 @@ void klassVtable::print_statistics() {
tty->print_cr("%6d bytes total", total);
}
-bool klassVtable::check_no_old_entries() {
- // Check that there really is no entry
- for (int i = 0; i < length(); i++) {
- methodOop m = unchecked_method_at(i);
- if (m != NULL) {
- if (m->is_old()) {
- return false;
- }
- }
- }
- return true;
-}
-
-void klassVtable::dump_vtable() {
- tty->print_cr("vtable dump --");
- for (int i = 0; i < length(); i++) {
- methodOop m = unchecked_method_at(i);
- if (m != NULL) {
- tty->print(" (%5d) ", i);
- m->access_flags().print_on(tty);
- tty->print(" -- ");
- m->print_name(tty);
- tty->cr();
- }
- }
-}
-
int klassItable::_total_classes; // Total no. of classes with itables
long klassItable::_total_size; // Total no. of bytes used for itables
diff --git a/hotspot/src/share/vm/oops/klassVtable.hpp b/hotspot/src/share/vm/oops/klassVtable.hpp
index 8f979be..405b0c7 100755
--- a/hotspot/src/share/vm/oops/klassVtable.hpp
+++ b/hotspot/src/share/vm/oops/klassVtable.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -98,6 +98,8 @@ class klassVtable : public ResourceObj {
// group don't print the klass name.
void adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
int methods_length, bool * trace_name_printed);
+ bool check_no_old_or_obsolete_entries();
+ void dump_vtable();
// Garbage collection
void oop_follow_contents();
@@ -118,11 +120,6 @@ class klassVtable : public ResourceObj {
void verify(outputStream* st, bool force = false);
static void print_statistics() PRODUCT_RETURN;
-#ifndef PRODUCT
- bool check_no_old_entries();
- void dump_vtable();
-#endif
-
protected:
friend class vtableEntry;
private:
@@ -292,6 +289,8 @@ class klassItable : public ResourceObj {
// group don't print the klass name.
void adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
int methods_length, bool * trace_name_printed);
+ bool check_no_old_or_obsolete_entries();
+ void dump_itable();
// Garbage collection
void oop_follow_contents();
diff --git a/hotspot/src/share/vm/oops/methodOop.cpp b/hotspot/src/share/vm/oops/methodOop.cpp
index 0a7850f..93bc8b6 100755
--- a/hotspot/src/share/vm/oops/methodOop.cpp
+++ b/hotspot/src/share/vm/oops/methodOop.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -1346,10 +1346,6 @@ void methodOopDesc::sort_methods(objArrayOop methods,
}
-//-----------------------------------------------------------------------------------
-// Non-product code
-
-#ifndef PRODUCT
class SignatureTypePrinter : public SignatureTypeNames {
private:
outputStream* _st;
@@ -1386,6 +1382,10 @@ void methodOopDesc::print_name(outputStream* st) {
}
+//-----------------------------------------------------------------------------------
+// Non-product code
+
+#ifndef PRODUCT
void methodOopDesc::print_codes_on(outputStream* st) const {
print_codes_on(0, code_size(), st);
}
diff --git a/hotspot/src/share/vm/oops/methodOop.hpp b/hotspot/src/share/vm/oops/methodOop.hpp
index 03f62f6..c89bba2 100755
--- a/hotspot/src/share/vm/oops/methodOop.hpp
+++ b/hotspot/src/share/vm/oops/methodOop.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -703,8 +703,8 @@ class methodOopDesc : public oopDesc {
static bool has_unloaded_classes_in_signature(methodHandle m, TRAPS);
// Printing
- void print_short_name(outputStream* st) /*PRODUCT_RETURN*/; // prints as klassname::methodname; Exposed so field engineers can debug VM
- void print_name(outputStream* st) PRODUCT_RETURN; // prints as "virtual void foo(int)"
+ void print_short_name(outputStream* st); // prints as klassname::methodname; Exposed so field engineers can debug VM
+ void print_name(outputStream* st); // prints as "virtual void foo(int)"; exposed for TraceRedefineClasses
// Helper routine used for method sorting
static void sort_methods(objArrayOop methods,
diff --git a/hotspot/src/share/vm/opto/library_call.cpp b/hotspot/src/share/vm/opto/library_call.cpp
index 29af531..6943a6c 100755
--- a/hotspot/src/share/vm/opto/library_call.cpp
+++ b/hotspot/src/share/vm/opto/library_call.cpp
@@ -3931,7 +3931,8 @@ bool LibraryCallKit::is_method_invoke_or_aux_frame(JVMState* jvms) {
}
}
}
- else if (method->is_method_handle_adapter()) {
+
+ if (method->is_method_handle_adapter()) {
// This is an internal adapter frame from the MethodHandleCompiler -- skip it
return true;
}
@@ -5476,4 +5477,3 @@ bool LibraryCallKit::inline_reference_get() {
push(result);
return true;
}
-
diff --git a/hotspot/src/share/vm/opto/loopTransform.cpp b/hotspot/src/share/vm/opto/loopTransform.cpp
index eee153a..d0b790a 100755
--- a/hotspot/src/share/vm/opto/loopTransform.cpp
+++ b/hotspot/src/share/vm/opto/loopTransform.cpp
@@ -2733,6 +2733,8 @@ bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
result_mem = new (C, 1) ProjNode(call,TypeFunc::Memory);
_igvn.register_new_node_with_optimizer(result_mem);
+/* Disable following optimization until proper fix (add missing checks).
+
// If this fill is tightly coupled to an allocation and overwrites
// the whole body, allow it to take over the zeroing.
AllocateNode* alloc = AllocateNode::Ideal_allocation(base, this);
@@ -2756,6 +2758,7 @@ bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
#endif
}
}
+*/
// Redirect the old control and memory edges that are outside the loop.
Node* exit = head->loopexit()->proj_out(0);
diff --git a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp
index 295ed86..b7ddbdb 100755
--- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. 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
@@ -129,8 +129,15 @@ void VM_RedefineClasses::doit() {
// See jvmtiExport.hpp for detailed explanation.
JvmtiExport::set_has_redefined_a_class();
-#ifdef ASSERT
- SystemDictionary::classes_do(check_class, thread);
+// check_class() is optionally called for product bits, but is
+// always called for non-product bits.
+#ifdef PRODUCT
+ if (RC_TRACE_ENABLED(0x00004000)) {
+#endif
+ RC_TRACE_WITH_THREAD(0x00004000, thread, ("calling check_class"));
+ SystemDictionary::classes_do(check_class, thread);
+#ifdef PRODUCT
+ }
#endif
}
@@ -3366,76 +3373,116 @@ void VM_RedefineClasses::increment_class_counter(instanceKlass *ik, TRAPS) {
}
}
-#ifndef PRODUCT
void VM_RedefineClasses::check_class(klassOop k_oop,
oop initiating_loader, TRAPS) {
Klass *k = k_oop->klass_part();
if (k->oop_is_instance()) {
HandleMark hm(THREAD);
instanceKlass *ik = (instanceKlass *) k;
+ bool no_old_methods = true; // be optimistic
+ ResourceMark rm(THREAD);
- if (ik->vtable_length() > 0) {
- ResourceMark rm(THREAD);
- if (!ik->vtable()->check_no_old_entries()) {
- tty->print_cr("klassVtable::check_no_old_entries failure -- OLD method found -- class: %s", ik->signature_name());
+ // a vtable should never contain old or obsolete methods
+ if (ik->vtable_length() > 0 &&
+ !ik->vtable()->check_no_old_or_obsolete_entries()) {
+ if (RC_TRACE_ENABLED(0x00004000)) {
+ RC_TRACE_WITH_THREAD(0x00004000, THREAD,
+ ("klassVtable::check_no_old_or_obsolete_entries failure"
+ " -- OLD or OBSOLETE method found -- class: %s",
+ ik->signature_name()));
ik->vtable()->dump_vtable();
+ }
+ no_old_methods = false;
+ }
+
+ // an itable should never contain old or obsolete methods
+ if (ik->itable_length() > 0 &&
+ !ik->itable()->check_no_old_or_obsolete_entries()) {
+ if (RC_TRACE_ENABLED(0x00004000)) {
+ RC_TRACE_WITH_THREAD(0x00004000, THREAD,
+ ("klassItable::check_no_old_or_obsolete_entries failure"
+ " -- OLD or OBSOLETE method found -- class: %s",
+ ik->signature_name()));
+ ik->itable()->dump_itable();
+ }
+ no_old_methods = false;
+ }
+
+ // the constant pool cache should never contain old or obsolete methods
+ if (ik->constants() != NULL &&
+ ik->constants()->cache() != NULL &&
+ !ik->constants()->cache()->check_no_old_or_obsolete_entries()) {
+ if (RC_TRACE_ENABLED(0x00004000)) {
+ RC_TRACE_WITH_THREAD(0x00004000, THREAD,
+ ("cp-cache::check_no_old_or_obsolete_entries failure"
+ " -- OLD or OBSOLETE method found -- class: %s",
+ ik->signature_name()));
+ ik->constants()->cache()->dump_cache();
+ }
+ no_old_methods = false;
+ }
+
+ if (!no_old_methods) {
+ if (RC_TRACE_ENABLED(0x00004000)) {
dump_methods();
- assert(false, "OLD method found");
+ } else {
+ tty->print_cr("INFO: use the '-XX:TraceRedefineClasses=16384' option "
+ "to see more info about the following guarantee() failure.");
}
+ guarantee(false, "OLD and/or OBSOLETE method(s) found");
}
}
}
void VM_RedefineClasses::dump_methods() {
- int j;
- tty->print_cr("_old_methods --");
- for (j = 0; j < _old_methods->length(); ++j) {
- methodOop m = (methodOop) _old_methods->obj_at(j);
- tty->print("%4d (%5d) ", j, m->vtable_index());
- m->access_flags().print_on(tty);
- tty->print(" -- ");
- m->print_name(tty);
- tty->cr();
- }
- tty->print_cr("_new_methods --");
- for (j = 0; j < _new_methods->length(); ++j) {
- methodOop m = (methodOop) _new_methods->obj_at(j);
- tty->print("%4d (%5d) ", j, m->vtable_index());
- m->access_flags().print_on(tty);
- tty->print(" -- ");
- m->print_name(tty);
- tty->cr();
- }
- tty->print_cr("_matching_(old/new)_methods --");
- for (j = 0; j < _matching_methods_length; ++j) {
- methodOop m = _matching_old_methods[j];
- tty->print("%4d (%5d) ", j, m->vtable_index());
- m->access_flags().print_on(tty);
- tty->print(" -- ");
- m->print_name(tty);
- tty->cr();
- m = _matching_new_methods[j];
- tty->print(" (%5d) ", m->vtable_index());
- m->access_flags().print_on(tty);
- tty->cr();
- }
- tty->print_cr("_deleted_methods --");
- for (j = 0; j < _deleted_methods_length; ++j) {
- methodOop m = _deleted_methods[j];
- tty->print("%4d (%5d) ", j, m->vtable_index());
- m->access_flags().print_on(tty);
- tty->print(" -- ");
- m->print_name(tty);
- tty->cr();
- }
- tty->print_cr("_added_methods --");
- for (j = 0; j < _added_methods_length; ++j) {
- methodOop m = _added_methods[j];
- tty->print("%4d (%5d) ", j, m->vtable_index());
- m->access_flags().print_on(tty);
- tty->print(" -- ");
- m->print_name(tty);
- tty->cr();
- }
+ int j;
+ RC_TRACE(0x00004000, ("_old_methods --"));
+ for (j = 0; j < _old_methods->length(); ++j) {
+ methodOop m = (methodOop) _old_methods->obj_at(j);
+ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index()));
+ m->access_flags().print_on(tty);
+ tty->print(" -- ");
+ m->print_name(tty);
+ tty->cr();
+ }
+ RC_TRACE(0x00004000, ("_new_methods --"));
+ for (j = 0; j < _new_methods->length(); ++j) {
+ methodOop m = (methodOop) _new_methods->obj_at(j);
+ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index()));
+ m->access_flags().print_on(tty);
+ tty->print(" -- ");
+ m->print_name(tty);
+ tty->cr();
+ }
+ RC_TRACE(0x00004000, ("_matching_(old/new)_methods --"));
+ for (j = 0; j < _matching_methods_length; ++j) {
+ methodOop m = _matching_old_methods[j];
+ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index()));
+ m->access_flags().print_on(tty);
+ tty->print(" -- ");
+ m->print_name(tty);
+ tty->cr();
+ m = _matching_new_methods[j];
+ RC_TRACE_NO_CR(0x00004000, (" (%5d) ", m->vtable_index()));
+ m->access_flags().print_on(tty);
+ tty->cr();
+ }
+ RC_TRACE(0x00004000, ("_deleted_methods --"));
+ for (j = 0; j < _deleted_methods_length; ++j) {
+ methodOop m = _deleted_methods[j];
+ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index()));
+ m->access_flags().print_on(tty);
+ tty->print(" -- ");
+ m->print_name(tty);
+ tty->cr();
+ }
+ RC_TRACE(0x00004000, ("_added_methods --"));
+ for (j = 0; j < _added_methods_length; ++j) {
+ methodOop m = _added_methods[j];
+ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index()));
+ m->access_flags().print_on(tty);
+ tty->print(" -- ");
+ m->print_name(tty);
+ tty->cr();
+ }
}
-#endif
diff --git a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp
index c5f4bdd..671f2ae 100755
--- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. 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
@@ -478,9 +478,8 @@ class VM_RedefineClasses: public VM_Operation {
void flush_dependent_code(instanceKlassHandle k_h, TRAPS);
- static void check_class(klassOop k_oop, oop initiating_loader, TRAPS) PRODUCT_RETURN;
-
- static void dump_methods() PRODUCT_RETURN;
+ static void check_class(klassOop k_oop, oop initiating_loader, TRAPS);
+ static void dump_methods();
public:
VM_RedefineClasses(jint class_count,
diff --git a/hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp b/hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp
index e79534f..878d300 100755
--- a/hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. 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
@@ -54,7 +54,7 @@
// 0x00000800 | 2048 - previous class breakpoint mgmt
// 0x00001000 | 4096 - detect calls to obsolete methods
// 0x00002000 | 8192 - fail a guarantee() in addition to detection
-// 0x00004000 | 16384 - unused
+// 0x00004000 | 16384 - detect old/obsolete methods in metadata
// 0x00008000 | 32768 - old/new method matching/add/delete
// 0x00010000 | 65536 - impl details: CP size info
// 0x00020000 | 131072 - impl details: CP merge pass info
@@ -82,6 +82,13 @@
tty->print_cr args; \
} while (0)
+#define RC_TRACE_NO_CR(level, args) \
+ if ((TraceRedefineClasses & level) != 0) { \
+ ResourceMark rm; \
+ tty->print("RedefineClasses-0x%x: ", level); \
+ tty->print args; \
+ } while (0)
+
#define RC_TRACE_WITH_THREAD(level, thread, args) \
if ((TraceRedefineClasses & level) != 0) { \
ResourceMark rm(thread); \
diff --git a/hotspot/src/share/vm/prims/methodHandles.cpp b/hotspot/src/share/vm/prims/methodHandles.cpp
index 552fbe6..887c353 100755
--- a/hotspot/src/share/vm/prims/methodHandles.cpp
+++ b/hotspot/src/share/vm/prims/methodHandles.cpp
@@ -645,6 +645,13 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) {
}
}
methodHandle m = result.resolved_method();
+ KlassHandle mklass = m->method_holder();
+ KlassHandle receiver_limit = result.resolved_klass();
+ if (receiver_limit.is_null() ||
+ // ignore passed-in limit; interfaces are interconvertible
+ receiver_limit->is_interface() && mklass->is_interface()) {
+ receiver_limit = mklass;
+ }
oop vmtarget = NULL;
int vmindex = methodOopDesc::nonvirtual_vtable_index;
if (defc->is_interface()) {
@@ -665,6 +672,7 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) {
java_lang_invoke_MemberName::set_vmtarget(mname(), vmtarget);
java_lang_invoke_MemberName::set_vmindex(mname(), vmindex);
java_lang_invoke_MemberName::set_modifiers(mname(), mods);
+ java_lang_invoke_MemberName::set_clazz(mname(), receiver_limit->java_mirror());
DEBUG_ONLY(KlassHandle junk1; int junk2);
assert(decode_MemberName(mname(), junk1, junk2) == result.resolved_method(),
"properly stored for later decoding");
diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp
index b1eb51c..1d3b887 100755
--- a/hotspot/src/share/vm/runtime/arguments.cpp
+++ b/hotspot/src/share/vm/runtime/arguments.cpp
@@ -829,6 +829,9 @@ bool Arguments::process_argument(const char* arg,
} else {
jio_fprintf(defaultStream::error_stream(), "%s", locked_message_buf);
}
+ } else {
+ jio_fprintf(defaultStream::error_stream(),
+ "Unrecognized VM option '%s'\n", argname);
}
// allow for commandline "commenting out" options like -XX:#+Verbose
@@ -857,7 +860,7 @@ bool Arguments::process_settings_file(const char* file_name, bool should_exist,
bool result = true;
int c = getc(stream);
- while(c != EOF) {
+ while(c != EOF && pos < (int)(sizeof(token)-1)) {
if (in_white_space) {
if (in_comment) {
if (c == '\n') in_comment = false;
diff --git a/hotspot/src/share/vm/runtime/atomic.cpp b/hotspot/src/share/vm/runtime/atomic.cpp
index 80780d7..ce7bcd1 100755
--- a/hotspot/src/share/vm/runtime/atomic.cpp
+++ b/hotspot/src/share/vm/runtime/atomic.cpp
@@ -54,6 +54,12 @@
#ifdef TARGET_OS_ARCH_windows_x86
# include "atomic_windows_x86.inline.hpp"
#endif
+#ifdef TARGET_OS_ARCH_bsd_x86
+# include "atomic_bsd_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_bsd_zero
+# include "atomic_bsd_zero.inline.hpp"
+#endif
#ifdef TARGET_OS_ARCH_linux_arm
# include "atomic_linux_arm.inline.hpp"
#endif
diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp
index e41e2e3..e9ac764 100755
--- a/hotspot/src/share/vm/runtime/globals.hpp
+++ b/hotspot/src/share/vm/runtime/globals.hpp
@@ -3902,7 +3902,10 @@ class CommandLineFlags {
product(bool, UseVMInterruptibleIO, false, \
"(Unstable, Solaris-specific) Thread interrupt before or with " \
"EINTR for I/O operations results in OS_INTRPT. The default value"\
- " of this flag is true for JDK 6 and earlier")
+ " of this flag is true for JDK 6 and earlier") \
+ \
+ product(bool, AllowNonVirtualCalls, false, \
+ "Obey the ACC_SUPER flag and allow invokenonvirtual calls")
/*
* Macros for factoring of globals
diff --git a/hotspot/src/share/vm/runtime/os.hpp b/hotspot/src/share/vm/runtime/os.hpp
index a6ae80a..221d14f 100755
--- a/hotspot/src/share/vm/runtime/os.hpp
+++ b/hotspot/src/share/vm/runtime/os.hpp
@@ -30,6 +30,9 @@
#include "runtime/extendedPC.hpp"
#include "runtime/handles.hpp"
#include "utilities/top.hpp"
+#ifdef TARGET_OS_FAMILY_bsd
+# include "jvm_bsd.h"
+#endif
#ifdef TARGET_OS_FAMILY_linux
# include "jvm_linux.h"
#endif
@@ -233,6 +236,7 @@ class os: AllStatic {
static int vm_allocation_granularity();
static char* reserve_memory(size_t bytes, char* addr = 0,
size_t alignment_hint = 0);
+ static char* reserve_memory_aligned(size_t size, size_t alignment);
static char* attempt_reserve_memory_at(size_t bytes, char* addr);
static void split_reserved_memory(char *base, size_t size,
size_t split, bool realloc);
@@ -694,8 +698,8 @@ class os: AllStatic {
# include "os_windows.hpp"
#endif
#ifdef TARGET_OS_FAMILY_bsd
-# include "os_posix.hpp"
# include "os_bsd.hpp"
+# include "os_posix.hpp"
#endif
#ifdef TARGET_OS_ARCH_linux_x86
# include "os_linux_x86.hpp"
diff --git a/hotspot/src/share/vm/runtime/thread.cpp b/hotspot/src/share/vm/runtime/thread.cpp
index 7676682..0775564 100755
--- a/hotspot/src/share/vm/runtime/thread.cpp
+++ b/hotspot/src/share/vm/runtime/thread.cpp
@@ -3555,6 +3555,9 @@ static OnLoadEntry_t lookup_on_load(AgentLibrary* agent, const char *on_load_sym
os::dll_build_name(buffer, sizeof(buffer), Arguments::get_dll_dir(), name);
library = os::dll_load(buffer, ebuf, sizeof ebuf);
#ifdef KERNEL
+
+ // Dead code, KERNEL is never built in JDK7 or later. This code will be removed in a future update release.
+
// Download instrument dll
if (library == NULL && strcmp(name, "instrument") == 0) {
char *props = Arguments::get_kernel_properties();
diff --git a/hotspot/src/share/vm/runtime/virtualspace.cpp b/hotspot/src/share/vm/runtime/virtualspace.cpp
index c7e6bf8..6ea2ab7 100755
--- a/hotspot/src/share/vm/runtime/virtualspace.cpp
+++ b/hotspot/src/share/vm/runtime/virtualspace.cpp
@@ -340,20 +340,9 @@ void ReservedSpace::initialize(size_t size, size_t alignment, bool large,
if ((((size_t)base + noaccess_prefix) & (alignment - 1)) != 0) {
// Base not aligned, retry
if (!os::release_memory(base, size)) fatal("os::release_memory failed");
- // Reserve size large enough to do manual alignment and
- // increase size to a multiple of the desired alignment
+ // Make sure that size is aligned
size = align_size_up(size, alignment);
- size_t extra_size = size + alignment;
- do {
- char* extra_base = os::reserve_memory(extra_size, NULL, alignment);
- if (extra_base == NULL) return;
- // Do manual alignement
- base = (char*) align_size_up((uintptr_t) extra_base, alignment);
- assert(base >= extra_base, "just checking");
- // Re-reserve the region at the aligned base address.
- os::release_memory(extra_base, extra_size);
- base = os::reserve_memory(size, base);
- } while (base == NULL);
+ base = os::reserve_memory_aligned(size, alignment);
if (requested_address != 0 &&
failed_to_reserve_as_requested(base, requested_address, size, false)) {
diff --git a/hotspot/src/share/vm/utilities/accessFlags.cpp b/hotspot/src/share/vm/utilities/accessFlags.cpp
index 0c6ea1b..49f7010 100755
--- a/hotspot/src/share/vm/utilities/accessFlags.cpp
+++ b/hotspot/src/share/vm/utilities/accessFlags.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -59,8 +59,6 @@ void AccessFlags::atomic_clear_bits(jint bits) {
} while(f != old_flags);
}
-#ifndef PRODUCT
-
void AccessFlags::print_on(outputStream* st) const {
if (is_public ()) st->print("public " );
if (is_private ()) st->print("private " );
@@ -79,8 +77,6 @@ void AccessFlags::print_on(outputStream* st) const {
if (is_obsolete ()) st->print("{obsolete} " );
}
-#endif
-
void accessFlags_init() {
assert(sizeof(AccessFlags) == sizeof(jint), "just checking size of flags");
}
diff --git a/hotspot/src/share/vm/utilities/accessFlags.hpp b/hotspot/src/share/vm/utilities/accessFlags.hpp
index 484ce4f..185c765 100755
--- a/hotspot/src/share/vm/utilities/accessFlags.hpp
+++ b/hotspot/src/share/vm/utilities/accessFlags.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -233,7 +233,7 @@ class AccessFlags VALUE_OBJ_CLASS_SPEC {
inline friend AccessFlags accessFlags_from(jint flags);
// Printing/debugging
- void print_on(outputStream* st) const PRODUCT_RETURN;
+ void print_on(outputStream* st) const;
};
inline AccessFlags accessFlags_from(jint flags) {
diff --git a/hotspot/test/compiler/5091921/Test7005594.sh b/hotspot/test/compiler/5091921/Test7005594.sh
index 858e38a..00d7e14 100755
--- a/hotspot/test/compiler/5091921/Test7005594.sh
+++ b/hotspot/test/compiler/5091921/Test7005594.sh
@@ -71,6 +71,9 @@ elif [ -n "$ROOTDIR" -a -x "$ROOTDIR/mksnt/sysinf" ]; then
# Windows/MKS
MEM=`"$ROOTDIR/mksnt/sysinf" memory -v | grep "Total Physical Memory: " | sed 's/Total Physical Memory: *//g'`
MEM="$(($machine_memory / 1024))"
+elif [ -n `sysctl -n hw.physmem64 2> /dev/null` -o -n `sysctl -n hw.physmem 2> /dev/null` ];
+ # BSD
+ MEM=`sysctl -n hw.physmem64 2> /dev/null || sysctl -n hw.physmem) | awk '{print int($$NF / 1048576); }'`
else
echo "Unable to determine amount of physical memory on the machine"
fi
diff --git a/hotspot/test/compiler/7158807/Test7158807.java b/hotspot/test/compiler/7158807/Test7158807.java
new file mode 100644
index 0000000..5291853
--- /dev/null
+++ b/hotspot/test/compiler/7158807/Test7158807.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. 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.
+ *
+ * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7158807
+ * @summary Revise stack management with volatile call sites
+ * @author Marc Schonefeld
+ *
+ * @run main/othervm -XX:CompileThreshold=100 -Xbatch -Xss248k Test7158807
+ */
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodType;
+import java.lang.invoke.VolatileCallSite;
+
+public class Test7158807 {
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String[] args) throws Throwable {
+ for (int i = 0; i < 25600; i++) {
+ MethodType mt = MethodType.methodType(java.lang.String.class);
+ System.out.println(mt);
+ MethodType mt3 = null;
+ try {
+ mt3 = MethodType.genericMethodType(i);
+ } catch (IllegalArgumentException e) {
+ System.out.println("Passed");
+ System.exit(95);
+ }
+ System.out.println(i+":");
+ try {
+ VolatileCallSite vcs = new VolatileCallSite(mt3);
+ System.out.println(vcs);
+ MethodHandle mh = vcs.dynamicInvoker();
+ vcs.setTarget(mh);
+ // System.out.println(mh);
+ mh.invoke(mt, mh);
+ } catch (Throwable e) {
+ }
+ }
+ }
+}
+
diff --git a/hotspot/test/gc/6941923/test6941923.sh b/hotspot/test/gc/6941923/test6941923.sh
index a9b7721..123a4f8 100755
--- a/hotspot/test/gc/6941923/test6941923.sh
+++ b/hotspot/test/gc/6941923/test6941923.sh
@@ -9,7 +9,7 @@
## skip on windows
OS=`uname -s`
case "$OS" in
- SunOS | Linux )
+ SunOS | Linux | *BSD )
NULL=/dev/null
PS=":"
FS="/"
diff --git a/hotspot/test/runtime/7020373/Test7020373.sh b/hotspot/test/runtime/7020373/Test7020373.sh
index 7f6b03c..9304f7b 100755
--- a/hotspot/test/runtime/7020373/Test7020373.sh
+++ b/hotspot/test/runtime/7020373/Test7020373.sh
@@ -32,7 +32,7 @@ BIT_FLAG=""
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux )
+ SunOS | Linux | *BSD | Darwin )
NULL=/dev/null
PS=":"
FS="/"
diff --git a/hotspot/test/runtime/7110720/Test7110720.sh b/hotspot/test/runtime/7110720/Test7110720.sh
index c90c054..1216379 100755
--- a/hotspot/test/runtime/7110720/Test7110720.sh
+++ b/hotspot/test/runtime/7110720/Test7110720.sh
@@ -37,7 +37,7 @@ fi
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux )
+ SunOS | Linux | *BSD )
FS="/"
RM=/bin/rm
CP=/bin/cp
diff --git a/hotspot/test/runtime/7158800/BadUtf8.java b/hotspot/test/runtime/7158800/BadUtf8.java
deleted file mode 100755
index 8b79762..0000000
--- a/hotspot/test/runtime/7158800/BadUtf8.java
+++ /dev/null
@@ -1,1254 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. 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.
- *
- * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 7158800
- * @summary Test that 1200 symbols that hash to the same value triggers
- * the symbol table alternate hashing mechanism. There isn't actually a
- * way to verify this.
- */
-//
-// Generate large number of strings that hash to the same value
-// to slow down symbol table lookup.
-
-import java.io.BufferedOutputStream;
-import java.io.FileOutputStream;
-
-public class BadUtf8 {
-static String[] strings = {
- "EOcLKvbddZyPxYpb",
- "DncLKvbdPxmAGrqj",
- "DoCjjvbdpxoIHQdY",
- "EPCkKvbdqYoHfqEY",
- "DnbkKvbdezvYdiUX",
- "DnbjjvbdeEoRbXCj",
- "EObkKvbdbsCkUEKB",
- "EOcLKvbdnUtyjiqf",
- "DncLKvbdRWnDcMHc",
- "DoCkKvbdrSUkOLAm",
- "DncLKvbdfNFwGmJk",
- "EPDLKvbdvAdYroFI",
- "DoDLKvbdiGibyViu",
- "DncLKvbdYqNEhmFR",
- "DoCkKvbdEARhlzXX",
- "DncLKvbdSZjHsCvA",
- "DncKjvbdqTsgRqkU",
- "DnbjjvbdqAiFAXHd",
- "EPDKjvbdGcjvJaij",
- "DnbkKvbdwtldpxkn",
- "DoDKjvbdYkrETnMN",
- "EPCjjvbdbBWEfQQX",
- "EPCjjvbduMXwAtBX",
- "DncLKvbdbsCkTcia",
- "DoCjjvbdczYpYZRC",
- "EOcKjvbdFeiqmhsq",
- "DoCkKvbdKCicQibx",
- "EOcKjvbdZLrEUOLm",
- "DoCjjvbdaNKbStmH",
- "DoDKjvbdJbjDQjDY",
- "EPCkKvbdemFwGmKL",
- "EPDKjvbdZQleImEq",
- "DncKjvbdZjShPfbG",
- "DnbjjvbdqYnhHREY",
- "DoCkKvbdaRfDIUGL",
- "DoDKjvbdLrWlyuQz",
- "DnbjjvbdZisHofaf",
- "EObjjvbdhtydvrUb",
- "DnbjjvbdRotHKGEX",
- "EObjjvbdNeEThhkE",
- "EPCjjvbdZtJJZESn",
- "DoDKjvbdnPyxvLYb",
- "EPDKjvbdeEoRbWbj",
- "EOcLKvbdFxttaEXb",
- "EObjjvbddwystRez",
- "EPCjjvbdJpzEnenF",
- "DnbkKvbdTppntuIN",
- "EPCkKvbdTukpKUBR",
- "DnbkKvbdhlFEOUcZ",
- "EObkKvbdlhdUQuRa",
- "DnbjjvbdkClKqHUg",
- "EOcKjvbdqTtGqqkU",
- "DncKjvbdtkwvaUBX",
- "DoDKjvbdsQWOjCuf",
- "DncLKvbdEKIJuwjA",
- "DncKjvbdGLErcIMu",
- "EOcLKvbdNPwpumfs",
- "EObkKvbdnVUzLJrG",
- "DoCkKvbdcTDKsdKB",
- "DncKjvbdKRZdoFme",
- "EOcLKvbdemFvgNKL",
- "EPCkKvbdznopdblY",
- "EPDLKvbdOYPVzdOU",
- "DnbjjvbdsZlPsAhO",
- "DoDLKvbdKCjDRKDY",
- "DoCkKvbdhuZeXSVC",
- "EPDKjvbdOStVgEtp",
- "DncLKvbdvwMAvBWV",
- "EPDKjvbdBcoaWJlf",
- "EOcKjvbdZxdKODMS",
- "DoCjjvbdbsCkTcjB",
- "EOcLKvbdwWlAuaWV",
- "DnbjjvbdFejRnJUR",
- "DnbjjvbdmIdTqVSB",
- "DnbkKvbdqBIeAWhE",
- "DncKjvbdrMzJyMIJ",
- "DoCkKvbdZGvdAOsJ",
- "DncLKvbdjggLfFnL",
- "DoCjjvbdYqNFJMdq",
- "DoCkKvbdqZPHfqDx",
- "DncLKvbdOEdThiLE",
- "DoCkKvbdZirgpGaf",
- "EPDLKvbdziuQPdSt",
- "EObkKvbdKQyeOenF",
- "DoDLKvbduaDySndh",
- "DoCjjvbdVUNUGLvK",
- "DncKjvbdAMhYrvzY",
- "DnbkKvbdnQZxvKxb",
- "EPCjjvbdBhjakJFj",
- "DncLKvbdmfeYNNfy",
- "DoDLKvbdjlbLydfo",
- "DoDLKvbdpyPIGpcx",
- "EOcLKvbdnVUzLJqf",
- "DoCjjvbdmJETqVSB",
- "DoDLKvbdJTZAsMxM",
- "DoCkKvbdnQZxvLZC",
- "DoDKjvbdACqwizJQ",
- "DncKjvbdvBEZSoFI",
- "DncKjvbdGckVjCJj",
- "DncLKvbdiMFENtcZ",
- "Dnbjjvbdjuvmcaww",
- "DnbkKvbdZyEKNblS",
- "DoCjjvbduMYXBUBX",
- "DnbjjvbdFWYopNJe",
- "DoDKjvbdelfXGljL",
- "DnbjjvbdakLenmcA",
- "EPDKjvbdfILWRmpg",
- "EObjjvbdSLYeuHLT",
- "DoCjjvbdMfbolotk",
- "EPDLKvbdrRuKnKaN",
- "EOcKjvbdyzdnRhIh",
- "DoDLKvbdGAoRZJzm",
- "DoCjjvbdhlFDnUcZ",
- "EPDLKvbdmpZyVkYb",
- "DncKjvbdTpqPUuIN",
- "DncLKvbdHDjvJaij",
- "EPDLKvbdYlRcsmkm",
- "EPDLKvbdvlvAMdFN",
- "DncKjvbdIsZArmYM",
- "EOcLKvbdegjuqnQg",
- "EOcLKvbdZQmFJNFR",
- "DoCjjvbdZxdJmcMS",
- "EPCkKvbdlZTSTYgU",
- "DoDKjvbdqceJPnWB",
- "DncLKvbdVgwuxGxz",
- "DncKjvbdDnbkLXDE",
- "EPDLKvbdatbHYKsh",
- "DncKjvbdEzsqFLbi",
- "EPDLKvbdnVVZkKRf",
- "EOcKjvbdKeegbBQu",
- "EPCkKvbdKfGHaaRV",
- "EPDKjvbdmIctRVRa",
- "EPCjjvbdRMxBxnUz",
- "DnbjjvbdJYTbILpp",
- "EPCkKvbdTAEiHbPE",
- "EOcLKvbdfelZnGgA",
- "DoCjjvbdOStWGeUp",
- "EOcLKvbdemGXHNJk",
- "DoDKjvbdYTMAmUOx",
- "EPCkKvbdpyOhGpcx",
- "EPCkKvbdAMgxsWzY",
- "DnbjjvbdYkrETnMN",
- "EPDLKvbdUQqPUtgm",
- "DncKjvbdehKurNqH",
- "DoCjjvbdZMSETnLm",
- "DoDKjvbdIHGyyXwg",
- "EObjjvbdXGYzUAPT",
- "DoCjjvbdhbPCeWqR",
- "DoCkKvbdKNADzGuB",
- "DnbjjvbdFeirOJTq",
- "DncLKvbdaRecHtFk",
- "DnbkKvbdzoPpeClY",
- "EObkKvbdZRMeJMeR",
- "DnbjjvbdYfvdAPSi",
- "DncLKvbdJcKCqJcY",
- "EOcLKvbdqvokbhyR",
- "DoDLKvbdrRuLNjaN",
- "DoCjjvbdTlWPBWOi",
- "DoCkKvbdjvWnEBxX",
- "DoDLKvbdTkunaVoJ",
- "DoCkKvbdQZNAHTSK",
- "EObjjvbdqwPkbhyR",
- "EOcLKvbdNHDPlpUk",
- "DncLKvbdIHHZxxYH",
- "DncLKvbdtkxXAtAw",
- "DncLKvbdSCEFMJZL",
- "DnbjjvbdZQmEhldq",
- "DoCjjvbdNGbolotk",
- "DnbjjvbdnCKWwnmu",
- "DncLKvbdzHZMANEw",
- "DoDKjvbdmttykJrG",
- "DnbkKvbdlrZUzSci",
- "EPDKjvbdSKyGVHKs",
- "DoCjjvbdKVuGEFGi",
- "EPCjjvbdCIkBkIej",
- "DncLKvbdzHZMAMeX",
- "DnbkKvbdaSFbgsek",
- "DncLKvbdHDjujBij",
- "DoDKjvbdGZVUaDwb",
- "DnbjjvbdZnnJFEzK",
- "DoCkKvbdtcDUwWOo",
- "DoCkKvbdlBMoNALA",
- "EOcKjvbdNsUWHFUp",
- "DoDLKvbdVUNUFlVj",
- "DnbkKvbdhkdcnUcZ",
- "DncLKvbdLiBkqYAS",
- "EOcKjvbdzoPpdcLx",
- "EPDKjvbdijGIJmXr",
- "EOcKjvbdZisHofaf",
- "DoDLKvbdeOdrkUUS",
- "DoDLKvbdnPyxvKxb",
- "EPDKjvbdIxUBhMRQ",
- "DncLKvbdlhctRUqa",
- "DoDLKvbdmgFXlnGy",
- "DncKjvbdCJKbKiGK",
- "EOcLKvbddndrjtUS",
- "DnbjjvbdkDLjqGuH",
- "DncKjvbdmIcsptqa",
- "DoCkKvbdvvlAvBWV",
- "EObjjvbdjblLQftg",
- "DnbjjvbdCEQBWKMf",
- "DnbjjvbdBdPaVilf",
- "DoCkKvbdZxcjODLr",
- "DoCkKvbdEObjjwCd",
- "EPDKjvbdyTNhlqbH",
- "EPCkKvbdUMVoAvPJ",
- "DncKjvbdUxhUZjoO",
- "DncKjvbdqqtjmkAm",
- "DncKjvbdKfGICBRV",
- "EPCjjvbdVrOXaeLc",
- "EPDLKvbdwXLaWBWV",
- "EPCkKvbdjblKqHUg",
- "DnbjjvbduDCuWuoP",
- "EPDKjvbdNGbpMouL",
- "EObjjvbdBcoaVjNG",
- "DncLKvbdrWpMDIxq",
- "DncLKvbdhaoCdwRR",
- "DnbkKvbdFxtuBDwb",
- "DncKjvbdIjEAKPgE",
- "EOcLKvbduCbuXVoP",
- "DoDKjvbdZtIiZDsO",
- "DnbjjvbdEztRElCi",
- "DncLKvbdxmsHwsJD",
- "DnbjjvbdRbEElIxk",
- "DoDKjvbdWHwvXgYz",
- "EOcKjvbdQlwbYnUz",
- "EOcLKvbdVTltFkuj",
- "DncKjvbdliETptqa",
- "DnbkKvbddoErjtTr",
- "DoCkKvbdgPazvdXh",
- "DncKjvbdySmhlqag",
- "DoCjjvbdbPgHDkzd",
- "DoCkKvbdFWZPomKF",
- "EObjjvbdssSSxydc",
- "EObjjvbdzQnliJwA",
- "EObkKvbdKCjCpibx",
- "EPCjjvbdpyOhHREY",
- "DncLKvbddjJqutzn",
- "EObkKvbdBdQAujMf",
- "EPCkKvbdLAjflbXq",
- "DncLKvbdLBLGlaxR",
- "DoDLKvbdrpWPJbuf",
- "DoCjjvbdEKHiuxKA",
- "DoCjjvbdXsMAlsnx",
- "EObkKvbdptTgSSLU",
- "DoDKjvbdnHFXmNfy",
- "DncKjvbdCJKbKhej",
- "EPCjjvbdhlEdOUby",
- "EOcKjvbdKWUfEFGi",
- "DoDKjvbdZQmFJMdq",
- "EPCjjvbdiGjDZWKV",
- "EObkKvbdVAbQrprZ",
- "DoDKjvbdfekzNgHA",
- "DoDLKvbdnHEwlmgZ",
- "DncKjvbdwzHeexEr",
- "DoCjjvbdmpZxujyC",
- "EPDKjvbdwMvAMcdm",
- "DoCjjvbdfHkVrNqH",
- "EPCkKvbdYzbfRiuy",
- "EPCkKvbdZtIiZDrn",
- "DnbjjvbdjvWnDbYX",
- "DoCjjvbdOStVgEtp",
- "EPDLKvbdZMSETmlN",
- "EPDKjvbdBhjajhej",
- "EPCjjvbddoFTLUUS",
- "DnbkKvbdsQVoJcWG",
- "EPCjjvbdrEFJQNvB",
- "DoCjjvbdMpYRWOGs",
- "EOcLKvbdZirgpHBf",
- "EPDLKvbdyOTIXsJD",
- "DoCkKvbdKRZdnfNe",
- "DnbjjvbdbBWFFoow",
- "EPCjjvbdgFlZnHHA",
- "DnbkKvbdGGJrOIsq",
- "DoDLKvbduDCtwWPP",
- "EObjjvbdNddUIhjd",
- "DnbjjvbdxsNiMqag",
- "EObjjvbddeOrCWbj",
- "EObjjvbdPxmAGsRj",
- "EOcLKvbddeOrCXDK",
- "DoDLKvbddeOrBwCj",
- "DoCjjvbdVqnYCElD",
- "DnbkKvbdUyIUZjoO",
- "EObjjvbdeFOrCXDK",
- "EObkKvbdVrNxCFLc",
- "EObjjvbdTfzmkwWF",
- "EOcKjvbdIHGzZYYH",
- "EPDKjvbdtbbuXWPP",
- "DoCjjvbdZisIQHBf",
- "EObjjvbdbsCkUDjB",
- "EPCkKvbdVwJXudFH",
- "EPDKjvbdrouoKDVf",
- "EPCkKvbdFyVVBEYC",
- "DncLKvbdZnnIeEzK",
- "EPDLKvbdxVNFQxkn",
- "DoDKjvbdpxnggRDx",
- "DoDLKvbdqZOgfpcx",
- "DncKjvbdCIjakJGK",
- "EPCkKvbdCJLBjhej",
- "DoDLKvbdnPzYvKxb",
- "EOcKjvbdqTsgSRkU",
- "EOcLKvbdLBLGlaxR",
- "DoDLKvbdcbTMrAUN",
- "DncLKvbdzitoodSt",
- "DoDKjvbdJvUfDdfi",
- "EOcLKvbdHDjvKCJj",
- "EPCkKvbdeOeTKssr",
- "DnbkKvbdlYrqsYft",
- "DncLKvbdiiehKMxS",
- "DncKjvbdURQoVUhN",
- "DnbkKvbduMYXBUAw",
- "DoDLKvbdSPtHJfEX",
- "EObkKvbdqBJFAWgd",
- "EOcKjvbdFpATWgFy",
- "DoDLKvbdBsBDTfXS",
- "DncKjvbdjhHLfFmk",
- "DoCjjvbdCJKakIfK",
- "DnbkKvbddoFSjtTr",
- "EObkKvbdANIYsWzY",
- "EObjjvbdCTAbtFvr",
- "EObjjvbdrRtkOLAm",
- "DnbkKvbdkxsSTYgU",
- "DoCjjvbdnBiwXnmu",
- "EObjjvbdwtmEqYlO",
- "EPDKjvbdrylQTAhO",
- "DoDLKvbdtbbtvvOo",
- "EPCjjvbdZLrETmlN",
- "EPDLKvbdWXJYWDdg",
- "DoCkKvbdKQzFOfOF",
- "EPCjjvbdwzIFfXeS",
- "DncKjvbdRjyFuHLT",
- "EPDLKvbdULunaWPJ",
- "DncKjvbdUxhTykOn",
- "DnbkKvbdJcKCqKDY",
- "EPDLKvbdcbSmSATm",
- "DnbkKvbdegjurNqH",
- "EPDKjvbdZjTIQGbG",
- "EPCjjvbdiLddNuCy",
- "DoCjjvbdZQldiNEq",
- "EOcLKvbdakMGPODA",
- "EObjjvbdnHEwlmgZ",
- "EOcLKvbdBsAcUGXS",
- "EPCkKvbdiVZdwSUb",
- "EOcLKvbddCTNSAUN",
- "DnbkKvbdEXxMUUUM",
- "DncKjvbdYpldiMeR",
- "DoDKjvbdNddTiIjd",
- "DoDLKvbdZLqdUNlN",
- "EPCkKvbdiBncFWpq",
- "DncLKvbdiCPDEvqR",
- "EOcKjvbdUyHszKoO",
- "DncKjvbdhtydvqtb",
- "EPCjjvbdpxoHgQcx",
- "EObkKvbdkWWnDaxX",
- "DnbjjvbdBhkBkJFj",
- "DoCkKvbdRacdkhyL",
- "EOcLKvbdZjTHpHCG",
- "EPCkKvbdMowqWOGs",
- "DncLKvbdegjurNpg",
- "EObjjvbdfMfWfmKL",
- "EPDLKvbdZirgpGaf",
- "DoDLKvbdiZuFlQnG",
- "DncLKvbdFxuVAcxC",
- "EObkKvbdZisHofaf",
- "EOcKjvbdJSyBSmYM",
- "EPDLKvbdVYgtZkPO",
- "EOcKjvbdRbEFMJYk",
- "DncLKvbdrEFIonWB",
- "DncKjvbdKDJbqJcY",
- "EOcLKvbdhfjCxuiu",
- "EObjjvbdLLAhWAKZ",
- "DoCkKvbdRXNcblID",
- "DoDLKvbdcbSmSATm",
- "EOcLKvbdwWlAvAuu",
- "EObkKvbdiBnbdvpq",
- "DoCkKvbdNQXpumgT",
- "DncLKvbdkVwOECYX",
- "DnbkKvbdfoazwDxI",
- "DoDLKvbdbBWFFpPw",
- "DoDLKvbdvBDxsPEh",
- "EPDKjvbdJqZdoFme",
- "DoDLKvbdIryArmXl",
- "EPCjjvbdANIZSwZx",
- "EPCkKvbdVhYVxGxz",
- "DncKjvbdLAjgNCYR",
- "DncKjvbdxxIjCQZk",
- "DncKjvbdbiNKKewY",
- "EPCjjvbdlrZVZsEJ",
- "EPDKjvbdIryAsMwl",
- "DoCkKvbdtAHRIAAr",
- "EPDKjvbdJmAEZfuB",
- "EPCkKvbdZjSgogBf",
- "DoDLKvbdOXnuzcnU",
- "DnbkKvbdehKvRnQg",
- "EObjjvbdZyDimbkr",
- "DoDKjvbdmajWwoOV",
- "EOcKjvbdkMalZeHP",
- "EOcKjvbdIjEAJpHE",
- "EPCkKvbdDihKVxKA",
- "DncKjvbdNddUIiKd",
- "EObjjvbdqdFIpOWB",
- "DoCkKvbdxnShXsJD",
- "DoDLKvbdjmBkzEfo",
- "EOcLKvbdatagYLTh",
- "DoCjjvbdVhYVxHYz",
- "DnbjjvbdJbjDRKDY",
- "EPCjjvbdLBLHNCYR",
- "DnbjjvbdnGeYNOGy",
- "EOcLKvbdUsmTekvK",
- "EPCjjvbdtkxXBTaX",
- "EPCjjvbdzoPqFCkx",
- "DncKjvbdCIjbKhej",
- "DncKjvbdZLqdTmkm",
- "DoDKjvbdsPunicVf",
- "EOcKjvbdmgFXmNgZ",
- "EObkKvbdiMFENuCy",
- "DoDKjvbdhanbeXRR",
- "EObkKvbdACqwiyhp",
- "DncKjvbdZisIQHBf",
- "EPCjjvbdgQBzwDwh",
- "DnbjjvbdyYJJaoyk",
- "DoDKjvbdxUldqZMO",
- "EObkKvbdkClLQgVH",
- "EPCjjvbdZQldiMeR",
- "EPDLKvbdZyEKOClS",
- "EPDLKvbdcIlikFvx",
- "DoDKjvbdrzMQTBHn",
- "DnbjjvbdVYgtZkPO",
- "DoDLKvbdHEKuiajK",
- "EPCkKvbdczZQXxqC",
- "DoDKjvbdrDdiQNua",
- "DncLKvbdcImKLGWx",
- "DoCjjvbdVYgtZkPO",
- "EPDLKvbdZnnIeFZj",
- "EPDKjvbdMIakqYAS",
- "DoCkKvbdSLYfUgLT",
- "EPDLKvbdiCObdvpq",
- "DnbjjvbdRpUHKFcw",
- "DoDLKvbdIHHZyYXg",
- "EPCjjvbdypoMhiwA",
- "DnbkKvbdCEPaVjMf",
- "DnbkKvbderAvzlDP",
- "DnbkKvbdZQleImFR",
- "EOcKjvbdKRZdneme",
- "DoDLKvbdiBnbeXQq",
- "DncLKvbdEPDKjvcE",
- "EOcLKvbdauCGwkTh",
- "DncLKvbdEvZQPmJe",
- "EPCkKvbdURQnuVIN",
- "DncLKvbdegjvSOQg",
- "EPCjjvbdKaKgMawq",
- "DnbkKvbdRzKISbvA",
- "DncLKvbdiLdcnUcZ",
- "EPDLKvbdkDMKpfuH",
- "DoDLKvbdRbDdkhyL",
- "DnbjjvbdDwxMUUTl",
- "DnbkKvbdrpWPKCuf",
- "DnbkKvbdNVSqjmAX",
- "DoDKjvbdRbDeMIxk",
- "EOcLKvbdcyxpXyRC",
- "DncLKvbdRMwbYnUz",
- "EObjjvbdqlzJxlHi",
- "DoCkKvbdJYUCIMQp",
- "DncLKvbdLZQjSzuG",
- "EOcKjvbdxVNEqYkn",
- "DnbkKvbdZoOIeFZj",
- "DoCjjvbdBraCtFwS",
- "EOcLKvbdliDsqVSB",
- "EPCkKvbdeATqNXif",
- "DncLKvbdkMbLydgP",
- "EObjjvbdZxdJmbkr",
- "DoCjjvbdraellHLZ",
- "EObkKvbduDCuWvPP",
- "DoCkKvbdpstGrSLU",
- "DoCjjvbdLGFgbBQu",
- "DnbkKvbdhtzFWquC",
- "EObjjvbdoAKztHdO",
- "EPDLKvbdatafxKtI",
- "EPDKjvbdkWXNcaww",
- "DoCkKvbdwkXEHzzG",
- "EObkKvbdmgEwmNgZ",
- "DncKjvbdBiLCLJFj",
- "DoCjjvbdeOdsKssr",
- "EOcLKvbdfILWSORH",
- "EObkKvbdCDpAujMf",
- "EPDKjvbdKDKDQibx",
- "DoDKjvbdVUMtGLuj",
- "EObkKvbdrXQMCiYq",
- "DncKjvbdePEsLTtS",
- "DncLKvbdDxYLtUTl",
- "EPCkKvbdGYuVBEYC",
- "DncLKvbdNeEUIiKd",
- "EPCkKvbdpxoIHRDx",
- "EObjjvbdFkEsDHlu",
- "EObjjvbdssSSxzFD",
- "DoCkKvbdUtNTfMVj",
- "DnbjjvbdJcKDRKDY",
- "DncKjvbdqiAKEmOe",
- "DoDKjvbdtlXwAtBX",
- "DnbkKvbdxmsIYTIc",
- "EObkKvbdLrXMzUpz",
- "DoCjjvbdkxsSSxft",
- "DncKjvbdQlwaxnUz",
- "EObkKvbdjhGlFfNk",
- "EPCkKvbdxsNhmRag",
- "DoDLKvbdMfcPmQUk",
- "DoDKjvbdQvnEDLhD",
- "EObjjvbdVgxVxHYz",
- "DoDLKvbdlrYtyrdJ",
- "DoCjjvbdezvYeIsw",
- "DncLKvbdNddTiIjd",
- "EPDLKvbdGGJrNiUR",
- "EPDLKvbdRzJhTDWA",
- "EPCjjvbdvvkaWBVu",
- "EOcKjvbdRXNdCkgc",
- "EOcKjvbdQZNAHTSK",
- "EPCkKvbdsCGNLfkZ",
- "EOcLKvbdDwwktTsl",
- "EOcLKvbdqlzJyLgi",
- "EOcLKvbdxsNiMqag",
- "EOcLKvbdhzVFlROG",
- "EOcKjvbdEztRFMCi",
- "DnbkKvbdqiAJdmPF",
- "EPDLKvbdjcMKqGtg",
- "EObkKvbdTlWOaWOi",
- "EPDLKvbdURRPUuHm",
- "DoDKjvbdelfWgNKL",
- "EOcLKvbdGAnqZJzm",
- "EObjjvbdGZUuAdXb",
- "DoDLKvbduLwwAtAw",
- "DoCjjvbdZjTIQGbG",
- "EPCjjvbdRNXbYnUz",
- "EPDLKvbdiLeENtby",
- "EObjjvbdMowpunGs",
- "EOcKjvbdbiNJjevx",
- "DoDKjvbdEYYLstTl",
- "DoDLKvbdqUTfrRjt",
- "DoDKjvbdbsCkUEJa",
- "DoDKjvbdXsMBNUPY",
- "EPCjjvbdRNXaxnUz",
- "DoDLKvbdNGcQNQUk",
- "DnbjjvbdEARiMywX",
- "EPDKjvbdSKxfUfkT",
- "DncKjvbdhtyeXRtb",
- "DncKjvbdZLqcsnLm",
- "EObkKvbdZnmheEzK",
- "EObjjvbdtbcUvuno",
- "DnbjjvbdrzMQTBHn",
- "DnbjjvbdDwwktTsl",
- "EPDKjvbdkxsSTYgU",
- "DoDKjvbdIryArlxM",
- "DoDKjvbdnBivxOnV",
- "DoDKjvbdeATplwif",
- "EOcLKvbdKeegbApu",
- "EPCjjvbdMgDQMotk",
- "DoCjjvbduCbtwWOo",
- "DnbkKvbdyNsHwrhc",
- "DnbkKvbdtvNxJpsA",
- "EOcLKvbdqAheAWgd",
- "DoCkKvbdURQoUtgm",
- "EOcKjvbdqceIpOWB",
- "DoCkKvbdVwIwudFH",
- "DnbkKvbdbLMFnmcA",
- "EOcLKvbdZjTHpHBf",
- "EOcKjvbdRXNdCkhD",
- "EPDLKvbdiHJcZViu",
- "DoCjjvbdxxIjCPzL",
- "DnbkKvbdBcpBWJmG",
- "EPCkKvbdZyEKOCkr",
- "EPDKjvbdOTUWHFVQ",
- "DoCjjvbdIGgZxwwg",
- "EPDLKvbdFjeSbhMu",
- "EPDLKvbdhgKCxvJu",
- "EOcLKvbdNsUWGdtp",
- "EPDKjvbduVnXipsA",
- "DncLKvbdGYuVBEXb",
- "EPDLKvbdZtIhyESn",
- "DoDKjvbdZxdJmcLr",
- "DoCjjvbdUsltGLuj",
- "DoDKjvbdDoDLKvbd",
- "DncLKvbdrDdhpNvB",
- "EPDLKvbdKCjDRJbx",
- "DoDLKvbdxLWdHzyf",
- "EObkKvbdrzMQTAhO",
- "EOcLKvbdOFDtJJKd",
- "EPCkKvbdrSVKmjaN",
- "EOcKjvbdWWiYVdEg",
- "EOcKjvbdWWhwvDdg",
- "DncKjvbdpstHRqjt",
- "EPCkKvbdKWVFceGi",
- "DoCkKvbdZjShPfbG",
- "DoCkKvbdSxKlNzkY",
- "EPDLKvbdIwtCHkqQ",
- "EOcKjvbdsCGNLgLZ",
- "DncKjvbdzaAOfgCM",
- "DoDLKvbdxmrhYSiD",
- "DncLKvbdfMfWgMjL",
- "EPDKjvbdqFdEsuaI",
- "EOcLKvbdiLeDnUcZ",
- "DoCjjvbdKVuFceHJ",
- "DoCjjvbdfekzNgHA",
- "EOcKjvbdOFEThiLE",
- "EPDLKvbdqceJPnWB",
- "DoDLKvbduCbtwWOo",
- "DncKjvbdTqROtuIN",
- "DncKjvbdpedFUWBI",
- "DoDLKvbdrEFJQNua",
- "DoDLKvbdyXhjCPyk",
- "EPCkKvbdJYUBhLqQ",
- "EPCkKvbdtcCuXVno",
- "DoDLKvbdZLrEUOLm",
- "EPCkKvbdpstGrRjt",
- "DncLKvbddePSCXCj",
- "EObkKvbdauCHXjsh",
- "DoDLKvbdkHfkefNk",
- "EObjjvbdMRwMzUpz",
- "EObjjvbdaMkCTVNH",
- "DoCkKvbdGGJrNhtR",
- "EPDLKvbdvBDxrneI",
- "EPDLKvbdIHHZxwxH",
- "EOcLKvbdrJAJdmPF",
- "EOcKjvbdGZUuAdXb",
- "EOcLKvbdbUbHYLUI",
- "DnbjjvbdJzofYEAN",
- "EPDKjvbdFxtuBDxC",
- "DnbkKvbdQvnDbkgc",
- "EPDKjvbdJmADzGta",
- "DoDKjvbdZRMdhleR",
- "DnbkKvbdsrqsZZeD",
- "EObkKvbdrovPJbuf",
- "EPCjjvbddeOqbXCj",
- "EObjjvbdtcDVXVoP",
- "DncKjvbdMfbpNQVL",
- "DoCkKvbdhbPCeXQq",
- "DoCkKvbdNHComQVL",
- "EObjjvbdvBDxroFI",
- "EPCjjvbdnBivwoNu",
- "EObjjvbdbhljKewY",
- "EPDKjvbdZyDimcMS",
- "EObkKvbdWSOXbElD",
- "EOcKjvbdTfznMXVe",
- "EPCjjvbdZtJJYcsO",
- "DoCjjvbdRjxfVHLT",
- "DoCkKvbdVTltGMVj",
- "DncKjvbdYfwEAOri",
- "DncKjvbdYkrEUOMN",
- "EObkKvbdqGEEsuaI",
- "DncLKvbdjJfHimXr",
- "EPDLKvbddndsLUTr",
- "DnbkKvbdqBJFAWhE",
- "EPDLKvbdEOcKjwDE",
- "EPCkKvbdtvOYJqTA",
- "DncLKvbdkyTRsZHU",
- "DoCjjvbdTppnuVIN",
- "DncLKvbdwyhFeweS",
- "DncKjvbdsBelkgKy",
- "DoCjjvbdKDKCqJcY",
- "DoCjjvbdkClKqHVH",
- "DoCjjvbdcTCjtDia",
- "EPDLKvbdUVkpJtAq",
- "EPDLKvbdRyjITCvA",
- "DnbjjvbdJuuFcdgJ",
- "DoDKjvbdrJAJdmOe",
- "DncKjvbdJcJbqKCx",
- "DoDLKvbdJcJbqJcY",
- "DoDKjvbdeEoSCXDK",
- "DoDLKvbdSwjlNzkY",
- "EObjjvbdzitopDrt",
- "DoCkKvbdKWVGEEgJ",
- "DncKjvbdpssfqrKt",
- "EOcLKvbdUMWPBVoJ",
- "DncKjvbdyzdmrIIh",
- "EPCjjvbdxUldqZLn",
- "DoDLKvbdySnImRbH",
- "DoCjjvbdGdKvJaij",
- "DoCkKvbdxZgeewdr",
- "EObkKvbdiLddNuDZ",
- "DnbjjvbdSCDdkiZL",
- "DncKjvbdznpREcMY",
- "EOcLKvbdaRebhTfL",
- "DnbjjvbdZQldiMdq",
- "EPCjjvbdbrbjtEKB",
- "EOcKjvbdEARiMzXX",
- "DoDLKvbdXrkaNTnx",
- "EPCkKvbdQZNAHTRj",
- "DoDLKvbdEzspeLcJ",
- "EPCjjvbduVnYKRTA",
- "EObjjvbdJXtBhMQp",
- "EPDKjvbdeOdrjssr",
- "EPCjjvbdLqwMytpz",
- "EPDKjvbdUMVoBVoJ",
- "DncKjvbdRpUGifDw",
- "EPDLKvbdZyDinDLr",
- "DnbkKvbdNrsufeVQ",
- "EPCkKvbdZMSDtNlN",
- "EPCkKvbdySnJNSCH",
- "EPCjjvbdfMevfljL",
- "DncLKvbdXsMBNTnx",
- "DnbkKvbdpxoHfqDx",
- "DncLKvbdUQpntthN",
- "DncKjvbdIsZArlwl",
- "DoDLKvbdZGwEAOsJ",
- "EOcKjvbdVvhwvDdg",
- "EOcLKvbduWNxJqTA",
- "EPCjjvbdHEKvJaij",
- "DoDKjvbdrpWOjCuf",
- "DncLKvbdrpWOjDVf",
- "DoCjjvbdIHGzYwwg",
- "DoDLKvbdpxoIGqEY",
- "DoDLKvbdJcJbqKDY",
- "DoCjjvbdRWmdClHc",
- "EPCjjvbdFWYopNJe",
- "DncKjvbdmfdwlmfy",
- "DoCkKvbdxUleQxlO",
- "EObjjvbdnGdxMnGy",
- "EPCjjvbdvvlAvBVu",
- "DncLKvbddndsKssr",
- "EObjjvbdZMRcsnLm",
- "EOcKjvbdFxttaEXb",
- "DncKjvbdVUNTfMVj",
- "EOcLKvbdNrtWHFUp",
- "DoDKjvbdwuMdqYlO",
- "EPDLKvbdrXPkbhxq",
- "EObjjvbdrEFIpNua",
- "EObjjvbdziuQQDrt",
- "EOcLKvbdqYoIGpcx",
- "DnbjjvbdsQVoJcVf",
- "EObkKvbdkDMKpgUg",
- "EObjjvbdvBDyTPFI",
- "DncKjvbduCbuWvOo",
- "EPCjjvbdkVvnECYX",
- "DncLKvbdZGvdAOri",
- "DoCkKvbdrXPlDJZR",
- "EOcLKvbduCcVWvOo",
- "DoDKjvbdCEPaWJlf",
- "EPDKjvbddoErjssr",
- "DncKjvbdACqxKZiQ",
- "EPCjjvbdUVlPitAq",
- "EPDKjvbdjJfHjMxS",
- "EObkKvbdAMhYsWzY",
- "DoDKjvbdnBivxOmu",
- "EOcLKvbdbiNKKfXY",
- "EPDKjvbdYqMeIleR",
- "EObkKvbdJmADygUa",
- "EObjjvbdEPDLLWcE",
- "EPCjjvbdrXPkcIxq",
- "EOcLKvbdliDtQtqa",
- "DoCjjvbdmoyxujyC",
- "EPDLKvbddoFTLTsr",
- "EOcLKvbdCWzdJEpW",
- "DnbjjvbdrEEhpOWB",
- "DoDKjvbdZLrDtNkm",
- "EOcLKvbdLFfHbAqV",
- "EOcKjvbdmttzLKSG",
- "EOcLKvbdmbJvwoOV",
- "EOcKjvbdUaCQrqSZ",
- "DnbjjvbdmgExMnGy",
- "EPDKjvbddndrkUUS",
- "EObkKvbdDwwkstTl",
- "DoCkKvbdcJMjLFwY",
- "DnbjjvbdaNLBruMg",
- "DoDLKvbdQYmAHTRj",
- "DnbkKvbdsQWOicWG",
- "EObkKvbdMRwMzUpz",
- "DoDLKvbdZshiZDrn",
- "EPDLKvbdnPzYujxb",
- "EOcKjvbdCEQAujMf",
- "EPDLKvbdKefHbApu",
- "DoDLKvbdYpldiNFR",
- "DoCkKvbdFWZQQNJe",
- "DncLKvbdznpQeCkx",
- "EOcKjvbdnQZxvKxb",
- "DoCkKvbdVBBprpqy",
- "DnbkKvbdZirhPfaf",
- "DnbkKvbdegjvSNqH",
- "EOcLKvbdqdEiPnWB",
- "EObjjvbdBhkCKiGK",
- "EObjjvbdxZgfGYFS",
- "DnbjjvbdNQYQumgT",
- "EPCjjvbdxsNhlrBg",
- "DoCkKvbdQdDApRDr",
- "DoCkKvbdxxIiaoyk",
- "EPDKjvbdFeirNhtR",
- "DoCjjvbdegjvSOQg",
- "EObkKvbdqcdiQNvB",
- "DncLKvbdiMEdNtcZ",
- "DncLKvbdTqRPUthN",
- "EPCkKvbdwygeexFS",
- "DoDKjvbdyTOJMrBg",
- "DncLKvbdeEoRavbj",
- "EPCjjvbdtbcUvvOo",
- "EObjjvbdKCicRJcY",
- "EObjjvbdZyEKODMS",
- "DnbjjvbdmJDtQtrB",
- "DncLKvbdEARhlyvw",
- "DnbjjvbdIxTbILqQ",
- "EOcLKvbdwygefYFS",
- "DoCjjvbdznoqFCkx",
- "DoCjjvbdRpUGjGDw",
- "DncKjvbdhzVGMQnG",
- "EPCjjvbdhkeDnVCy",
- "EObkKvbdOEdUIiKd",
- "DncKjvbdrDeIomua",
- "DncLKvbdiHJbxuiu",
- "EPDKjvbddxZstRez",
- "EPDLKvbdmSYuZrdJ",
- "EObkKvbdVUNUFkvK",
- "EPDLKvbdNeEUJIjd",
- "DoCkKvbdiMEdNuCy",
- "DoDLKvbdRDcApQcr",
- "EPCjjvbdTlVoBVoJ",
- "EObjjvbdLBKgNBwq",
- "EPCkKvbdsCFllHKy",
- "EObjjvbdnVUzLJqf",
- "DoDKjvbdqrVLNkBN",
- "DoCkKvbdqFcdtWBI",
- "DncLKvbdbVCGxLTh",
- "EOcLKvbdeFPSCXCj",
- "EOcLKvbdRpTgKFdX",
- "EObjjvbdznpQeDLx",
- "EOcKjvbdjvXNcaxX",
- "DnbjjvbdHDkWJbJj",
- "DncKjvbdhkeENuDZ",
- "DnbkKvbdnUtyjjSG",
- "DoDKjvbdSQUHJfDw",
- "DncKjvbdbUbHYLUI",
- "EOcLKvbdNsTvGduQ",
- "EPDLKvbdSZigsCvA",
- "DncKjvbdMfcPlpUk",
- "DoDLKvbdxrnIlrBg",
- "DncKjvbdiLdcnVCy",
- "EPCjjvbdmfeYNOHZ",
- "DoCkKvbdjvWmcaxX",
- "DoDKjvbdbUbHXkUI",
- "DncKjvbdBhkBjiFj",
- "DoDLKvbdNHColpVL",
- "EOcKjvbdrykosAhO",
- "DncLKvbdqGDeUVaI",
- "DnbkKvbdhgJcZViu",
- "DnbjjvbduLxXAtBX",
- "EPCjjvbdYpleJNFR",
- "EPDLKvbdQvmdClHc",
- "DnbjjvbdJYTbIMRQ",
- "DncLKvbdznpRFDMY",
- "EOcLKvbdZnmiFEyj",
- "DnbkKvbdrRuLOLAm",
- "EObkKvbdhkeEOUby",
- "DncLKvbdYlSEUOLm",
- "DoCjjvbdhkdcmtby",
- "DncLKvbdddnrCXDK",
- "DoDLKvbdKaLHNCYR",
- "EOcKjvbdcyxpYZQb",
- "EPDLKvbdACqwjZhp",
- "DoCkKvbdBsBDTevr",
- "EObkKvbdeKJqvUzn",
- "EObkKvbdcImJkGWx",
- "DncLKvbdYSlAltOx",
- "DncLKvbdlrYtyrdJ",
- "EObkKvbdKxqJrztf",
- "EOcKjvbdsQWPJcVf",
- "DoDKjvbdkySqrxgU",
- "EObjjvbdeEoRbXCj",
- "EOcKjvbdHDkVjBij",
- "DoDLKvbdCTBCsfXS",
- "DoCjjvbdKCjDQibx",
- "DoCjjvbdlhdTqUrB",
- "DoDKjvbdTulQKTaR",
- "DoCkKvbdRjxetfkT",
- "EPCjjvbdEuyQQNKF",
- "EPCjjvbdDoDKkXDE",
- "DoCjjvbdsQWPJbuf",
- "DoDKjvbdhuZdvqtb",
- "EPDLKvbdiHKCyWJu",
- "EPDLKvbdLFegaaQu",
- "DoCjjvbdqZPHgRDx",
- "DncKjvbdUWMPjUAq",
- "DoDLKvbdTYKkmzjx",
- "DoDKjvbdegjvSOQg",
- "DnbkKvbdUtNTekvK",
- "EObkKvbdNsTvGeVQ",
- "DoDLKvbdfNFvgMjL",
- "EOcLKvbdZQmEiNEq",
- "EPDKjvbdBraDTfWr",
- "EPDKjvbdNGcQNQVL",
- "EPDLKvbdZyEKODMS",
- "EOcKjvbdBvzdIdpW",
- "EPCjjvbdACqwiyiQ",
- "DoCjjvbddePRawCj",
- "EPDKjvbdWWiXucdg",
- "DoDKjvbdWexzUAPT",
- "DnbjjvbdwXMBWBWV",
- "EOcLKvbdUyHszLOn",
- "EPCkKvbdOYOuzcnU",
- "EPCkKvbdhancEwQq",
- "DnbkKvbdjggLefOL",
- "EPCkKvbdFjdsDIMu",
- "DoDKjvbdrSUjmkBN",
- "DoDLKvbdZjTIQGaf",
- "DoDKjvbdMgDPmPtk",
- "EPDLKvbdWRmwbFMD",
- "DoCkKvbdzROmJKXA",
- "DnbkKvbdrDdiQNvB",
- "DnbjjvbduDCtwVoP",
- "EOcLKvbdCIjbLJFj",
- "EPDKjvbdXrkaMsnx",
- "EPDKjvbdVhXvXfxz",
- "DncKjvbdhbPDEwRR",
- "DoCkKvbdpxoHgQcx",
- "DoCkKvbduMXwBUBX",
- "EObjjvbdNeEThhjd",
- "DoCjjvbdirzhrkJz",
- "DoDLKvbdaMkCTUlg",
- "DncLKvbdWRnYBeLc",
- "DnbjjvbdGBPRZJzm",
- "EOcLKvbdeOeSjstS",
- "DoDLKvbdmIctRVSB",
- "DoCjjvbdZxdJnDMS",
- "DoCkKvbdRpTgKFcw",
- "DncLKvbdTukojTaR",
- "DnbjjvbdKRZdoFme",
- "DnbkKvbdURQoVUhN",
- "DoDLKvbdyYJKBozL",
- "EObkKvbdfNFwHMjL",
- "DoDLKvbdZisIQHBf",
- "EObkKvbdqFcdsuaI",
- "DncLKvbdzoPqFDLx",
- "DoDKjvbdSKxeuHLT",
- "EPDKjvbdsBemLfjy",
- "DoCjjvbdJbjCqJcY",
- "DoCjjvbdNPxRVnGs",
- "DncLKvbdGcjvJbKK",
- "EOcKjvbdrWpMDIxq",
- "EOcLKvbdQdDApQcr",
- "DoDKjvbdZMRdTnLm",
- "EOcLKvbddxZssrFz",
- "EObjjvbdUtNTfLuj",
- "EPCjjvbdLLBIWAKZ",
- "DoCkKvbdgFlZmfgA",
- "EPCjjvbdUVkoitAq",
- "DoDKjvbdDncKjvcE",
- "DoDLKvbdRpUHJfEX",
- "EPDKjvbdLqvlzVQz",
- "EPDKjvbdZMRdUOLm",
- "EOcLKvbdCJLBkIfK",
- "DncKjvbdaSFbhUFk",
- "EPDLKvbdZoNheEzK",
- "DncKjvbdUVlPjUAq",
- "DnbkKvbdKNADyfuB",
- "EObkKvbdZdwfzghb",
- "EPDLKvbdZtIhxcrn",
- "EObkKvbdGckViajK",
- "DncLKvbdFfJqmiUR",
- "DncKjvbdKWUfDdgJ",
- "DoDKjvbdMtrqjmAX",
- "EOcLKvbdsQWPKDVf",
- "DoCjjvbdwtleRZMO",
- "EObjjvbduaDxsPEh",
- "EPDLKvbdKxqJrzuG",
- "EOcKjvbdVAaprprZ",
- "EObjjvbdEuxopMjF",
- "DnbjjvbdyOTHwriD",
- "EPDLKvbdrpVnibvG",
- "EPDKjvbdkWWnDaww",
- "DncLKvbdrXPkbiYq",
- "DoDLKvbddxZssqez",
- "EOcLKvbdHDkWJbJj",
- "DncLKvbdEPCkLWcE",
- "DnbkKvbdEXwkstTl",
- "EObjjvbdqiAKEmOe",
- "DncLKvbdjAQGaQGj",
- "EPCjjvbdNeDtJJKd",
- "EPCjjvbdvwMBWBVu",
- "EPDKjvbdFejSOItR",
- "EOcLKvbdNPwqWOHT",
- "EPDKjvbdbsCjscia",
- "EObkKvbdyYIiaoyk",
- "DoDKjvbdLZQirzuG",
- "EObjjvbdSLZGVGjs",
- "DoCjjvbdAMgxsWzY",
- "DoDLKvbdEObjjwCd",
- "DnbkKvbdsPvOicWG",
- "EPCkKvbdrJAKElne",
- "EPCkKvbdauCGwjsh",
- "DncLKvbdegkWRnQg",
- "EPCkKvbdYpmEiNFR",
- "DoDKjvbduaDxsPFI",
- "DoCjjvbdcyxoxYqC",
- "DoCkKvbdkMakzFHP",
- "DnbjjvbdJbibqJbx",
- "DnbkKvbdWWhxWDeH",
- "DoCjjvbdssRsYzFD",
- "DoDKjvbdpyPIHRDx",
- "DncLKvbdwNWANDeN",
- "DoDKjvbdJYUBglRQ",
- "EObkKvbdXnRAYVVt",
- "DoCjjvbdUWLpKTaR",
- "DoDKjvbdTqROttgm",
- "EPCkKvbdVqnXaeMD",
- "EObjjvbdADRwiyiQ",
- "DoDKjvbdlrZUyrci",
- "EPDKjvbdvAdZSndh",
- "DoCkKvbdzoQQeDLx",
- "DnbkKvbdSQUGjFdX",
- "EOcLKvbdqBJFAXIE",
- "EObkKvbdSCEFLiZL",
- "DnbjjvbdzoQQdcMY",
- "DnbkKvbdpxngfqEY",
- "DncLKvbdbsDLUEKB",
- "DoCjjvbdXrlBMtOx",
- "EObjjvbdKCjDQicY",
- "DncLKvbdLrWlzUpz",
- "EObjjvbdaaWEfQQX",
- "EObjjvbdtlYWaTaX",
- "DnbkKvbdMowpunGs",
- "EObkKvbdSLYeuHKs",
- "EObkKvbdTAEhhCOd",
- "EPCkKvbdmSYtyrci",
- "DncLKvbdYkqcsnLm",
- "DoDLKvbdrylQTAgn",
- "DncLKvbdJXtCIMRQ",
- "EObkKvbdSBdElIyL",
- "DoDLKvbdwygefYFS",
- "DncKjvbdyXhibPzL",
- "EPCjjvbduaDxsPFI",
- "EObjjvbdZoNiFEzK",
- "EPCjjvbdkNBkyeHP",
- "EPCkKvbdWRnXadlD",
- "DncLKvbdRWmdDLhD",
- "DnbkKvbdmSYtzTDi",
- "EOcKjvbdkVwODbXw",
- "DncLKvbdQlxCZOUz",
- "EObjjvbdbhlijfXY",
- "EOcLKvbdXmqAXtut",
- "EOcLKvbdmbKXXnnV",
- "DoDKjvbdkHgMFfOL",
- "EPCkKvbdfekymgHA",
- "DoCjjvbdeKKRvUzn",
- "DoDKjvbdkHfkefNk",
- "DoCjjvbdyqPMiKXA",
- "DnbjjvbdUQqOtuIN",
- "EOcKjvbdEPCkKwDE",
- "DoDLKvbdZRNFIleR",
- "DnbjjvbdRacdlJZL",
- "EOcLKvbdTukoitAq",
- "EOcLKvbdZLrDtOMN",
- "EOcLKvbdgKfzcGAE",
- "EObjjvbdzjVQQESt",
- "EOcLKvbdcIlijevx",
- "EOcKjvbdGKdsDHmV",
- "DncLKvbdKkBHvAJy",
- "EOcKjvbdZMRctOLm",
- "EPCkKvbdADRxKZiQ",
- "EObjjvbdDwxLsssl",
- "EPDLKvbdUxgszLPO",
- "EPCkKvbdSQTfiedX",
- "EPCjjvbdNeEUJIkE",
- "DoDLKvbdpyPHfqDx",
- "DnbkKvbdyOShXsJD",
- "DncLKvbdLiBkpxAS",
- "DoDKjvbdaaWEepQX",
- "DoCjjvbdWSOYBeLc",
- "EOcKjvbdLFegbAqV",
- "EPDKjvbdffLzOGgA",
- "EObkKvbdFkErbglu",
- "DncLKvbdiZuFlROG",
- "DncKjvbdegkWRnQg",
- "DoDLKvbdQdDApRDr",
- "EOcLKvbdeYZtURez",
- "EObjjvbdrXQLcIxq",
- "DoDLKvbdxZhGGXeS",
- "DoDLKvbdGGKSOItR",
- "EObjjvbdjhHLfFnL",
- "EOcLKvbdUQpoUuHm",
- "DoCkKvbdXrlBNUPY",
- "DoDKjvbdJXtCIMRQ",
- "DnbkKvbdZMSDsnLm",
- "DncKjvbdCTBDUGWr",
- "DncKjvbdbhlikGXY",
- "DoDKjvbdXmqAYVWU",
- "DnbjjvbdliDsqVRa",
- "DnbkKvbdmajXYOnV",
- "EObjjvbdJpyePGNe",
- "DnbkKvbdCTAcUGXS",
- "DoDLKvbdCDpBVjNG",
- "EOcLKvbdxwhiaoyk",
- "DoDKjvbdxVNFQyMO",
- "EPCkKvbdVvhwvEEg",
- "DnbkKvbdFWYoomJe",
- "EOcKjvbdlrZUysEJ",
- "EPDKjvbdqquKnKaN",
- "DoCkKvbdTkunaVoJ",
- "EOcLKvbdfHkVrOQg",
- "EPDLKvbdiUzFWrUb",
- "DoDLKvbdtAGqIABS",
- "DoCkKvbdZRMdhmEq",
- "DnbkKvbdNsUVfeVQ",
- "EPDLKvbdqwPkbiZR",
- "DoCkKvbdNUsSLNAX",
- "DncKjvbdmpZxvKyC",
- "EPCkKvbdLYqKSztf",
- "EPDKjvbdZyEKODMS",
- "EPDKjvbdNGbomPuL",
- "DncKjvbdZMSDtNlN",
- "EPCjjvbdTXjkmzjx",
- "EObkKvbdBdQAvKMf",
- "EOcLKvbdkySrTYgU",
- "DnbkKvbdZoOIddzK",
- "DoCkKvbdZMSDsmkm",
- "EPCkKvbdCWzdIdpW",
- "DncLKvbdBvzdIdov",
- "DoCjjvbdaRfDHtFk",
- "DnbkKvbdWeyZtAOs",
- "DoDLKvbdnCJwYPOV",
- "DoCjjvbdEYYLstUM",
- "EOcLKvbdwtldqZMO",
- "EPCjjvbdFVxoomKF",
- "EObkKvbdyqPMhiwA",
- "DoDLKvbdkxrrSxgU",
- "DoCjjvbdeATqNYKG",
- "DncLKvbdJKEAJpHE",
- "DoCkKvbddndsLUTr",
- "DnbjjvbdqFceUWBI",
- "DoDLKvbdhkddOUby",
- "DncKjvbdGKdrcIMu",
- "EPCkKvbdelevflik",
- "DoDKjvbdhaoDFWqR",
- "DoCjjvbdYlSDsmlN",
- "EPCjjvbdiZuGLpmf",
- "EObkKvbdnCJvxPNu",
- "DnbkKvbdhzUelRNf",
- "DnbkKvbdZeYGzgiC",
- "DoCkKvbdDnbkLWbd",
- "DnbkKvbdnHFYMmfy",
- "DoCjjvbdePEsKtTr",
- "DnbjjvbdZQmEhleR",
- "DnbkKvbdTkunaVoJ",
- "DnbkKvbdFWZPpMjF",
- "DoDKjvbdSwkMNzkY",
- "EOcLKvbdwtldpyMO",
- "EOcKjvbdhkdcmtby",
- "DoCjjvbdNQXqWNfs",
- "EPDKjvbdzjUpPdTU",
- "DnbjjvbdqceJPnWB",
- "EPDKjvbdUyHsyjoO",
- "EPCkKvbdZshhxcsO",
- "DncKjvbdqAiFAWgd",
- "EObkKvbdgFkzOGgA",
- "DncKjvbdmgFYNNgZ",
- "DoDLKvbdDjHjWYKA",
- "DnbjjvbdJbicRKCx",
- "DnbkKvbdfNFwHMjL",
- "EPCkKvbdWSNxBdlD",
- "EPDLKvbdCJKbLJFj",
- "EPDKjvbdEOcKkXDE",
- "EPCkKvbdVrOYCElD",
- "DnbjjvbdCIkBjhej",
- "DoDLKvbddoFTKstS",
- "DnbjjvbduDDVXVoP",
- "EObkKvbdxwiKCPzL",
- "DnbkKvbdZGvdAPTJ",
- "DoDLKvbdBdPaVjNG",
- "EOcKjvbdIHGzYwxH",
- "DoCjjvbdGFjSNhsq",
- "DnbjjvbdlYsSSxgU",
- "EPCjjvbdqrUjnKaN",
- "EOcLKvbdtvOXipsA",
- "DoDLKvbdrounjCuf",
- "DoCkKvbdFVyPomKF",
- "EOcKjvbdNHCpNPtk",
- "EPDLKvbdWeyZtAPT",
- "EPDKjvbdjcLkQfuH",
- "EOcLKvbdzHZMAMeX",
- "DoCjjvbdUMWPBVni",
- "EOcKjvbdHELWKBjK",
- "DoDKjvbdMgComQUk",
- "DnbkKvbdiGjDZWJu",
- "DncKjvbdyqOmJKXA",
- "DoDKjvbdVZITyjoO",
- "DoCjjvbdzQoNJJwA",
- "EOcLKvbdGAoQxizm",
- "DoDKjvbdatagYKsh",
- "EPDKjvbdSBceMJYk",
- "DoDLKvbdMpYQvOHT",
- "DncKjvbdiCOcFWpq",
- "DoCjjvbdUGznLvvF",
- "EPDLKvbdANIYrvyx",
- "EPCjjvbdIwtCHkpp",
- "EObkKvbdJSyBSmYM",
- "EObkKvbdwuMdqYlO",
- "EObjjvbdmuVZkKSG",
- "DncLKvbdSPsfjFdX",
- "DoDLKvbdSQUHJedX",
- "DoDKjvbdiVZdwSUb",
- "EPDLKvbdRjxfVGkT",
- "EObjjvbdmpZyVkZC",
- "DncLKvbdhzUelROG",
- "EPCkKvbdxVMeRZMO",
- "EOcKjvbdxxIiapZk",
- "EOcKjvbdJSyBTNYM",
- "EPDKjvbdMSXMzUpz",
- "EObkKvbdJmADzHVB" };
-
- public static void main(java.lang.String[] unused) {
- try {
- BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("bad.out"));
- for (int i = 0; i < strings.length; i++) {
- out.write(strings[i].getBytes());
- out.write("\n".getBytes());
- }
- out.close();
- } catch (Exception e) {
- System.out.println("Some exception occurred");
- }
- }
-}
diff --git a/hotspot/test/runtime/7158800/InternTest.java b/hotspot/test/runtime/7158800/InternTest.java
deleted file mode 100755
index d0cd1c0..0000000
--- a/hotspot/test/runtime/7158800/InternTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. 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.
- *
- * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 7158800
- * @run shell/timeout=400 Test7158800.sh
- * @summary This test performs poorly if alternate hashing isn't used for
- * string table.
- * The timeout is handled by the shell file (which kills the process)
- */
-import java.util.*;
-import java.io.*;
-
-public class InternTest {
- public static void main (String args[]) throws Exception {
- final String badStringsFilename = "badstrings.txt";
-
- if (args.length == 0 || (!args[0].equals("bad") && !args[0].equals("normal"))) {
- System.out.println("Usage: java InternTest [normal|bad]");
- System.exit(1);
- }
-
- FileInputStream fstream = new FileInputStream(badStringsFilename);
- DataInputStream in = new DataInputStream(fstream);
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
- String toIntern, toDiscard;
- int count = 0;
- long current = 0L;
- long last = System.currentTimeMillis();
-
- if (args[0].equals("bad")) {
- while ((toIntern = br.readLine()) != null) {
- toDiscard = new String((new Integer((int)(Math.random() * Integer.MAX_VALUE))).toString());
- toIntern.intern();
- count++;
- if (count % 10000 == 0 && count != 0) {
- current = System.currentTimeMillis();
- System.out.println(new Date(current) + ": interned " + count + " 0-hash strings - last 10000 took " + ((float)(current - last))/1000 + "s (" + ((float)(current - last))/10000000 + "s per String)");
- last = current;
- }
- }
- }
- if (args[0].equals("normal")) {
- while ((toDiscard = br.readLine()) != null) { // do the same read from the file to try and make the test fair
- toIntern = new String((new Integer((int)(Math.random() * Integer.MAX_VALUE))).toString());
- toIntern.intern();
- count++;
- if (count % 10000 == 0 && count != 0) {
- current = System.currentTimeMillis();
- System.out.println(new Date(current) + ": interned " + count + " normal strings - last 10000 took " + ((float)(current - last))/1000 + "s (" + ((float)(current - last))/10000000 + "s per String)");
- last = current;
- }
- }
- }
- in.close();
- }
-}
-
-
diff --git a/hotspot/test/runtime/7158800/Test7158800.sh b/hotspot/test/runtime/7158800/Test7158800.sh
index 2a50234..f05b34a 100755
--- a/hotspot/test/runtime/7158800/Test7158800.sh
+++ b/hotspot/test/runtime/7158800/Test7158800.sh
@@ -46,7 +46,7 @@ fi
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux )
+ SunOS | Linux | *BSD )
NULL=/dev/null
PS=":"
FS="/"
diff --git a/hotspot/test/runtime/7158804/Test7158804.sh b/hotspot/test/runtime/7158804/Test7158804.sh
new file mode 100644
index 0000000..bce5197
--- /dev/null
+++ b/hotspot/test/runtime/7158804/Test7158804.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+
+##
+## @test Test7158804.sh
+## @bug 7158804
+## @summary Improve config file parsing
+## @run shell Test7158804.sh
+##
+
+if [ "${TESTJAVA}" = "" ]
+then
+ echo "TESTJAVA not set. Test cannot execute. Failed."
+ exit 1
+fi
+echo "TESTJAVA=${TESTJAVA}"
+
+rm -f .hotspotrc
+echo -XX:+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >.hotspotrc
+${TESTJAVA}/bin/java ${TESTVMOPTS} -XX:+IgnoreUnrecognizedVMOptions -XX:Flags=.hotspotrc -version
+if [ $? -ne 0 ]
+then
+ echo "Test Failed"
+ exit 1
+fi
+rm -f .hotspotrc
+exit 0
diff --git a/hotspot/test/runtime/7162488/Test7162488.sh b/hotspot/test/runtime/7162488/Test7162488.sh
new file mode 100644
index 0000000..bd70d02
--- /dev/null
+++ b/hotspot/test/runtime/7162488/Test7162488.sh
@@ -0,0 +1,77 @@
+#
+# Copyright (c) 2012, Oracle and/or its affiliates. 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.
+#
+# 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+
+# @test Test7162488.sh
+# @bug 7162488
+# @summary VM not printing unknown -XX options
+# @run shell Test7162488.sh
+#
+
+if [ "${TESTSRC}" = "" ]
+ then TESTSRC=.
+fi
+
+if [ "${TESTJAVA}" = "" ]
+then
+ PARENT=`dirname \`which java\``
+ TESTJAVA=`dirname ${PARENT}`
+ printf "TESTJAVA not set, selecting " ${TESTJAVA}
+ printf " If this is incorrect, try setting the variable manually.\n"
+fi
+
+# set platform-dependent variables
+OS=`uname -s`
+case "$OS" in
+ Windows_* )
+ FS="\\"
+ ;;
+ * )
+ FS="/"
+ ;;
+esac
+
+JAVA=${TESTJAVA}${FS}bin${FS}java
+
+#
+# Just run with an option we are confident will not be recognized,
+# and check for the message:
+#
+OPTION=this_is_not_an_option
+
+${JAVA} ${TESTVMOPTS} -showversion -XX:${OPTION} 2>&1 | grep "Unrecognized VM option"
+if [ "$?" != "0" ]
+then
+ printf "FAILED: option not flagged as unrecognized.\n"
+ exit 1
+fi
+
+${JAVA} ${TESTVMOPTS} -showversion -XX:${OPTION} 2>&1 | grep ${OPTION}
+if [ "$?" != "0" ]
+then
+ printf "FAILED: bad option not named as being bad.\n"
+ exit 1
+fi
+
+printf "Passed.\n"
+
diff --git a/jaxp/.hgtags b/jaxp/.hgtags
index ac16a41..8cd890e 100755
--- a/jaxp/.hgtags
+++ b/jaxp/.hgtags
@@ -123,6 +123,7 @@ e1b5ef243445bf836d095fd44866e1771ef99374 jdk7-b141
bcd31fa1e3c6f51b4fdd427ef905188cdac57164 jdk7-b146
067fb18071e3872698f6218724958bd0cebf30a3 jdk7u1-b01
fc268cd1dd5d2e903ccd4b0275e1f9c2461ed30c jdk7-b147
+3170972bd3928a331c4c64a5c0c9632077fb399a 7u0
104ca42e1e7ca66b074a4619ce6420f15d8f454d jdk7u1-b02
64e323faadf65018c1ffc8bb9c97f7b664e87347 jdk7u1-b03
2256c20e66857f80cacda14ffdbc0979c929d7f8 jdk7u1-b04
@@ -197,5 +198,69 @@ da79c0fdf9a8b5403904e6ffdd8f5dc335d489d0 jdk7u6-b14
7403701aa75848ca2a7b297909908b858134e132 jdk7u6-b21
fcf35906d1d88583878cd2e2d7c63dfba4e9f679 jdk7u6-b22
8824bcbfd7cd8059ededf70f1e7f2b06f02cb33f jdk7u6-b23
-1365e7472a3b737dda4a73e06ad41718d667d9be jdk7u8-b01
-0a313d4307930be3a64106b9b8c90f9342673aa0 jdk7u8-b02
+378f719cfb9491b766cd9f7cd47ad7fa3503e141 jdk7u6-b24
+5f1b80e8baec46fc28826a3a6ab8e1913c872f4c jdk7u6-b30
+2eafa8a6fd8fdb54b10045e247d1a57f9817f473 jdk7u6-b31
+2eafa8a6fd8fdb54b10045e247d1a57f9817f473 jdk7u7-b10
+c4aa15da8529451cc678d5747e7b82e9cc38627e jdk7u7-b30
+f6e11679b12e1548f407b78a940c568401dd2a19 jdk7u7-b11
+7840a267c777e22004912ad0aadd5258ac3d36c6 jdk7u7-b31
+61fc72e9fe26b3acf1572866143c22719c088b62 jdk7u7-b01
+78d9e4853388a2e7be18ff18c0b5330c074cb514 jdk7u7-b02
+fc7c5aa8c722f28c59560ce83140e803d853afc9 jdk7u9-b03
+0000000000000000000000000000000000000000 jdk7u7-b01
+61fc72e9fe26b3acf1572866143c22719c088b62 jdk7u9-b01
+0000000000000000000000000000000000000000 jdk7u7-b02
+78d9e4853388a2e7be18ff18c0b5330c074cb514 jdk7u9-b02
+b12a2d557c5e302b614c5f7e25ad6c8a0e138742 jdk7u9-b04
+ab4bbb93b3831aca230c62431f7fe02b56793450 jdk7u9-b05
+039b21e98d2b2d0b26a19c325b37ce522bae39de jdk7u9-b31
+d80a8e81fef0bc6e0bdb7891895bda527853add1 jdk7u9-b32
+254ed6ae237ee631179819570cf7fb265c6fb3a8 jdk7u10-b10
+c1df39bcc9c1bcdfb2a92682650264b3b7771ce8 jdk7u10-b11
+00cfd60368048c4969785eb52ec50cf5691c4367 jdk7u10-b12
+51efccc2b4e908fa0475075739c1463d1dd50efc jdk7u10-b13
+c245a6332320a86342683e6f732f3f8f2f4de69a jdk7u10-b14
+89b043ba2e01e969090e23a5a7a2e9f7165ff5a0 jdk7u10-b15
+5449d5396bd8deee90f18f29899343129e3cdc4e jdk7u10-b16
+86c75e6aa3a7fa9a587fc7dd2d08af8aa8ffb9a9 jdk7u10-b17
+162a2c6ad8718a63253fa53724f704a4f85731bc jdk7u10-b18
+c59eb287de720ae5ce8087f179ec01f4f6525a32 jdk7u10-b30
+ec1e8ead41ee49d2b3f84a26ae0fac88e226692d jdk7u10-b31
+853059839d38432f86e345ba951397ede235a374 jdk7u11-b20
+453a52320a1b8bd425fdb55e14b64067b536f1e2 jdk7u11-b21
+71353182d3f7c237047c5386d9f31186a5bd1519 jdk7u11-b32
+af8f33c558d05aacdff5b5787be0cbaba9f10e98 jdk7u11-b33
+5df9207c4378b7f4b24d70b365714c5ee6318982 jdk7u11-b03
+6ee19b9c8313db32e6d8989aa3782830d2b09710 jdk7u11-b04
+3312b258392eaeab9c4a20e3deb36d3ae3337efe jdk7u11-b05
+86d0250b62bbb4aabab2a7c249aeb14847be2631 jdk7u11-b06
+225aa78c36e9b776c87e585329bbb7ee0e3259a3 jdk7u11-b07
+48491f5a58172f0fbdf9b774842c2ec1a42f609a jdk7u11-b08
+eb9d57159e5126cf4316c9571ac39324a8b442a8 jdk7u13-b09
+f9fe0d38b1103cb33073538c959d982e28ed7b11 jdk7u13-b10
+0a6a09e5174a4c15632ff7e06d6b215164e3fa15 jdk7u13-b30
+f9fe0d38b1103cb33073538c959d982e28ed7b11 jdk7u13-b20
+99c114990b191f32e72c6158072033aec5816aaf jdk7u15-b01
+edbaa584f09a78d0ad3c73389faf20409a552e46 jdk7u15-b02
+14a9b60a2086f4e2f6ec43bee3375042946f6510 jdk7u15-b30
+de6df3c10ebc0f8c704a11ad86c8eea1e1cc1442 jdk7u15-b31
+039c31ff1fe6789859f2f55588218147623a9a9f jdk7u15-b33
+a55f67cfe182dc42a86aae836674eb8ba5b79891 jdk7u15-b03
+eb9d57159e5126cf4316c9571ac39324a8b442a8 jdk7u15-b32
+8a9867ee429440b657eb5852c4dae5f029356022 jdk7u17-b01
+7863a60ae4b4a0c7d762a95e77e589fafa4e50ae jdk7u17-b02
+a5e6594fc1ae20101b5d69632f65078d7a99b76d jdk7u17-b30
+8fb34202383ece5386acecc3a6c1dac68dccbf05 jdk7u17-b31
+0a6a09e5174a4c15632ff7e06d6b215164e3fa15 jdk7u21-b01
+99ed1a3d29509fee659aabec4810c896b7234d80 jdk7u21-b02
+38d4d23d167c5a623e6d771a15b1fe2ee771ce38 jdk7u21-b03
+acde12ee462d650d34cc148d9d3649f9a9bbca8a jdk7u21-b04
+56b1ad031df90d20c52941c15ceae0e5a90893b8 jdk7u21-b05
+ab51202418c1c96e01a45893a26829a2d9c7b956 jdk7u21-b06
+3ab71deee4a4477d89530ee9e92a36017a6092fa jdk7u21-b07
+f5ef2e76669bc3179f17dac42a8a407fb6bd4d91 jdk7u21-b08
+65977091d010402ccbed41c96748866a1d50f0c4 jdk7u21-b09
+bf2d62ea518d5e4130e442e07705e7a50b821ad9 jdk7u21-b10
+3e0e331bdfb8f3adfd0cc78118e0ac588e73a2b5 jdk7u21-b11
+980fe893d8fd86d8aee14771167b6e0ac75fa208 jdk7u21-b30
diff --git a/jaxp/src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java b/jaxp/src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java
index 1c0d54e..4d28f2a 100755
--- a/jaxp/src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java
+++ b/jaxp/src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java
@@ -63,6 +63,7 @@ import com.sun.org.apache.bcel.internal.util.SyntheticRepository;
import com.sun.org.apache.bcel.internal.util.ClassVector;
import com.sun.org.apache.bcel.internal.util.ClassQueue;
import com.sun.org.apache.bcel.internal.generic.Type;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.io.*;
import java.util.StringTokenizer;
@@ -77,6 +78,7 @@ import java.util.StringTokenizer;
* class file. Those interested in programatically generating classes
* should see the ClassGen class.
+ * @version $Id: JavaClass.java,v 1.4 2007-07-19 04:34:42 ofung Exp $
* @see com.sun.org.apache.bcel.internal.generic.ClassGen
* @author M. Dahm
*/
@@ -451,9 +453,9 @@ public class JavaClass extends AccessFlags implements Cloneable, Node {
String debug = null, sep = null;
try {
- debug = System.getProperty("JavaClass.debug");
+ debug = SecuritySupport.getSystemProperty("JavaClass.debug");
// Get path separator either / or \ usually
- sep = System.getProperty("file.separator");
+ sep = SecuritySupport.getSystemProperty("file.separator");
}
catch (SecurityException e) {
// falls through
diff --git a/jaxp/src/com/sun/org/apache/bcel/internal/util/Class2HTML.java b/jaxp/src/com/sun/org/apache/bcel/internal/util/Class2HTML.java
index cb941bd..5a9e094 100755
--- a/jaxp/src/com/sun/org/apache/bcel/internal/util/Class2HTML.java
+++ b/jaxp/src/com/sun/org/apache/bcel/internal/util/Class2HTML.java
@@ -82,6 +82,7 @@ import com.sun.org.apache.bcel.internal.Constants;
* method in the Method's frame will jump to the appropiate method in
* the Code frame.
*
+ * @version $Id: Class2HTML.java,v 1.3 2007-07-19 04:34:52 ofung Exp $
* @author M. Dahm
*/
public class Class2HTML implements Constants
@@ -137,7 +138,7 @@ public class Class2HTML implements Constants
ClassParser parser=null;
JavaClass java_class=null;
String zip_file = null;
- char sep = System.getProperty("file.separator").toCharArray()[0];
+ char sep = SecuritySupport.getSystemProperty("file.separator").toCharArray()[0];
String dir = "." + sep; // Where to store HTML files
try {
diff --git a/jaxp/src/com/sun/org/apache/bcel/internal/util/ClassPath.java b/jaxp/src/com/sun/org/apache/bcel/internal/util/ClassPath.java
index 41c27f8..0cd5021 100755
--- a/jaxp/src/com/sun/org/apache/bcel/internal/util/ClassPath.java
+++ b/jaxp/src/com/sun/org/apache/bcel/internal/util/ClassPath.java
@@ -66,6 +66,7 @@ import java.io.*;
* Responsible for loading (class) files from the CLASSPATH. Inspired by
* sun.tools.ClassPath.
*
+ * @version $Id: ClassPath.java,v 1.4 2007-07-19 04:34:52 ofung Exp $
* @author M. Dahm
*/
public class ClassPath implements Serializable {
@@ -83,7 +84,7 @@ public class ClassPath implements Serializable {
ArrayList vec = new ArrayList();
for(StringTokenizer tok=new StringTokenizer(class_path,
- System.getProperty("path.separator"));
+ SecuritySupport.getSystemProperty("path.separator"));
tok.hasMoreTokens();)
{
String path = tok.nextToken();
@@ -92,7 +93,7 @@ public class ClassPath implements Serializable {
File file = new File(path);
try {
- if(file.exists()) {
+ if(SecuritySupport.getFileExists(file)) {
if(file.isDirectory())
vec.add(new Dir(path));
else
@@ -143,8 +144,9 @@ public class ClassPath implements Serializable {
String name = tok.nextToken();
File file = new File(name);
- if(file.exists())
+ if(SecuritySupport.getFileExists(file)) {
list.add(name);
+ }
}
}
}
@@ -159,9 +161,9 @@ public class ClassPath implements Serializable {
String class_path, boot_path, ext_path;
try {
- class_path = System.getProperty("java.class.path");
- boot_path = System.getProperty("sun.boot.class.path");
- ext_path = System.getProperty("java.ext.dirs");
+ class_path = SecuritySupport.getSystemProperty("java.class.path");
+ boot_path = SecuritySupport.getSystemProperty("sun.boot.class.path");
+ ext_path = SecuritySupport.getSystemProperty("java.ext.dirs");
}
catch (SecurityException e) {
return "";
@@ -176,8 +178,8 @@ public class ClassPath implements Serializable {
getPathComponents(ext_path, dirs);
for(Iterator e = dirs.iterator(); e.hasNext(); ) {
- File ext_dir = new File((String)e.next());
- String[] extensions = ext_dir.list(new FilenameFilter() {
+ File ext_dir = new File((String)e.next());
+ String[] extensions = SecuritySupport.getFileList(ext_dir, new FilenameFilter() {
public boolean accept(File dir, String name) {
name = name.toLowerCase();
return name.endsWith(".zip") || name.endsWith(".jar");
@@ -342,7 +344,7 @@ public class ClassPath implements Serializable {
final File file = new File(dir + File.separatorChar +
name.replace('.', File.separatorChar) + suffix);
- return file.exists()? new ClassFile() {
+ return SecuritySupport.getFileExists(file)? new ClassFile() {
public InputStream getInputStream() throws IOException { return new FileInputStream(file); }
public String getPath() { try {
diff --git a/jaxp/src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java b/jaxp/src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java
index e0d434c..1540f6d 100755
--- a/jaxp/src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java
+++ b/jaxp/src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java
@@ -72,6 +72,7 @@ import java.lang.reflect.*;
*
*
+ * @version $Id: JavaWrapper.java,v 1.3 2007-07-19 04:34:52 ofung Exp $
* @author M. Dahm
* @see ClassLoader
*/
@@ -79,7 +80,7 @@ public class JavaWrapper {
private java.lang.ClassLoader loader;
private static java.lang.ClassLoader getClassLoader() {
- String s = System.getProperty("bcel.classloader");
+ String s = SecuritySupport.getSystemProperty("bcel.classloader");
if((s == null) || "".equals(s))
s = "com.sun.org.apache.bcel.internal.util.ClassLoader";
diff --git a/jaxp/src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java b/jaxp/src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java
new file mode 100644
index 0000000..22f8d39
--- /dev/null
+++ b/jaxp/src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java
@@ -0,0 +1,223 @@
+/*
+ * reserved comment block
+ * DO NOT REMOVE OR ALTER!
+ */
+/*
+ * Copyright 2002-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.org.apache.bcel.internal.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FilenameFilter;
+import java.io.InputStream;
+import java.lang.ClassLoader;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.ListResourceBundle;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * This class is duplicated for each subpackage so keep it in sync. It is
+ * package private and therefore is not exposed as part of any API.
+ *
+ * @xerces.internal
+ */
+public final class SecuritySupport {
+
+ private static final SecuritySupport securitySupport = new SecuritySupport();
+
+ /**
+ * Return an instance of this class.
+ */
+ public static SecuritySupport getInstance() {
+ return securitySupport;
+ }
+
+ static ClassLoader getContextClassLoader() {
+ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ ClassLoader cl = null;
+ try {
+ cl = Thread.currentThread().getContextClassLoader();
+ } catch (SecurityException ex) {
+ }
+ return cl;
+ }
+ });
+ }
+
+ static ClassLoader getSystemClassLoader() {
+ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ ClassLoader cl = null;
+ try {
+ cl = ClassLoader.getSystemClassLoader();
+ } catch (SecurityException ex) {
+ }
+ return cl;
+ }
+ });
+ }
+
+ static ClassLoader getParentClassLoader(final ClassLoader cl) {
+ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ ClassLoader parent = null;
+ try {
+ parent = cl.getParent();
+ } catch (SecurityException ex) {
+ }
+
+ // eliminate loops in case of the boot
+ // ClassLoader returning itself as a parent
+ return (parent == cl) ? null : parent;
+ }
+ });
+ }
+
+ public static String getSystemProperty(final String propName) {
+ return (String) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return System.getProperty(propName);
+ }
+ });
+ }
+
+ static FileInputStream getFileInputStream(final File file)
+ throws FileNotFoundException {
+ try {
+ return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Object run() throws FileNotFoundException {
+ return new FileInputStream(file);
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (FileNotFoundException) e.getException();
+ }
+ }
+
+ /**
+ * Return resource using the same classloader for the ObjectFactory by
+ * default or bootclassloader when Security Manager is in place
+ */
+ public static InputStream getResourceAsStream(final String name) {
+ if (System.getSecurityManager() != null) {
+ return getResourceAsStream(null, name);
+ } else {
+ return getResourceAsStream(findClassLoader(), name);
+ }
+ }
+
+ public static InputStream getResourceAsStream(final ClassLoader cl,
+ final String name) {
+ return (InputStream) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ InputStream ris;
+ if (cl == null) {
+ ris = Object.class.getResourceAsStream("/" + name);
+ } else {
+ ris = cl.getResourceAsStream(name);
+ }
+ return ris;
+ }
+ });
+ }
+
+ /**
+ * Gets a resource bundle using the specified base name, the default locale,
+ * and the caller's class loader.
+ *
+ * @param bundle the base name of the resource bundle, a fully qualified
+ * class name
+ * @return a resource bundle for the given base name and the default locale
+ */
+ public static ListResourceBundle getResourceBundle(String bundle) {
+ return getResourceBundle(bundle, Locale.getDefault());
+ }
+
+ /**
+ * Gets a resource bundle using the specified base name and locale, and the
+ * caller's class loader.
+ *
+ * @param bundle the base name of the resource bundle, a fully qualified
+ * class name
+ * @param locale the locale for which a resource bundle is desired
+ * @return a resource bundle for the given base name and locale
+ */
+ public static ListResourceBundle getResourceBundle(final String bundle, final Locale locale) {
+ return AccessController.doPrivileged(new PrivilegedAction() {
+ public ListResourceBundle run() {
+ try {
+ return (ListResourceBundle) ResourceBundle.getBundle(bundle, locale);
+ } catch (MissingResourceException e) {
+ try {
+ return (ListResourceBundle) ResourceBundle.getBundle(bundle, new Locale("en", "US"));
+ } catch (MissingResourceException e2) {
+ throw new MissingResourceException(
+ "Could not load any resource bundle by " + bundle, bundle, "");
+ }
+ }
+ }
+ });
+ }
+
+ public static String[] getFileList(final File f, final FilenameFilter filter) {
+ return ((String[]) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return f.list(filter);
+ }
+ }));
+ }
+
+ public static boolean getFileExists(final File f) {
+ return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return f.exists() ? Boolean.TRUE : Boolean.FALSE;
+ }
+ })).booleanValue();
+ }
+
+ static long getLastModified(final File f) {
+ return ((Long) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return new Long(f.lastModified());
+ }
+ })).longValue();
+ }
+
+
+ /**
+ * Figure out which ClassLoader to use.
+ */
+ public static ClassLoader findClassLoader()
+ {
+ if (System.getSecurityManager()!=null) {
+ //this will ensure bootclassloader is used
+ return null;
+ } else {
+ return SecuritySupport.class.getClassLoader();
+ }
+ } // findClassLoader():ClassLoader
+
+ private SecuritySupport() {
+ }
+}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLMessages.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLMessages.java
index 2c2f3c1..00d11e9 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLMessages.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLMessages.java
@@ -22,68 +22,72 @@
*/
package com.sun.org.apache.xalan.internal.res;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.util.ListResourceBundle;
import com.sun.org.apache.xpath.internal.res.XPATHMessages;
/**
- * Sets things up for issuing error messages. This class is misnamed, and
- * should be called XalanMessages, or some such.
+ * Sets things up for issuing error messages. This class is misnamed, and should
+ * be called XalanMessages, or some such.
+ *
* @xsl.usage internal
*/
-public class XSLMessages extends XPATHMessages
-{
-
- /** The language specific resource object for Xalan messages. */
- private static ListResourceBundle XSLTBundle = null;
-
- /** The class name of the Xalan error message string table. */
- private static final String XSLT_ERROR_RESOURCES =
- "com.sun.org.apache.xalan.internal.res.XSLTErrorResources";
+public class XSLMessages extends XPATHMessages {
- /**
- * Creates a message from the specified key and replacement
- * arguments, localized to the given locale.
- *
- * @param msgKey The key for the message text.
- * @param args The arguments to be used as replacement text
- * in the message created.
- *
- * @return The formatted message string.
- */
- public static final String createMessage(String msgKey, Object args[]) //throws Exception
- {
- if (XSLTBundle == null)
- XSLTBundle = loadResourceBundle(XSLT_ERROR_RESOURCES);
+ /**
+ * The language specific resource object for Xalan messages.
+ */
+ private static ListResourceBundle XSLTBundle = null;
+ /**
+ * The class name of the Xalan error message string table.
+ */
+ private static final String XSLT_ERROR_RESOURCES =
+ "com.sun.org.apache.xalan.internal.res.XSLTErrorResources";
- if (XSLTBundle != null)
+ /**
+ * Creates a message from the specified key and replacement arguments,
+ * localized to the given locale.
+ *
+ * @param msgKey The key for the message text.
+ * @param args The arguments to be used as replacement text in the message
+ * created.
+ *
+ * @return The formatted message string.
+ */
+ public static String createMessage(String msgKey, Object args[]) //throws Exception
{
- return createMsg(XSLTBundle, msgKey, args);
- }
- else
- return "Could not load any resource bundles.";
- }
+ if (XSLTBundle == null) {
+ XSLTBundle = SecuritySupport.getResourceBundle(XSLT_ERROR_RESOURCES);
+ }
- /**
- * Creates a message from the specified key and replacement
- * arguments, localized to the given locale.
- *
- * @param msgKey The key for the message text.
- * @param args The arguments to be used as replacement text
- * in the message created.
- *
- * @return The formatted warning string.
- */
- public static final String createWarning(String msgKey, Object args[]) //throws Exception
- {
- if (XSLTBundle == null)
- XSLTBundle = loadResourceBundle(XSLT_ERROR_RESOURCES);
+ if (XSLTBundle != null) {
+ return createMsg(XSLTBundle, msgKey, args);
+ } else {
+ return "Could not load any resource bundles.";
+ }
+ }
- if (XSLTBundle != null)
+ /**
+ * Creates a message from the specified key and replacement arguments,
+ * localized to the given locale.
+ *
+ * @param msgKey The key for the message text.
+ * @param args The arguments to be used as replacement text in the message
+ * created.
+ *
+ * @return The formatted warning string.
+ */
+ public static String createWarning(String msgKey, Object args[]) //throws Exception
{
- return createMsg(XSLTBundle, msgKey, args);
+ if (XSLTBundle == null) {
+ XSLTBundle = SecuritySupport.getResourceBundle(XSLT_ERROR_RESOURCES);
+ }
+
+ if (XSLTBundle != null) {
+ return createMsg(XSLTBundle, msgKey, args);
+ } else {
+ return "Could not load any resource bundles.";
+ }
}
- else
- return "Could not load any resource bundles.";
- }
}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java
index 65d4ae1..aea4fff 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java
index 7700f04..d528a26 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_de extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java
index f6031bf..68fda6d 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_es extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java
index 0b96e29..eb37309 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_fr extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java
index fcddceb..ff33502 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_it extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java
index 9556671..ed1a024 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_ja extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java
index 49534e0..9a57758 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_ko extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java
index d4fafaf..62341a6 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java
@@ -1449,68 +1449,5 @@ public class XSLTErrorResources_pt_BR extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java
index 12808a6..ee85426 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_sv extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java
index e43497d..1c3a0c7 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_zh_CN extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java
index 4e172c5..07ad5af 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java
@@ -1448,68 +1448,4 @@ public class XSLTErrorResources_zh_TW extends ListResourceBundle
public static final String QUERY_HEADER = "PATTERN ";
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XSLTErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XSLTErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XSLTErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
-
-}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java b/jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java
index 8e489bb..ff9b1a6 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java
@@ -54,6 +54,8 @@ public class ObjectFactory {
//
// Constants
//
+ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal";
+ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal";
// name of default properties file to look for in JDK's jre/lib directory
private static final String DEFAULT_PROPERTIES_FILENAME =
@@ -514,12 +516,17 @@ public class ObjectFactory {
//class. Restrict the access to the package classes as specified in java.security policy.
SecurityManager security = System.getSecurityManager();
try{
- if (security != null){
+ if (security != null){
+ if (className.startsWith(XALAN_INTERNAL) ||
+ className.startsWith(XERCES_INTERNAL)) {
+ cl = null;
+ } else {
final int lastDot = className.lastIndexOf(".");
String packageName = className;
if (lastDot != -1) packageName = className.substring(0, lastDot);
security.checkPackageAccess(packageName);
- }
+ }
+ }
}catch(SecurityException e){
throw e;
}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java b/jaxp/src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java
index 4437a48..b813b4c 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java
@@ -32,10 +32,14 @@ import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.util.ListResourceBundle;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
/**
- * This class is duplicated for each subpackage so keep it in sync.
- * It is package private and therefore is not exposed as part of any API.
+ * This class is duplicated for each subpackage so keep it in sync. It is
+ * package private and therefore is not exposed as part of any API.
*
* @xerces.internal
*/
@@ -51,39 +55,39 @@ public final class SecuritySupport {
}
static ClassLoader getContextClassLoader() {
- return (ClassLoader)
- AccessController.doPrivileged(new PrivilegedAction() {
+ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
ClassLoader cl = null;
try {
cl = Thread.currentThread().getContextClassLoader();
- } catch (SecurityException ex) { }
+ } catch (SecurityException ex) {
+ }
return cl;
}
});
}
static ClassLoader getSystemClassLoader() {
- return (ClassLoader)
- AccessController.doPrivileged(new PrivilegedAction() {
+ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
ClassLoader cl = null;
try {
cl = ClassLoader.getSystemClassLoader();
- } catch (SecurityException ex) {}
+ } catch (SecurityException ex) {
+ }
return cl;
}
});
}
static ClassLoader getParentClassLoader(final ClassLoader cl) {
- return (ClassLoader)
- AccessController.doPrivileged(new PrivilegedAction() {
+ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
ClassLoader parent = null;
try {
parent = cl.getParent();
- } catch (SecurityException ex) {}
+ } catch (SecurityException ex) {
+ }
// eliminate loops in case of the boot
// ClassLoader returning itself as a parent
@@ -93,20 +97,25 @@ public final class SecuritySupport {
}
public static String getSystemProperty(final String propName) {
- return (String)
- AccessController.doPrivileged(new PrivilegedAction() {
+ return (String) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return System.getProperty(propName);
}
});
}
+ public static String getSystemProperty(final String propName, final String def) {
+ return (String) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return System.getProperty(propName, def);
+ }
+ });
+ }
+
static FileInputStream getFileInputStream(final File file)
- throws FileNotFoundException
- {
+ throws FileNotFoundException {
try {
- return (FileInputStream)
- AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() {
public Object run() throws FileNotFoundException {
return new FileInputStream(file);
}
@@ -115,9 +124,10 @@ public final class SecuritySupport {
throw (FileNotFoundException)e.getException();
}
}
+
/**
- * Return resource using the same classloader for the ObjectFactory by default
- * or bootclassloader when Security Manager is in place
+ * Return resource using the same classloader for the ObjectFactory by
+ * default or bootclassloader when Security Manager is in place
*/
public static InputStream getResourceAsStream(final String name) {
if (System.getSecurityManager()!=null) {
@@ -128,10 +138,8 @@ public final class SecuritySupport {
}
public static InputStream getResourceAsStream(final ClassLoader cl,
- final String name)
- {
- return (InputStream)
- AccessController.doPrivileged(new PrivilegedAction() {
+ final String name) {
+ return (InputStream) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
InputStream ris;
if (cl == null) {
@@ -144,9 +152,40 @@ public final class SecuritySupport {
});
}
- static boolean getFileExists(final File f) {
- return ((Boolean)
- AccessController.doPrivileged(new PrivilegedAction() {
+ /**
+ * Gets a resource bundle using the specified base name, the default locale, and the caller's class loader.
+ * @param bundle the base name of the resource bundle, a fully qualified class name
+ * @return a resource bundle for the given base name and the default locale
+ */
+ public static ListResourceBundle getResourceBundle(String bundle) {
+ return getResourceBundle(bundle, Locale.getDefault());
+ }
+
+ /**
+ * Gets a resource bundle using the specified base name and locale, and the caller's class loader.
+ * @param bundle the base name of the resource bundle, a fully qualified class name
+ * @param locale the locale for which a resource bundle is desired
+ * @return a resource bundle for the given base name and locale
+ */
+ public static ListResourceBundle getResourceBundle(final String bundle, final Locale locale) {
+ return AccessController.doPrivileged(new PrivilegedAction() {
+ public ListResourceBundle run() {
+ try {
+ return (ListResourceBundle)ResourceBundle.getBundle(bundle, locale);
+ } catch (MissingResourceException e) {
+ try {
+ return (ListResourceBundle)ResourceBundle.getBundle(bundle, new Locale("en", "US"));
+ } catch (MissingResourceException e2) {
+ throw new MissingResourceException(
+ "Could not load any resource bundle by " + bundle, bundle, "");
+ }
+ }
+ }
+ });
+ }
+
+ public static boolean getFileExists(final File f) {
+ return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return f.exists() ? Boolean.TRUE : Boolean.FALSE;
}
@@ -154,13 +193,14 @@ public final class SecuritySupport {
}
static long getLastModified(final File f) {
- return ((Long)
- AccessController.doPrivileged(new PrivilegedAction() {
+ return ((Long) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return new Long(f.lastModified());
}
})).longValue();
}
- private SecuritySupport () {}
+
+ private SecuritySupport() {
+ }
}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java b/jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java
index 8940d05..928da3e 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java
@@ -23,6 +23,7 @@
package com.sun.org.apache.xalan.internal.xslt;
import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.io.File;
import java.io.FileWriter;
@@ -574,7 +575,7 @@ public class EnvironmentCheck
// Grab java version for later use
try
{
- String javaVersion = System.getProperty("java.version");
+ String javaVersion = SecuritySupport.getSystemProperty("java.version");
h.put("java.version", javaVersion);
}
@@ -593,7 +594,7 @@ public class EnvironmentCheck
{
// This is present in all JVM's
- String cp = System.getProperty("java.class.path");
+ String cp = SecuritySupport.getSystemProperty("java.class.path");
h.put("java.class.path", cp);
@@ -603,7 +604,7 @@ public class EnvironmentCheck
h.put(FOUNDCLASSES + "java.class.path", classpathJars);
// Also check for JDK 1.2+ type classpaths
- String othercp = System.getProperty("sun.boot.class.path");
+ String othercp = SecuritySupport.getSystemProperty("sun.boot.class.path");
if (null != othercp)
{
@@ -617,7 +618,7 @@ public class EnvironmentCheck
//@todo NOTE: We don't actually search java.ext.dirs for
// *.jar files therein! This should be updated
- othercp = System.getProperty("java.ext.dirs");
+ othercp = SecuritySupport.getSystemProperty("java.ext.dirs");
if (null != othercp)
{
@@ -1005,7 +1006,7 @@ public class EnvironmentCheck
{
Class clazz = ObjectFactory.findProviderClass(DOM_CLASS, true);
- Method method = clazz.getMethod(DOM_LEVEL3_METHOD, null);
+ Method method = clazz.getMethod(DOM_LEVEL3_METHOD, (Class>[])null);
// If we succeeded, we have loaded interfaces from a
// level 3 DOM somewhere
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xslt/Process.java b/jaxp/src/com/sun/org/apache/xalan/internal/xslt/Process.java
index 216c4cf..67aa704 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xslt/Process.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xslt/Process.java
@@ -57,6 +57,7 @@ import com.sun.org.apache.xalan.internal.res.XSLMessages;
import com.sun.org.apache.xalan.internal.res.XSLTErrorResources;
import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
import com.sun.org.apache.xalan.internal.utils.ConfigurationError;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
//J2SE does not support Xalan interpretive
/*
@@ -180,7 +181,7 @@ public class Process
java.io.PrintWriter diagnosticsWriter = new PrintWriter(System.err, true);
java.io.PrintWriter dumpWriter = diagnosticsWriter;
ResourceBundle resbundle =
- (XSLMessages.loadResourceBundle(
+ (SecuritySupport.getResourceBundle(
com.sun.org.apache.xml.internal.utils.res.XResourceBundle.ERROR_RESOURCES));
String flavor = "s2s";
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java
index 3cf487a..80ce77b 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java
@@ -410,7 +410,7 @@ public class Parser implements Constants, ContentHandler {
}
}
catch (TypeCheckError e) {
- reportError(ERROR, new ErrorMsg(e));
+ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
}
}
@@ -430,7 +430,7 @@ public class Parser implements Constants, ContentHandler {
}
catch (IOException e) {
if (_xsltc.debug()) e.printStackTrace();
- reportError(ERROR,new ErrorMsg(e));
+ reportError(ERROR,new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
}
catch (SAXException e) {
Throwable ex = e.getException();
@@ -438,15 +438,15 @@ public class Parser implements Constants, ContentHandler {
e.printStackTrace();
if (ex != null) ex.printStackTrace();
}
- reportError(ERROR, new ErrorMsg(e));
+ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
}
catch (CompilerException e) {
if (_xsltc.debug()) e.printStackTrace();
- reportError(ERROR, new ErrorMsg(e));
+ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
}
catch (Exception e) {
if (_xsltc.debug()) e.printStackTrace();
- reportError(ERROR, new ErrorMsg(e));
+ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
}
return null;
}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java
index e29915c..4540278 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java
@@ -41,10 +41,12 @@ import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
import com.sun.org.apache.bcel.internal.classfile.JavaClass;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util;
import com.sun.org.apache.xml.internal.dtm.DTM;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
@@ -278,7 +280,7 @@ public final class XSLTC {
return compile(input, _className);
}
catch (IOException e) {
- _parser.reportError(Constants.FATAL, new ErrorMsg(e));
+ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
return false;
}
}
@@ -297,7 +299,7 @@ public final class XSLTC {
return compile(input, name);
}
catch (IOException e) {
- _parser.reportError(Constants.FATAL, new ErrorMsg(e));
+ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
return false;
}
}
@@ -382,11 +384,11 @@ public final class XSLTC {
}
catch (Exception e) {
/*if (_debug)*/ e.printStackTrace();
- _parser.reportError(Constants.FATAL, new ErrorMsg(e));
+ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
}
catch (Error e) {
if (_debug) e.printStackTrace();
- _parser.reportError(Constants.FATAL, new ErrorMsg(e));
+ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
}
finally {
_reader = null; // reset this here to be sure it is not re-used
@@ -594,7 +596,7 @@ public final class XSLTC {
*/
public boolean setDestDirectory(String dstDirName) {
final File dir = new File(dstDirName);
- if (dir.exists() || dir.mkdirs()) {
+ if (SecuritySupport.getFileExists(dir) || dir.mkdirs()) {
_destDir = dir;
return true;
}
@@ -767,7 +769,7 @@ public final class XSLTC {
String parentDir = outFile.getParent();
if (parentDir != null) {
File parentFile = new File(parentDir);
- if (!parentFile.exists())
+ if (!SecuritySupport.getFileExists(parentFile))
parentFile.mkdirs();
}
}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java
index d2e68d4..de37839 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java
@@ -997,7 +997,12 @@ public class ErrorMessages extends ListResourceBundle {
"kilobytes. This is usually caused by templates in a stylesheet " +
"that are very large. Try restructuring your stylesheet to use " +
"smaller templates."
- }
+ },
+
+ {ErrorMsg.DESERIALIZE_TRANSLET_ERR, "When Java security is enabled, " +
+ "support for deserializing TemplatesImpl is disabled." +
+ "This can be overridden by setting the jdk.xml.enableTemplatesImplDeserialization" +
+ " system property to true."}
};
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java
index 1b1a80d..faa7e99 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java
@@ -23,6 +23,7 @@
package com.sun.org.apache.xalan.internal.xsltc.compiler.util;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
@@ -46,6 +47,8 @@ public final class ErrorMsg {
Object[] _params = null;
private boolean _isWarningError;
+ Throwable _cause;
+
// Compiler error messages
public static final String MULTIPLE_STYLESHEET_ERR = "MULTIPLE_STYLESHEET_ERR";
public static final String TEMPLATE_REDEF_ERR = "TEMPLATE_REDEF_ERR";
@@ -165,6 +168,8 @@ public final class ErrorMsg {
public static final String OUTLINE_ERR_METHOD_TOO_BIG =
"OUTLINE_ERR_METHOD_TOO_BIG";
+ public static final String DESERIALIZE_TRANSLET_ERR = "DESERIALIZE_TEMPLATES_ERR";
+
// All error messages are localized and are stored in resource bundles.
// This array and the following 4 strings are read from that bundle.
private static ResourceBundle _bundle;
@@ -175,7 +180,7 @@ public final class ErrorMsg {
public final static String RUNTIME_ERROR_KEY = "RUNTIME_ERROR_KEY";
static {
- _bundle = ResourceBundle.getBundle(
+ _bundle = SecuritySupport.getResourceBundle(
"com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMessages",
Locale.getDefault());
}
@@ -185,10 +190,11 @@ public final class ErrorMsg {
_line = 0;
}
- public ErrorMsg(Throwable e) {
- _code = null;
+ public ErrorMsg(String code, Throwable e) {
+ _code = code;
_message = e.getMessage();
_line = 0;
+ _cause = e;
}
public ErrorMsg(String message, int line) {
@@ -240,6 +246,10 @@ public final class ErrorMsg {
_params[1] = param2;
}
+ public Throwable getCause() {
+ return _cause;
+ }
+
private String getFileName(SyntaxTreeNode node) {
Stylesheet stylesheet = node.getStylesheet();
if (stylesheet != null)
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java
index a7409ce..f1f9222 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java
@@ -26,6 +26,7 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler.util;
import java.util.StringTokenizer;
import com.sun.org.apache.bcel.internal.generic.Type;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import com.sun.org.apache.xalan.internal.xsltc.compiler.Constants;
import com.sun.org.apache.xml.internal.utils.XML11Char;
@@ -37,7 +38,7 @@ public final class Util {
private static char filesep;
static {
- String temp = System.getProperty("file.separator", "/");
+ String temp = SecuritySupport.getSystemProperty("file.separator", "/");
filesep = temp.charAt(0);
}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java
index 7057a32..aaf997a 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java
@@ -33,6 +33,7 @@ import com.sun.org.apache.xalan.internal.xsltc.TransletException;
import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
import com.sun.org.apache.xml.internal.utils.StringComparable;
import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
/**
* Base class for sort records containing application specific sort keys
@@ -112,7 +113,7 @@ public abstract class NodeSortRecord {
try {
// -- W. Eliot Kimber (eliot@isogen.com)
colFactClassname =
- System.getProperty("com.sun.org.apache.xalan.internal.xsltc.COLLATOR_FACTORY");
+ SecuritySupport.getSystemProperty("com.sun.org.apache.xalan.internal.xsltc.COLLATOR_FACTORY");
}
catch (SecurityException e) {
// If we can't read the propery, just use default collator
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java
index fc388d9..554e1fd 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java
@@ -23,6 +23,7 @@
package com.sun.org.apache.xalan.internal.xsltc.runtime;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.FieldPosition;
@@ -1583,7 +1584,7 @@ public final class BasisLibrary {
static {
String resource = "com.sun.org.apache.xalan.internal.xsltc.runtime.ErrorMessages";
- m_bundle = ResourceBundle.getBundle(resource);
+ m_bundle = SecuritySupport.getResourceBundle(resource);
}
/**
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java
index 11e14f0..2b04e01 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java
@@ -23,6 +23,7 @@
package com.sun.org.apache.xalan.internal.xsltc.runtime.output;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.Writer;
@@ -36,7 +37,7 @@ class WriterOutputBuffer implements OutputBuffer {
static {
// Set a larger buffer size for Solaris
- final String osName = System.getProperty("os.name");
+ final String osName = SecuritySupport.getSystemProperty("os.name");
if (osName.equalsIgnoreCase("solaris")) {
BUFFER_SIZE = 32 * KB;
}
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java
index 4ebf238..a3bd7f6 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java
@@ -43,6 +43,7 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;
import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
/**
* @author Morten Jorgensen
@@ -52,6 +53,8 @@ import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
*/
public final class TemplatesImpl implements Templates, Serializable {
static final long serialVersionUID = 673094361519270707L;
+ public final static String DESERIALIZE_TRANSLET = "jdk.xml.enableTemplatesImplDeserialization";
+
/**
* Name of the superclass of all translets. This is needed to
* determine which, among all classes comprising a translet,
@@ -186,6 +189,15 @@ public final class TemplatesImpl implements Templates, Serializable {
private void readObject(ObjectInputStream is)
throws IOException, ClassNotFoundException
{
+ SecurityManager security = System.getSecurityManager();
+ if (security != null){
+ String temp = SecuritySupport.getSystemProperty(DESERIALIZE_TRANSLET);
+ if (temp == null || !(temp.length()==0 || temp.equalsIgnoreCase("true"))) {
+ ErrorMsg err = new ErrorMsg(ErrorMsg.DESERIALIZE_TRANSLET_ERR);
+ throw new UnsupportedOperationException(err.toString());
+ }
+ }
+
is.defaultReadObject();
if (is.readBoolean()) {
_uriResolver = (URIResolver) is.readObject();
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java
index 26b2f56..78d96aa 100755
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java
@@ -73,7 +73,7 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
import com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager;
import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
import com.sun.org.apache.xalan.internal.utils.FactoryImpl;
-
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import org.xml.sax.InputSource;
import org.xml.sax.XMLFilter;
@@ -881,8 +881,14 @@ public class TransformerFactoryImpl
// Check that the transformation went well before returning
if (bytecodes == null) {
- ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR);
- TransformerConfigurationException exc = new TransformerConfigurationException(err.toString());
+ Vector errs = xsltc.getErrors();
+ ErrorMsg err = null;
+ if (errs != null) {
+ err = (ErrorMsg)errs.get(errs.size()-1);
+ } else {
+ err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR);
+ }
+ TransformerConfigurationException exc = new TransformerConfigurationException(err.toString(), err.getCause());
// Pass compiler errors to the error listener
if (_errorListener != null) {
@@ -1229,7 +1235,7 @@ public class TransformerFactoryImpl
// Find the parent directory of the translet.
String transletParentDir = transletFile.getParent();
if (transletParentDir == null)
- transletParentDir = System.getProperty("user.dir");
+ transletParentDir = SecuritySupport.getSystemProperty("user.dir");
File transletParentFile = new File(transletParentDir);
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java b/jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java
index 8747181..f7d131f 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java
@@ -20,10 +20,10 @@
package com.sun.org.apache.xerces.internal.dom;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import java.util.PropertyResourceBundle;
/**
* Used to format DOM error messages, using the system locale.
@@ -31,6 +31,7 @@ import java.util.PropertyResourceBundle;
* @xerces.internal
*
* @author Sandy Gao, IBM
+ * @version $Id: DOMMessageFormatter.java,v 1.6 2010-11-01 04:39:38 joehw Exp $
*/
public class DOMMessageFormatter {
public static final String DOM_DOMAIN = "http://www.w3.org/dom/DOMTR";
@@ -122,13 +123,13 @@ public class DOMMessageFormatter {
*/
public static void init(){
if (locale != null) {
- domResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages", locale);
- serResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages", locale);
- xmlResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ domResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages", locale);
+ serResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages", locale);
+ xmlResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
}else{
- domResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages");
- serResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages");
- xmlResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ domResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages");
+ serResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages");
+ xmlResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
}
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java
index 84e2c81..b761fc4 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java
@@ -51,6 +51,7 @@ import com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier;
import com.sun.org.apache.xerces.internal.xni.XNIException;
import com.sun.org.apache.xerces.internal.xni.parser.*;
import com.sun.org.apache.xerces.internal.impl.Constants;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import com.sun.xml.internal.stream.Entity;
import com.sun.org.apache.xerces.internal.xni.Augmentations;
@@ -1727,7 +1728,7 @@ protected static final String PARSER_SETTINGS =
// get the user.dir property
String userDir = "";
try {
- userDir = System.getProperty("user.dir");
+ userDir = SecuritySupport.getSystemProperty("user.dir");
}
catch (SecurityException se) {
}
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java
index 9a0e0db..f38b1d3 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java
@@ -20,6 +20,7 @@
package com.sun.org.apache.xerces.internal.impl.dv;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import java.util.MissingResourceException;
@@ -34,6 +35,7 @@ import java.util.MissingResourceException;
*
* @author Sandy Gao, IBM
*
+ * @version $Id: DatatypeException.java,v 1.6 2010-11-01 04:39:43 joehw Exp $
*/
public class DatatypeException extends Exception {
@@ -84,7 +86,7 @@ public class DatatypeException extends Exception {
*/
public String getMessage() {
ResourceBundle resourceBundle = null;
- resourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages");
+ resourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages");
if (resourceBundle == null)
throw new MissingResourceException("Property file not found!", "com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", key);
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java
index 98a8e87..adb8c44 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java
@@ -20,12 +20,11 @@
package com.sun.org.apache.xerces.internal.impl.msg;
+import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import java.util.PropertyResourceBundle;
-
-import com.sun.org.apache.xerces.internal.util.MessageFormatter;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +33,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter.java 3020 2011-02-28 23:51:33Z joehw $
+ * @version $Id: XMLMessageFormatter.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter implements MessageFormatter {
@@ -72,12 +71,12 @@ public class XMLMessageFormatter implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java
index 686371c..1f9d281 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_de.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_de.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_de implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_de implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java
index 437d33a..164a251 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_es.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_es.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_es implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_es implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java
index 2acdd66..e4e4129 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_fr.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_fr.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_fr implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_fr implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java
index cd288bd..e2dd513 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_it.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_it.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_it implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_it implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java
index e232fe0..b3fb856 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_ja.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_ja.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_ja implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_ja implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java
index e874485..3de7757 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_ko.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_ko.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_ko implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_ko implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java
index 15957b7..59b3d1d 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_pt_BR.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_pt_BR.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_pt_BR implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_pt_BR implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java
index 4c220a7..00217ae 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_sv.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_sv.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_sv implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_sv implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java
index bebf698..4cfa968 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_zh_CN.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_zh_CN.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_zh_CN implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_zh_CN implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java
index e594e85..4f34fa2 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java
@@ -26,6 +26,7 @@ import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
@@ -34,7 +35,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Eric Ye, IBM
- * @version $Id: XMLMessageFormatter_zh_TW.java 3021 2011-03-01 00:12:28Z joehw $
+ * @version $Id: XMLMessageFormatter_zh_TW.java 3094 2012-03-21 05:50:01Z joehw $
*
*/
public class XMLMessageFormatter_zh_TW implements MessageFormatter {
@@ -72,12 +73,12 @@ public class XMLMessageFormatter_zh_TW implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java
index 089a724..ed1cda9 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java
@@ -20,6 +20,7 @@
package com.sun.org.apache.xerces.internal.impl.xpath.regex;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
@@ -95,10 +96,10 @@ class RegexParser {
public void setLocale(Locale locale) {
try {
if (locale != null) {
- this.resources = ResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message", locale);
+ this.resources = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message", locale);
}
else {
- this.resources = ResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message");
+ this.resources = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message");
}
}
catch (MissingResourceException mre) {
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java b/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java
index 1f1c616..0a51a3c 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java
@@ -20,11 +20,11 @@
package com.sun.org.apache.xerces.internal.impl.xs;
+import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import java.util.PropertyResourceBundle;
-import com.sun.org.apache.xerces.internal.util.MessageFormatter;
/**
@@ -34,6 +34,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
* @xerces.internal
*
* @author Elena Litani, IBM
+ * @version $Id: XSMessageFormatter.java,v 1.6 2010-11-01 04:39:55 joehw Exp $
*/
public class XSMessageFormatter implements MessageFormatter {
/**
@@ -66,12 +67,12 @@ public class XSMessageFormatter implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages");
}
String msg = fResourceBundle.getString(key);
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java b/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java
index ccf12a5..5c51053 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java
@@ -20,15 +20,16 @@
package com.sun.org.apache.xerces.internal.jaxp.validation;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import java.util.PropertyResourceBundle;
/**
*
Used to format JAXP Validation API error messages using a specified locale.
*
* @author Michael Glavassevich, IBM
+ * @version $Id: JAXPValidationMessageFormatter.java,v 1.5 2010-11-01 04:40:08 joehw Exp $
*/
final class JAXPValidationMessageFormatter {
@@ -54,11 +55,11 @@ final class JAXPValidationMessageFormatter {
ResourceBundle resourceBundle = null;
if (locale != null) {
resourceBundle =
- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages", locale);
+ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages", locale);
}
else {
resourceBundle =
- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages");
+ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java b/jaxp/src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java
index 7c1c12b..b964a8f 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java
@@ -20,15 +20,16 @@
package com.sun.org.apache.xerces.internal.util;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Locale;
import java.util.MissingResourceException;
-import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
/**
*
Used to format JAXP 1.3 Datatype API error messages using a specified locale.
*
* @author Neeraj Bajaj, Sun Microsystems
+ * @version $Id: DatatypeMessageFormatter.java,v 1.6 2010-11-01 04:40:14 joehw Exp $
*/
public class DatatypeMessageFormatter {
@@ -56,11 +57,11 @@ public class DatatypeMessageFormatter {
ResourceBundle resourceBundle = null;
if (locale != null) {
resourceBundle =
- PropertyResourceBundle.getBundle(BASE_NAME, locale);
+ SecuritySupport.getResourceBundle(BASE_NAME, locale);
}
else {
resourceBundle =
- PropertyResourceBundle.getBundle(BASE_NAME);
+ SecuritySupport.getResourceBundle(BASE_NAME);
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java b/jaxp/src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java
index afcfec3..29648a6 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java
@@ -19,16 +19,17 @@
*/
package com.sun.org.apache.xerces.internal.util;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import java.util.PropertyResourceBundle;
/**
* Used to format SAX error messages using a specified locale.
*
* @author Michael Glavassevich, IBM
*
+ * @version $Id: SAXMessageFormatter.java,v 1.6 2010-11-01 04:40:14 joehw Exp $
*/
public class SAXMessageFormatter {
@@ -54,11 +55,11 @@ public class SAXMessageFormatter {
ResourceBundle resourceBundle = null;
if (locale != null) {
resourceBundle =
- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages", locale);
+ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages", locale);
}
else {
resourceBundle =
- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages");
+ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages");
}
// format message
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java b/jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java
index c405a22..dd510b6 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java
@@ -61,6 +61,8 @@
package com.sun.org.apache.xerces.internal.util;
import com.sun.org.apache.xerces.internal.impl.Constants;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
/**
* This class is a container for parser settings that relate to
* security, or more specifically, it is intended to be used to prevent denial-of-service
@@ -77,6 +79,7 @@ import com.sun.org.apache.xerces.internal.impl.Constants;
*
* @author Neil Graham, IBM
*
+ * @version $Id: SecurityManager.java,v 1.5 2010-11-01 04:40:14 joehw Exp $
*/
public final class SecurityManager {
@@ -176,41 +179,48 @@ public final class SecurityManager {
private void readSystemProperties(){
- //TODO: also read SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT
- try {
- String value = System.getProperty(Constants.ENTITY_EXPANSION_LIMIT);
- if(value != null && !value.equals("")){
- entityExpansionLimit = Integer.parseInt(value);
- if (entityExpansionLimit < 0)
- entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
- }
- else
- entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
- }catch(Exception ex){}
-
- try {
- String value = System.getProperty(Constants.MAX_OCCUR_LIMIT);
- if(value != null && !value.equals("")){
- maxOccurLimit = Integer.parseInt(value);
- if (maxOccurLimit < 0)
- maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
- }
- else
- maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
- }catch(Exception ex){}
-
- try {
- String value = System.getProperty(Constants.SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT);
- if(value != null && !value.equals("")){
- fElementAttributeLimit = Integer.parseInt(value);
- if ( fElementAttributeLimit < 0)
- fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
- }
- else
- fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
+ //TODO: also read SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT
+ try {
+ String value = getSystemProperty(Constants.ENTITY_EXPANSION_LIMIT);
+ if(value != null && !value.equals("")){
+ entityExpansionLimit = Integer.parseInt(value);
+ if (entityExpansionLimit < 0)
+ entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
+ }
+ else
+ entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
+ }catch(Exception ex){}
+
+ try {
+ String value = getSystemProperty(Constants.MAX_OCCUR_LIMIT);
+ if(value != null && !value.equals("")){
+ maxOccurLimit = Integer.parseInt(value);
+ if (maxOccurLimit < 0)
+ maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
+ }
+ else
+ maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
+ }catch(Exception ex){}
+
+ try {
+ String value = getSystemProperty(Constants.SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT);
+ if(value != null && !value.equals("")){
+ fElementAttributeLimit = Integer.parseInt(value);
+ if ( fElementAttributeLimit < 0)
+ fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
+ }
+ else
+ fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
}catch(Exception ex){}
}
+ private String getSystemProperty(final String propName) {
+ return AccessController.doPrivileged(new PrivilegedAction() {
+ public String run() {
+ return System.getProperty(propName);
+ }
+ });
+ }
} // class SecurityManager
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java b/jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java
index afc0d45..63ce5e5 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java
@@ -48,6 +48,7 @@ public final class ObjectFactory {
//
// Constants
//
+ private static final String DEFAULT_INTERNAL_CLASSES = "com.sun.org.apache.";
// name of default properties file to look for in JDK's jre/lib directory
private static final String DEFAULT_PROPERTIES_FILENAME = "xerces.properties";
@@ -305,10 +306,14 @@ public final class ObjectFactory {
//restrict the access to package as speicified in java.security policy
SecurityManager security = System.getSecurityManager();
if (security != null) {
- final int lastDot = className.lastIndexOf(".");
- String packageName = className;
- if (lastDot != -1) packageName = className.substring(0, lastDot);
- security.checkPackageAccess(packageName);
+ if (className.startsWith(DEFAULT_INTERNAL_CLASSES)) {
+ cl = null;
+ } else {
+ final int lastDot = className.lastIndexOf(".");
+ String packageName = className;
+ if (lastDot != -1) packageName = className.substring(0, lastDot);
+ security.checkPackageAccess(packageName);
+ }
}
Class providerClass;
if (cl == null) {
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java b/jaxp/src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java
index 42ca503..b1d9d87 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java
@@ -29,6 +29,10 @@ import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.PropertyResourceBundle;
+import java.util.ResourceBundle;
/**
* This class is duplicated for each subpackage so keep it in sync.
@@ -141,6 +145,38 @@ public final class SecuritySupport {
});
}
+ /**
+ * Gets a resource bundle using the specified base name, the default locale, and the caller's class loader.
+ * @param bundle the base name of the resource bundle, a fully qualified class name
+ * @return a resource bundle for the given base name and the default locale
+ */
+ public static ResourceBundle getResourceBundle(String bundle) {
+ return getResourceBundle(bundle, Locale.getDefault());
+ }
+
+ /**
+ * Gets a resource bundle using the specified base name and locale, and the caller's class loader.
+ * @param bundle the base name of the resource bundle, a fully qualified class name
+ * @param locale the locale for which a resource bundle is desired
+ * @return a resource bundle for the given base name and locale
+ */
+ public static ResourceBundle getResourceBundle(final String bundle, final Locale locale) {
+ return AccessController.doPrivileged(new PrivilegedAction() {
+ public ResourceBundle run() {
+ try {
+ return PropertyResourceBundle.getBundle(bundle, locale);
+ } catch (MissingResourceException e) {
+ try {
+ return PropertyResourceBundle.getBundle(bundle, new Locale("en", "US"));
+ } catch (MissingResourceException e2) {
+ throw new MissingResourceException(
+ "Could not load any resource bundle by " + bundle, bundle, "");
+ }
+ }
+ }
+ });
+ }
+
static boolean getFileExists(final File f) {
return ((Boolean)
AccessController.doPrivileged(new PrivilegedAction() {
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java b/jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java
index 0e6adc1..0275615 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java
@@ -20,11 +20,11 @@
package com.sun.org.apache.xerces.internal.xinclude;
+import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import java.util.PropertyResourceBundle;
-import com.sun.org.apache.xerces.internal.util.MessageFormatter;
// TODO: fix error messages in XIncludeMessages.properties
/**
@@ -32,6 +32,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
*
* @author Peter McCracken, IBM
*
+ * @version $Id: XIncludeMessageFormatter.java,v 1.7 2010-11-01 04:40:18 joehw Exp $
*/
public class XIncludeMessageFormatter implements MessageFormatter {
@@ -61,12 +62,12 @@ public class XIncludeMessageFormatter implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages", locale);
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages");
}
String msg = fResourceBundle.getString(key);
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java b/jaxp/src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java
index 069cebd..639bdef 100755
--- a/jaxp/src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java
@@ -24,6 +24,7 @@ import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.PropertyResourceBundle;
import com.sun.org.apache.xerces.internal.util.MessageFormatter;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* XPointerMessageFormatter provides error messages for the XPointer Framework
@@ -31,6 +32,7 @@ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
*
* @xerces.internal
*
+ * @version $Id: XPointerMessageFormatter.java,v 1.5 2010-11-01 04:40:26 joehw Exp $
*/
class XPointerMessageFormatter implements MessageFormatter {
@@ -64,14 +66,14 @@ class XPointerMessageFormatter implements MessageFormatter {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
- fResourceBundle = PropertyResourceBundle.getBundle(
+ fResourceBundle = SecuritySupport.getResourceBundle(
"com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
- fResourceBundle = PropertyResourceBundle
- .getBundle("com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages");
+ fResourceBundle = SecuritySupport.getResourceBundle(
+ "com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages");
}
String msg = fResourceBundle.getString(key);
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/dtm/DTMManager.java b/jaxp/src/com/sun/org/apache/xml/internal/dtm/DTMManager.java
index 0c5c086..711814e 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/dtm/DTMManager.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/dtm/DTMManager.java
@@ -27,6 +27,7 @@ import com.sun.org.apache.xml.internal.res.XMLMessages;
import com.sun.org.apache.xml.internal.utils.PrefixResolver;
import com.sun.org.apache.xml.internal.utils.XMLStringFactory;
import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
/**
* A DTMManager instance can be used to create DTM and
@@ -383,7 +384,7 @@ public abstract class DTMManager
{
try
{
- debug = System.getProperty("dtm.debug") != null;
+ debug = SecuritySupport.getSystemProperty("dtm.debug") != null;
}
catch (SecurityException ex){}
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java
index f3dc2eb..8d1ab9b 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources extends ListResourceBundle
return contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java
index f7cb448..5dcb27c 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -443,67 +440,4 @@ public class XMLErrorResources_ca extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("ca", "ES"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java
index c0594bb..f3e3c3e 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -443,67 +440,4 @@ public class XMLErrorResources_cs extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("cs", "CZ"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java
index a53064e..ac19d0d 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources_de extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java
index 43ddf65..f35db36 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources_es extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java
index 7a61789..b5891d6 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources_fr extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java
index 77179c4..c7d01ff 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources_it extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java
index 1ce4af0..b1a811f 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources_ja extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java
index 5d1343e..9721569 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources_ko extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_pt_BR.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_pt_BR.java
index 8cf45bc..593f8b8 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_pt_BR.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_pt_BR.java
@@ -25,9 +25,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -463,67 +460,4 @@ public class XMLErrorResources_pt_BR extends ListResourceBundle
return msgCopy;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java
index cc86baa..1e4b293 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -443,67 +440,4 @@ public class XMLErrorResources_sk extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java
index 43c4778..4fa6a34 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -452,68 +449,4 @@ public class XMLErrorResources_sv extends ListResourceBundle
protected Object[][] getContents() {
return _contents;
}
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java
index 47730b4..58973c6 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -443,67 +440,4 @@ public class XMLErrorResources_tr extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("tr", "TR"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java
index 261509b..aa861e2 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources_zh_CN extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java
index f5fdad8..78df8fd 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java
@@ -24,9 +24,6 @@ package com.sun.org.apache.xml.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@ public class XMLErrorResources_zh_TW extends ListResourceBundle
return _contents;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XMLErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XMLErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XMLErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLMessages.java b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLMessages.java
index f1ac0e1..bb2f9bb 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/res/XMLMessages.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/res/XMLMessages.java
@@ -22,10 +22,9 @@
*/
package com.sun.org.apache.xml.internal.res;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.util.ListResourceBundle;
import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* A utility class for issuing XML error messages.
@@ -82,8 +81,9 @@ public class XMLMessages
*/
public static final String createXMLMessage(String msgKey, Object args[])
{
- if (XMLBundle == null)
- XMLBundle = loadResourceBundle(XML_ERROR_RESOURCES);
+ if (XMLBundle == null) {
+ XMLBundle = SecuritySupport.getResourceBundle(XML_ERROR_RESOURCES);
+ }
if (XMLBundle != null)
{
@@ -156,61 +156,4 @@ public class XMLMessages
return fmsg;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className The class name of the resource bundle.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static ListResourceBundle loadResourceBundle(String className)
- throws MissingResourceException
- {
- Locale locale = Locale.getDefault();
-
- try
- {
- return (ListResourceBundle)ResourceBundle.getBundle(className, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (ListResourceBundle)ResourceBundle.getBundle(
- className, new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles." + className, className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which can be appended to a resource name
- */
- protected static String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java b/jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java
index 24a14b2..a5c0e68 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java
@@ -24,6 +24,7 @@
package com.sun.org.apache.xml.internal.resolver;
import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.InputStream;
@@ -821,7 +822,7 @@ public class Catalog {
// tack on a basename because URLs point to files not dirs
catalogCwd = FileURL.makeURL("basename");
} catch (MalformedURLException e) {
- String userdir = System.getProperty("user.dir");
+ String userdir = SecuritySupport.getSystemProperty("user.dir");
userdir.replace('\\', '/');
catalogManager.debug.message(1, "Malformed URL on cwd", userdir);
catalogCwd = null;
@@ -1717,7 +1718,7 @@ public class Catalog {
protected String resolveLocalSystem(String systemId)
throws MalformedURLException, IOException {
- String osname = System.getProperty("os.name");
+ String osname = SecuritySupport.getSystemProperty("os.name");
boolean windows = (osname.indexOf("Windows") >= 0);
Enumeration en = catalogEntries.elements();
while (en.hasMoreElements()) {
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java b/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java
index 166c033..247bd40 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java
@@ -23,6 +23,7 @@
package com.sun.org.apache.xml.internal.resolver;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.io.InputStream;
import java.net.URL;
@@ -142,8 +143,8 @@ public class CatalogManager {
/** Flag to ignore missing property files and/or properties */
private boolean ignoreMissingProperties
- = (System.getProperty(pIgnoreMissing) != null
- || System.getProperty(pFiles) != null);
+ = (SecuritySupport.getSystemProperty(pIgnoreMissing) != null
+ || SecuritySupport.getSystemProperty(pFiles) != null);
/** Holds the resources after they are loaded from the file. */
private ResourceBundle resources;
@@ -338,7 +339,7 @@ public class CatalogManager {
private int queryVerbosity () {
String defaultVerbStr = Integer.toString(defaultVerbosity);
- String verbStr = System.getProperty(pVerbosity);
+ String verbStr = SecuritySupport.getSystemProperty(pVerbosity);
if (verbStr == null) {
if (resources==null) readProperties();
@@ -473,7 +474,7 @@ public class CatalogManager {
* @return A semicolon delimited list of catlog file URIs
*/
private String queryCatalogFiles () {
- String catalogList = System.getProperty(pFiles);
+ String catalogList = SecuritySupport.getSystemProperty(pFiles);
fromPropertiesFile = false;
if (catalogList == null) {
@@ -558,7 +559,7 @@ public class CatalogManager {
* defaultPreferSetting.
*/
private boolean queryPreferPublic () {
- String prefer = System.getProperty(pPrefer);
+ String prefer = SecuritySupport.getSystemProperty(pPrefer);
if (prefer == null) {
if (resources==null) readProperties();
@@ -617,7 +618,7 @@ public class CatalogManager {
* defaultUseStaticCatalog.
*/
private boolean queryUseStaticCatalog () {
- String staticCatalog = System.getProperty(pStatic);
+ String staticCatalog = SecuritySupport.getSystemProperty(pStatic);
if (staticCatalog == null) {
if (resources==null) readProperties();
@@ -748,7 +749,7 @@ public class CatalogManager {
* defaultOasisXMLCatalogPI.
*/
public boolean queryAllowOasisXMLCatalogPI () {
- String allow = System.getProperty(pAllowPI);
+ String allow = SecuritySupport.getSystemProperty(pAllowPI);
if (allow == null) {
if (resources==null) readProperties();
@@ -804,7 +805,7 @@ public class CatalogManager {
*
*/
public String queryCatalogClassName () {
- String className = System.getProperty(pClassname);
+ String className = SecuritySupport.getSystemProperty(pClassname);
if (className == null) {
if (resources==null) readProperties();
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/resolver/Resolver.java b/jaxp/src/com/sun/org/apache/xml/internal/resolver/Resolver.java
index 35a852f..721d67c 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/resolver/Resolver.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/resolver/Resolver.java
@@ -33,6 +33,7 @@ import java.net.URLConnection;
import java.net.MalformedURLException;
import javax.xml.parsers.SAXParserFactory;
import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import com.sun.org.apache.xml.internal.resolver.readers.SAXCatalogReader;
import com.sun.org.apache.xml.internal.resolver.readers.OASISXMLCatalogReader;
import com.sun.org.apache.xml.internal.resolver.readers.TR9401CatalogReader;
@@ -524,7 +525,7 @@ public class Resolver extends Catalog {
*/
private Vector resolveAllLocalSystem(String systemId) {
Vector map = new Vector();
- String osname = System.getProperty("os.name");
+ String osname = SecuritySupport.getSystemProperty("os.name");
boolean windows = (osname.indexOf("Windows") >= 0);
Enumeration en = catalogEntries.elements();
while (en.hasMoreElements()) {
@@ -552,7 +553,7 @@ public class Resolver extends Catalog {
*/
private Vector resolveLocalSystemReverse(String systemId) {
Vector map = new Vector();
- String osname = System.getProperty("os.name");
+ String osname = SecuritySupport.getSystemProperty("os.name");
boolean windows = (osname.indexOf("Windows") >= 0);
Enumeration en = catalogEntries.elements();
while (en.hasMoreElements()) {
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java b/jaxp/src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java
index 22bcad6..25da0c6 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java
@@ -22,6 +22,7 @@
package com.sun.org.apache.xml.internal.serialize;
import com.sun.org.apache.xerces.internal.utils.ObjectFactory;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.io.OutputStream;
import java.io.Writer;
import java.io.UnsupportedEncodingException;
@@ -64,7 +65,7 @@ public abstract class SerializerFactory
factory = new SerializerFactoryImpl( Method.TEXT );
registerSerializerFactory( factory );
- list = System.getProperty( FactoriesProperty );
+ list = SecuritySupport.getSystemProperty( FactoriesProperty );
if ( list != null ) {
token = new StringTokenizer( list, " ;,:" );
while ( token.hasMoreTokens() ) {
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java b/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java
index dcb6dc8..3584569 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java
@@ -219,7 +219,7 @@ public final class Encodings extends Object
// Get the default system character encoding. This may be
// incorrect if they passed in a writer, but right now there
// seems to be no way to get the encoding from a writer.
- encoding = System.getProperty("file.encoding", "UTF8");
+ encoding = SecuritySupport.getSystemProperty("file.encoding", "UTF8");
if (null != encoding)
{
@@ -313,7 +313,7 @@ public final class Encodings extends Object
try
{
- urlString = System.getProperty(ENCODINGS_PROP, "");
+ urlString = SecuritySupport.getSystemProperty(ENCODINGS_PROP, "");
}
catch (SecurityException e)
{
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java b/jaxp/src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java
index 3daff74..0d91b7a 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java
@@ -22,6 +22,7 @@
*/
package com.sun.org.apache.xml.internal.serializer;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -471,7 +472,7 @@ public final class OutputPropertiesFactory
String value = null;
try
{
- value = System.getProperty(key);
+ value = SecuritySupport.getSystemProperty(key);
}
catch (SecurityException se)
{
@@ -484,7 +485,7 @@ public final class OutputPropertiesFactory
String newValue = null;
try
{
- newValue = System.getProperty(newKey);
+ newValue = SecuritySupport.getSystemProperty(newKey);
}
catch (SecurityException se)
{
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/serializer/ToStream.java b/jaxp/src/com/sun/org/apache/xml/internal/serializer/ToStream.java
index 8c4c2ec..2301763 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/serializer/ToStream.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/serializer/ToStream.java
@@ -22,6 +22,7 @@
*/
package com.sun.org.apache.xml.internal.serializer;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
@@ -140,7 +141,7 @@ abstract public class ToStream extends SerializerBase
* extension attribute xalan:line-separator.
*/
protected char[] m_lineSep =
- System.getProperty("line.separator").toCharArray();
+ SecuritySupport.getSystemProperty("line.separator").toCharArray();
/**
* True if the the system line separator is to be used.
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java b/jaxp/src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java
index d77f48d..007e9c7 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java
@@ -22,6 +22,7 @@
*/
package com.sun.org.apache.xml.internal.serializer;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.io.File;
import com.sun.org.apache.xml.internal.serializer.utils.AttList;
@@ -104,7 +105,7 @@ public final class TreeWalker
else {
try {
// Bug see Bugzilla 26741
- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
+ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
}
catch (SecurityException se) {// user.dir not accessible from applet
}
@@ -115,7 +116,7 @@ public final class TreeWalker
m_contentHandler.setDocumentLocator(m_locator);
try {
// Bug see Bugzilla 26741
- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
+ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
}
catch (SecurityException se){// user.dir not accessible from applet
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java b/jaxp/src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java
index 3239308..84f4c98 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java
@@ -22,6 +22,7 @@
*/
package com.sun.org.apache.xml.internal.serializer.utils;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.util.ListResourceBundle;
import java.util.Locale;
import java.util.MissingResourceException;
@@ -87,9 +88,6 @@ import java.util.ResourceBundle;
* can have the Message strings translated in an alternate language
* in a errorResourceClass with a language suffix.
*
- * More sophisticated use of this class would be to pass null
- * when contructing it, but then call loadResourceBundle()
- * before creating any messages.
*
* This class is not a public API, it is only public because it is
* used in com.sun.org.apache.xml.internal.serializer.
@@ -126,18 +124,6 @@ public final class Messages
m_resourceBundleName = resourceBundle;
}
- /*
- * Set the Locale object to use. If this method is not called the
- * default locale is used. This method needs to be called before
- * loadResourceBundle().
- *
- * @param locale non-null reference to Locale object.
- * @xsl.usage internal
- */
-// public void setLocale(Locale locale)
-// {
-// m_locale = locale;
-// }
/**
* Get the Locale object that is being used.
@@ -151,16 +137,6 @@ public final class Messages
}
/**
- * Get the ListResourceBundle being used by this Messages instance which was
- * previously set by a call to loadResourceBundle(className)
- * @xsl.usage internal
- */
- private ListResourceBundle getResourceBundle()
- {
- return m_resourceBundle;
- }
-
- /**
* Creates a message from the specified key and replacement
* arguments, localized to the given locale.
*
@@ -174,7 +150,7 @@ public final class Messages
public final String createMessage(String msgKey, Object args[])
{
if (m_resourceBundle == null)
- m_resourceBundle = loadResourceBundle(m_resourceBundleName);
+ m_resourceBundle = SecuritySupport.getResourceBundle(m_resourceBundleName);
if (m_resourceBundle != null)
{
@@ -293,76 +269,4 @@ public final class Messages
return fmsg;
}
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className the name of the class that implements ListResourceBundle,
- * without language suffix.
- * @return the ResourceBundle
- * @throws MissingResourceException
- * @xsl.usage internal
- */
- private ListResourceBundle loadResourceBundle(String resourceBundle)
- throws MissingResourceException
- {
- m_resourceBundleName = resourceBundle;
- Locale locale = getLocale();
-
- ListResourceBundle lrb;
-
- try
- {
-
- ResourceBundle rb =
- ResourceBundle.getBundle(m_resourceBundleName, locale);
- lrb = (ListResourceBundle) rb;
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- lrb =
- (ListResourceBundle) ResourceBundle.getBundle(
- m_resourceBundleName,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles." + m_resourceBundleName,
- m_resourceBundleName,
- "");
- }
- }
- m_resourceBundle = lrb;
- return lrb;
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which can be appended to a resource name
- * @xsl.usage internal
- */
- private static String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
}
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/utils/TreeWalker.java b/jaxp/src/com/sun/org/apache/xml/internal/utils/TreeWalker.java
index a26a006..f7a3ddf 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/utils/TreeWalker.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/utils/TreeWalker.java
@@ -22,6 +22,7 @@
*/
package com.sun.org.apache.xml.internal.utils;
+import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
import java.io.File;
import org.w3c.dom.Comment;
@@ -93,7 +94,7 @@ public class TreeWalker
else {
try {
// Bug see Bugzilla 26741
- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
+ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
}
catch (SecurityException se) {// user.dir not accessible from applet
}
@@ -112,7 +113,7 @@ public class TreeWalker
m_contentHandler.setDocumentLocator(m_locator);
try {
// Bug see Bugzilla 26741
- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
+ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
}
catch (SecurityException se){// user.dir not accessible from applet
}
@@ -131,7 +132,7 @@ public class TreeWalker
m_contentHandler.setDocumentLocator(m_locator);
try {
// Bug see Bugzilla 26741
- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
+ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
}
catch (SecurityException se){// user.dir not accessible from applet
diff --git a/jaxp/src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java b/jaxp/src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java
index b2beed7..708fbb4 100755
--- a/jaxp/src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java
+++ b/jaxp/src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java
@@ -22,6 +22,8 @@
*/
package com.sun.org.apache.xml.internal.utils.res;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.ListResourceBundle;
import java.util.Locale;
import java.util.MissingResourceException;
@@ -29,114 +31,45 @@ import java.util.ResourceBundle;
/**
* The default (english) resource bundle.
+ *
* @xsl.usage internal
*/
-public class XResourceBundle extends ListResourceBundle
-{
-
- /** Error resource constants */
- public static final String ERROR_RESOURCES =
- "com.sun.org.apache.xalan.internal.res.XSLTErrorResources", XSLT_RESOURCE =
- "com.sun.org.apache.xml.internal.utils.res.XResourceBundle", LANG_BUNDLE_NAME =
- "com.sun.org.apache.xml.internal.utils.res.XResources", MULT_ORDER =
- "multiplierOrder", MULT_PRECEDES = "precedes", MULT_FOLLOWS =
- "follows", LANG_ORIENTATION = "orientation", LANG_RIGHTTOLEFT =
- "rightToLeft", LANG_LEFTTORIGHT = "leftToRight", LANG_NUMBERING =
- "numbering", LANG_ADDITIVE = "additive", LANG_MULT_ADD =
- "multiplicative-additive", LANG_MULTIPLIER =
- "multiplier", LANG_MULTIPLIER_CHAR =
- "multiplierChar", LANG_NUMBERGROUPS = "numberGroups", LANG_NUM_TABLES =
- "tables", LANG_ALPHABET = "alphabet", LANG_TRAD_ALPHABET = "tradAlphabet";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @param locale the locale to prefer when searching for the bundle
- */
- public static final XResourceBundle loadResourceBundle(
- String className, Locale locale) throws MissingResourceException
- {
-
- String suffix = getResourceSuffix(locale);
-
- //System.out.println("resource " + className + suffix);
- try
- {
-
- // first try with the given locale
- String resourceName = className + suffix;
- return (XResourceBundle) ResourceBundle.getBundle(resourceName, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XResourceBundle) ResourceBundle.getBundle(
- XSLT_RESOURCE, new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
+public class XResourceBundle extends ListResourceBundle {
+
+ /**
+ * Error resource constants
+ */
+ public static final String ERROR_RESOURCES =
+ "com.sun.org.apache.xalan.internal.res.XSLTErrorResources", XSLT_RESOURCE =
+ "com.sun.org.apache.xml.internal.utils.res.XResourceBundle", LANG_BUNDLE_NAME =
+ "com.sun.org.apache.xml.internal.utils.res.XResources", MULT_ORDER =
+ "multiplierOrder", MULT_PRECEDES = "precedes", MULT_FOLLOWS =
+ "follows", LANG_ORIENTATION = "orientation", LANG_RIGHTTOLEFT =
+ "rightToLeft", LANG_LEFTTORIGHT = "leftToRight", LANG_NUMBERING =
+ "numbering", LANG_ADDITIVE = "additive", LANG_MULT_ADD =
+ "multiplicative-additive", LANG_MULTIPLIER =
+ "multiplier", LANG_MULTIPLIER_CHAR =
+ "multiplierChar", LANG_NUMBERGROUPS = "numberGroups", LANG_NUM_TABLES =
+ "tables", LANG_ALPHABET = "alphabet", LANG_TRAD_ALPHABET = "tradAlphabet";
+
+
+ /**
+ * Get the association list.
+ *
+ * @return The association list.
+ */
+ public Object[][] getContents() {
+ return new Object[][]{
+ {"ui_language", "en"}, {"help_language", "en"}, {"language", "en"},
+ {"alphabet", new CharArrayWrapper(new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G',
+ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+ 'V', 'W', 'X', 'Y', 'Z'})},
+ {"tradAlphabet", new CharArrayWrapper(new char[]{'A', 'B', 'C', 'D', 'E', 'F',
+ 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+ 'U', 'V', 'W', 'X', 'Y', 'Z'})},
+ //language orientation
+ {"orientation", "LeftToRight"},
+ //language numbering
+ {"numbering", "additive"},};
}
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String lang = locale.getLanguage();
- String country = locale.getCountry();
- String variant = locale.getVariant();
- String suffix = "_" + locale.getLanguage();
-
- if (lang.equals("zh"))
- suffix += "_" + country;
-
- if (country.equals("JP"))
- suffix += "_" + country + "_" + variant;
-
- return suffix;
- }
-
- /**
- * Get the association list.
- *
- * @return The association list.
- */
- public Object[][] getContents()
- {
- return new Object[][]
- {
- { "ui_language", "en" }, { "help_language", "en" }, { "language", "en" },
- { "alphabet", new CharArrayWrapper(new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
- 'V', 'W', 'X', 'Y', 'Z' })},
- { "tradAlphabet", new CharArrayWrapper(new char[]{ 'A', 'B', 'C', 'D', 'E', 'F',
- 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
- 'U', 'V', 'W', 'X', 'Y', 'Z' }) },
-
- //language orientation
- { "orientation", "LeftToRight" },
-
- //language numbering
- { "numbering", "additive" },
- };
- }
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java b/jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java
index 316e2a1..4f9a968 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java
@@ -102,7 +102,7 @@ public class FuncSystemProperty extends FunctionOneArg
try
{
- result = System.getProperty(propName);
+ result = SecuritySupport.getSystemProperty(propName);
if (null == result)
{
@@ -124,7 +124,7 @@ public class FuncSystemProperty extends FunctionOneArg
{
try
{
- result = System.getProperty(fullName);
+ result = SecuritySupport.getSystemProperty(fullName);
if (null == result)
{
@@ -170,7 +170,6 @@ public class FuncSystemProperty extends FunctionOneArg
try
{
// Use SecuritySupport class to provide priveleged access to property file
-
InputStream is = SecuritySupport.getResourceAsStream(ObjectFactory.findClassLoader(),
file);
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java
index 1bacf25..68b4853 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java
index db0051d..2b1389a 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java
index 6200908..034531e 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java
index 41be11f..3526941 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java
index 356bffc..0000b18 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java
index 5427da5..256b88c 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java
index de70b6a..6e1f37e 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_pt_BR.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_pt_BR.java
index 54bb538..8550492 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_pt_BR.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_pt_BR.java
@@ -24,9 +24,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -940,68 +937,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java
index 6afe36f..f915256 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java
index f781e6b..2618e59 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java
index dfafed8..8fdd1e5 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java
@@ -23,9 +23,6 @@
package com.sun.org.apache.xpath.internal.res;
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -939,68 +936,4 @@ public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED =
/** Field QUERY_HEADER */
public static final String QUERY_HEADER = "PATTERN ";
-
- /**
- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
- * of ResourceBundle.getBundle().
- *
- * @param className Name of local-specific subclass.
- * @return the ResourceBundle
- * @throws MissingResourceException
- */
- public static final XPATHErrorResources loadResourceBundle(String className)
- throws MissingResourceException
- {
-
- Locale locale = Locale.getDefault();
- String suffix = getResourceSuffix(locale);
-
- try
- {
-
- // first try with the given locale
- return (XPATHErrorResources) ResourceBundle.getBundle(className
- + suffix, locale);
- }
- catch (MissingResourceException e)
- {
- try // try to fall back to en_US if we can't load
- {
-
- // Since we can't find the localized property file,
- // fall back to en_US.
- return (XPATHErrorResources) ResourceBundle.getBundle(className,
- new Locale("en", "US"));
- }
- catch (MissingResourceException e2)
- {
-
- // Now we are really in trouble.
- // very bad, definitely very bad...not going to get very far
- throw new MissingResourceException(
- "Could not load any resource bundles.", className, "");
- }
- }
- }
-
- /**
- * Return the resource file suffic for the indicated locale
- * For most locales, this will be based the language code. However
- * for Chinese, we do distinguish between Taiwan and PRC
- *
- * @param locale the locale
- * @return an String suffix which canbe appended to a resource name
- */
- private static final String getResourceSuffix(Locale locale)
- {
-
- String suffix = "_" + locale.getLanguage();
- String country = locale.getCountry();
-
- if (country.equals("TW"))
- suffix += "_" + country;
-
- return suffix;
- }
-
}
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java
index 3bcf1da..1d0fe6f 100755
--- a/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java
@@ -22,130 +22,128 @@
*/
package com.sun.org.apache.xpath.internal.res;
-import java.util.ListResourceBundle;
-
+import com.sun.org.apache.bcel.internal.util.SecuritySupport;
import com.sun.org.apache.xml.internal.res.XMLMessages;
+import java.util.ListResourceBundle;
/**
* A utility class for issuing XPath error messages.
+ *
* @xsl.usage internal
*/
-public class XPATHMessages extends XMLMessages
-{
- /** The language specific resource object for XPath messages. */
- private static ListResourceBundle XPATHBundle = null;
-
- /** The class name of the XPath error message string table. */
- private static final String XPATH_ERROR_RESOURCES =
- "com.sun.org.apache.xpath.internal.res.XPATHErrorResources";
-
- /**
- * Creates a message from the specified key and replacement
- * arguments, localized to the given locale.
- *
- * @param msgKey The key for the message text.
- * @param args The arguments to be used as replacement text
- * in the message created.
- *
- * @return The formatted message string.
- */
- public static final String createXPATHMessage(String msgKey, Object args[]) //throws Exception
- {
- if (XPATHBundle == null)
- XPATHBundle = loadResourceBundle(XPATH_ERROR_RESOURCES);
-
- if (XPATHBundle != null)
- {
- return createXPATHMsg(XPATHBundle, msgKey, args);
- }
- else
- return "Could not load any resource bundles.";
- }
-
- /**
- * Creates a message from the specified key and replacement
- * arguments, localized to the given locale.
- *
- * @param msgKey The key for the message text.
- * @param args The arguments to be used as replacement text
- * in the message created.
- *
- * @return The formatted warning string.
- */
- public static final String createXPATHWarning(String msgKey, Object args[]) //throws Exception
- {
- if (XPATHBundle == null)
- XPATHBundle = loadResourceBundle(XPATH_ERROR_RESOURCES);
-
- if (XPATHBundle != null)
+public class XPATHMessages extends XMLMessages {
+
+ /**
+ * The language specific resource object for XPath messages.
+ */
+ private static ListResourceBundle XPATHBundle = null;
+ /**
+ * The class name of the XPath error message string table.
+ */
+ private static final String XPATH_ERROR_RESOURCES =
+ "com.sun.org.apache.xpath.internal.res.XPATHErrorResources";
+
+ /**
+ * Creates a message from the specified key and replacement arguments,
+ * localized to the given locale.
+ *
+ * @param msgKey The key for the message text.
+ * @param args The arguments to be used as replacement text in the message
+ * created.
+ *
+ * @return The formatted message string.
+ */
+ public static final String createXPATHMessage(String msgKey, Object args[]) //throws Exception
{
- return createXPATHMsg(XPATHBundle, msgKey, args);
- }
- else
- return "Could not load any resource bundles.";
- }
-
- /**
- * Creates a message from the specified key and replacement
- * arguments, localized to the given locale.
- *
- * @param fResourceBundle The resource bundle to use.
- * @param msgKey The message key to use.
- * @param args The arguments to be used as replacement text
- * in the message created.
- *
- * @return The formatted message string.
- */
- public static final String createXPATHMsg(ListResourceBundle fResourceBundle,
- String msgKey, Object args[]) //throws Exception
- {
-
- String fmsg = null;
- boolean throwex = false;
- String msg = null;
-
- if (msgKey != null)
- msg = fResourceBundle.getString(msgKey);
-
- if (msg == null)
- {
- msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE);
- throwex = true;
+ if (XPATHBundle == null) {
+ XPATHBundle = SecuritySupport.getResourceBundle(XPATH_ERROR_RESOURCES);
+ }
+
+ if (XPATHBundle != null) {
+ return createXPATHMsg(XPATHBundle, msgKey, args);
+ } else {
+ return "Could not load any resource bundles.";
+ }
}
- if (args != null)
+ /**
+ * Creates a message from the specified key and replacement arguments,
+ * localized to the given locale.
+ *
+ * @param msgKey The key for the message text.
+ * @param args The arguments to be used as replacement text in the message
+ * created.
+ *
+ * @return The formatted warning string.
+ */
+ public static final String createXPATHWarning(String msgKey, Object args[]) //throws Exception
{
- try
- {
-
- // Do this to keep format from crying.
- // This is better than making a bunch of conditional
- // code all over the place.
- int n = args.length;
-
- for (int i = 0; i < n; i++)
- {
- if (null == args[i])
- args[i] = "";
+ if (XPATHBundle == null) {
+ XPATHBundle = SecuritySupport.getResourceBundle(XPATH_ERROR_RESOURCES);
}
- fmsg = java.text.MessageFormat.format(msg, args);
- }
- catch (Exception e)
- {
- fmsg = fResourceBundle.getString(XPATHErrorResources.FORMAT_FAILED);
- fmsg += " " + msg;
- }
+ if (XPATHBundle != null) {
+ return createXPATHMsg(XPATHBundle, msgKey, args);
+ } else {
+ return "Could not load any resource bundles.";
+ }
}
- else
- fmsg = msg;
- if (throwex)
+ /**
+ * Creates a message from the specified key and replacement arguments,
+ * localized to the given locale.
+ *
+ * @param fResourceBundle The resource bundle to use.
+ * @param msgKey The message key to use.
+ * @param args The arguments to be used as replacement text in the message
+ * created.
+ *
+ * @return The formatted message string.
+ */
+ public static final String createXPATHMsg(ListResourceBundle fResourceBundle,
+ String msgKey, Object args[]) //throws Exception
{
- throw new RuntimeException(fmsg);
- }
- return fmsg;
- }
+ String fmsg = null;
+ boolean throwex = false;
+ String msg = null;
+
+ if (msgKey != null) {
+ msg = fResourceBundle.getString(msgKey);
+ }
+
+ if (msg == null) {
+ msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE);
+ throwex = true;
+ }
+ if (args != null) {
+ try {
+
+ // Do this to keep format from crying.
+ // This is better than making a bunch of conditional
+ // code all over the place.
+ int n = args.length;
+
+ for (int i = 0; i < n; i++) {
+ if (null == args[i]) {
+ args[i] = "";
+ }
+ }
+
+ fmsg = java.text.MessageFormat.format(msg, args);
+ } catch (Exception e) {
+ fmsg = fResourceBundle.getString(XPATHErrorResources.FORMAT_FAILED);
+ fmsg += " " + msg;
+ }
+ } else {
+ fmsg = msg;
+ }
+
+ if (throwex) {
+ throw new RuntimeException(fmsg);
+ }
+
+ return fmsg;
+ }
}
diff --git a/jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java b/jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java
index 8343d9b..2a8183b 100755
--- a/jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java
+++ b/jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java
@@ -36,6 +36,7 @@ import com.sun.org.apache.xerces.internal.impl.XMLEntityManager;
import com.sun.org.apache.xerces.internal.impl.PropertyManager;
import com.sun.org.apache.xerces.internal.impl.XMLErrorReporter;
import com.sun.org.apache.xerces.internal.impl.Constants;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import java.util.Enumeration;
/**
@@ -414,7 +415,7 @@ public class XMLEntityStorage {
// get the user.dir property
String userDir = "";
try {
- userDir = System.getProperty("user.dir");
+ userDir = SecuritySupport.getSystemProperty("user.dir");
}
catch (SecurityException se) {
}
diff --git a/jaxp/src/com/sun/xml/internal/stream/writers/WriterUtility.java b/jaxp/src/com/sun/xml/internal/stream/writers/WriterUtility.java
index e266c9e..6ec4201 100755
--- a/jaxp/src/com/sun/xml/internal/stream/writers/WriterUtility.java
+++ b/jaxp/src/com/sun/xml/internal/stream/writers/WriterUtility.java
@@ -32,6 +32,7 @@ import java.io.Writer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import com.sun.org.apache.xerces.internal.util.XMLChar;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
/**
* Implements common xml writer functions.
@@ -240,7 +241,7 @@ public class WriterUtility {
private CharsetEncoder getDefaultEncoder(){
try{
- String encoding = System.getProperty("file.encoding");
+ String encoding = SecuritySupport.getSystemProperty("file.encoding");
if(encoding != null){
return Charset.forName(encoding).newEncoder();
}
diff --git a/jaxp/src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java b/jaxp/src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java
index 30bee23..832fa6d 100755
--- a/jaxp/src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java
+++ b/jaxp/src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java
@@ -53,6 +53,7 @@ import com.sun.org.apache.xerces.internal.impl.Constants;
import com.sun.org.apache.xerces.internal.impl.PropertyManager;
import com.sun.org.apache.xerces.internal.util.NamespaceSupport;
import com.sun.org.apache.xerces.internal.util.SymbolTable;
+import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
import com.sun.org.apache.xerces.internal.xni.QName;
import com.sun.xml.internal.stream.util.ReadOnlyIterator;
@@ -340,7 +341,7 @@ public final class XMLStreamWriterImpl extends AbstractMap implements XMLStreamW
fEncoder = Charset.forName(encoding).newEncoder();
}
} else {
- encoding = System.getProperty("file.encoding");
+ encoding = SecuritySupport.getSystemProperty("file.encoding");
if (encoding != null && encoding.equalsIgnoreCase("utf-8")) {
fWriter = new UTF8OutputStreamWriter(os);
} else {
diff --git a/jaxp/src/javax/xml/datatype/FactoryFinder.java b/jaxp/src/javax/xml/datatype/FactoryFinder.java
index 37811e6..deb47ea 100755
--- a/jaxp/src/javax/xml/datatype/FactoryFinder.java
+++ b/jaxp/src/javax/xml/datatype/FactoryFinder.java
@@ -44,6 +44,7 @@ import java.net.URL;
* @author Santiago.PericasGeertsen@sun.com
*/
class FactoryFinder {
+ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal";
/**
* Internal debug flag.
@@ -95,18 +96,24 @@ class FactoryFinder {
* If the class loader supplied is null, first try using the
* context class loader followed by the current (i.e. bootstrap) class
* loader.
+ *
+ * Use bootstrap classLoader if cl = null and useBSClsLoader is true
*/
static private Class getProviderClass(String className, ClassLoader cl,
- boolean doFallback) throws ClassNotFoundException
+ boolean doFallback, boolean useBSClsLoader) throws ClassNotFoundException
{
try {
if (cl == null) {
- cl = ss.getContextClassLoader();
- if (cl == null) {
- throw new ClassNotFoundException();
- }
- else {
- return cl.loadClass(className);
+ if (useBSClsLoader) {
+ return Class.forName(className, true, FactoryFinder.class.getClassLoader());
+ } else {
+ cl = ss.getContextClassLoader();
+ if (cl == null) {
+ throw new ClassNotFoundException();
+ }
+ else {
+ return cl.loadClass(className);
+ }
}
}
else {
@@ -131,17 +138,47 @@ class FactoryFinder {
* @param className Name of the concrete class corresponding to the
* service provider
*
+ * @param cl ClassLoader used to load the factory class. If null
+ * current Thread's context classLoader is used to load the factory class.
+ *
+ * @param doFallback True if the current ClassLoader should be tried as
+ * a fallback if the class is not found using cl
+ */
+ static Object newInstance(String className, ClassLoader cl, boolean doFallback)
+ throws ConfigurationError
+ {
+ return newInstance(className, cl, doFallback, false);
+ }
+
+ /**
+ * Create an instance of a class. Delegates to method
+ * getProviderClass() in order to load the class.
+ *
+ * @param className Name of the concrete class corresponding to the
+ * service provider
+ *
* @param cl ClassLoader to use to load the class, null means to use
* the bootstrap ClassLoader
*
* @param doFallback True if the current ClassLoader should be tried as
* a fallback if the class is not found using cl
+ *
+ * @param useBSClsLoader True if cl=null actually meant bootstrap classLoader. This parameter
+ * is needed since DocumentBuilderFactory/SAXParserFactory defined null as context classLoader.
*/
- static Object newInstance(String className, ClassLoader cl, boolean doFallback)
+ static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader)
throws ConfigurationError
{
+ // make sure we have access to restricted packages
+ if (System.getSecurityManager() != null) {
+ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+ cl = null;
+ useBSClsLoader = true;
+ }
+ }
+
try {
- Class providerClass = getProviderClass(className, cl, doFallback);
+ Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader);
Object instance = providerClass.newInstance();
if (debug) { // Extra check to avoid computing cl strings
dPrint("created new instance of " + providerClass +
@@ -244,6 +281,7 @@ class FactoryFinder {
// First try the Context ClassLoader
ClassLoader cl = ss.getContextClassLoader();
+ boolean useBSClsLoader = false;
if (cl != null) {
is = ss.getResourceAsStream(cl, serviceId);
@@ -251,11 +289,13 @@ class FactoryFinder {
if (is == null) {
cl = FactoryFinder.class.getClassLoader();
is = ss.getResourceAsStream(cl, serviceId);
+ useBSClsLoader = true;
}
} else {
// No Context ClassLoader, try the current ClassLoader
cl = FactoryFinder.class.getClassLoader();
is = ss.getResourceAsStream(cl, serviceId);
+ useBSClsLoader = true;
}
if (is == null) {
@@ -293,7 +333,7 @@ class FactoryFinder {
// ClassLoader because we want to avoid the case where the
// resource file was found using one ClassLoader and the
// provider class was instantiated using a different one.
- return newInstance(factoryClassName, cl, false);
+ return newInstance(factoryClassName, cl, false, useBSClsLoader);
}
// No provider found
diff --git a/jaxp/src/javax/xml/parsers/FactoryFinder.java b/jaxp/src/javax/xml/parsers/FactoryFinder.java
index 43a6e02..214f87f 100755
--- a/jaxp/src/javax/xml/parsers/FactoryFinder.java
+++ b/jaxp/src/javax/xml/parsers/FactoryFinder.java
@@ -42,7 +42,7 @@ import java.util.Properties;
* @author Huizhe.Wang@oracle.com
*/
class FactoryFinder {
-
+ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal";
/**
* Internal debug flag.
*/
@@ -166,6 +166,14 @@ class FactoryFinder {
static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader)
throws ConfigurationError
{
+ // make sure we have access to restricted packages
+ if (System.getSecurityManager() != null) {
+ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+ cl = null;
+ useBSClsLoader = true;
+ }
+ }
+
try {
Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader);
Object instance = providerClass.newInstance();
diff --git a/jaxp/src/javax/xml/stream/FactoryFinder.java b/jaxp/src/javax/xml/stream/FactoryFinder.java
index a2491ac..bcfeba1 100755
--- a/jaxp/src/javax/xml/stream/FactoryFinder.java
+++ b/jaxp/src/javax/xml/stream/FactoryFinder.java
@@ -25,14 +25,12 @@
package javax.xml.stream;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.File;
-import java.io.FileInputStream;
-
-import java.util.Properties;
import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
+import java.util.Properties;
/**
*
Implements pluggable Datatypes.
@@ -43,6 +41,8 @@ import java.io.InputStreamReader;
* @author Santiago.PericasGeertsen@sun.com
*/
class FactoryFinder {
+ // Check we have access to package.
+ private static final String DEFAULT_PACKAGE = "com.sun.xml.internal.";
/**
* Internal debug flag.
@@ -94,18 +94,24 @@ class FactoryFinder {
* If the class loader supplied is null, first try using the
* context class loader followed by the current (i.e. bootstrap) class
* loader.
+ *
+ * Use bootstrap classLoader if cl = null and useBSClsLoader is true
*/
static private Class getProviderClass(String className, ClassLoader cl,
- boolean doFallback) throws ClassNotFoundException
+ boolean doFallback, boolean useBSClsLoader) throws ClassNotFoundException
{
try {
if (cl == null) {
- cl = ss.getContextClassLoader();
- if (cl == null) {
- throw new ClassNotFoundException();
- }
- else {
- return cl.loadClass(className);
+ if (useBSClsLoader) {
+ return Class.forName(className, true, FactoryFinder.class.getClassLoader());
+ } else {
+ cl = ss.getContextClassLoader();
+ if (cl == null) {
+ throw new ClassNotFoundException();
+ }
+ else {
+ return cl.loadClass(className);
+ }
}
}
else {
@@ -130,8 +136,8 @@ class FactoryFinder {
* @param className Name of the concrete class corresponding to the
* service provider
*
- * @param cl ClassLoader to use to load the class, null means to use
- * the bootstrap ClassLoader
+ * @param cl ClassLoader used to load the factory class. If null
+ * current Thread's context classLoader is used to load the factory class.
*
* @param doFallback True if the current ClassLoader should be tried as
* a fallback if the class is not found using cl
@@ -139,8 +145,38 @@ class FactoryFinder {
static Object newInstance(String className, ClassLoader cl, boolean doFallback)
throws ConfigurationError
{
+ return newInstance(className, cl, doFallback, false);
+ }
+
+ /**
+ * Create an instance of a class. Delegates to method
+ * getProviderClass() in order to load the class.
+ *
+ * @param className Name of the concrete class corresponding to the
+ * service provider
+ *
+ * @param cl ClassLoader used to load the factory class. If null
+ * current Thread's context classLoader is used to load the factory class.
+ *
+ * @param doFallback True if the current ClassLoader should be tried as
+ * a fallback if the class is not found using cl
+ *
+ * @param useBSClsLoader True if cl=null actually meant bootstrap classLoader. This parameter
+ * is needed since DocumentBuilderFactory/SAXParserFactory defined null as context classLoader.
+ */
+ static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader)
+ throws ConfigurationError
+ {
+ // make sure we have access to restricted packages
+ if (System.getSecurityManager() != null) {
+ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+ cl = null;
+ useBSClsLoader = true;
+ }
+ }
+
try {
- Class providerClass = getProviderClass(className, cl, doFallback);
+ Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader);
Object instance = providerClass.newInstance();
if (debug) { // Extra check to avoid computing cl strings
dPrint("created new instance of " + providerClass +
@@ -233,11 +269,11 @@ class FactoryFinder {
if (ss.doesFileExist(f)) {
dPrint("Read properties file "+f);
cacheProps.load(ss.getFileInputStream(f));
- }
- }
}
}
}
+ }
+ }
factoryClassName = cacheProps.getProperty(factoryId);
if (factoryClassName != null) {
@@ -276,6 +312,7 @@ class FactoryFinder {
// First try the Context ClassLoader
ClassLoader cl = ss.getContextClassLoader();
+ boolean useBSClsLoader = false;
if (cl != null) {
is = ss.getResourceAsStream(cl, serviceId);
@@ -283,11 +320,13 @@ class FactoryFinder {
if (is == null) {
cl = FactoryFinder.class.getClassLoader();
is = ss.getResourceAsStream(cl, serviceId);
+ useBSClsLoader = true;
}
} else {
// No Context ClassLoader, try the current ClassLoader
cl = FactoryFinder.class.getClassLoader();
is = ss.getResourceAsStream(cl, serviceId);
+ useBSClsLoader = true;
}
if (is == null) {
@@ -325,7 +364,7 @@ class FactoryFinder {
// ClassLoader because we want to avoid the case where the
// resource file was found using one ClassLoader and the
// provider class was instantiated using a different one.
- return newInstance(factoryClassName, cl, false);
+ return newInstance(factoryClassName, cl, false, useBSClsLoader);
}
// No provider found
diff --git a/jaxp/src/javax/xml/transform/FactoryFinder.java b/jaxp/src/javax/xml/transform/FactoryFinder.java
index b0c6d9a..63cc8cd 100755
--- a/jaxp/src/javax/xml/transform/FactoryFinder.java
+++ b/jaxp/src/javax/xml/transform/FactoryFinder.java
@@ -43,6 +43,7 @@ import java.util.Properties;
* @author Huizhe.Wang@oracle.com
*/
class FactoryFinder {
+ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xalan.internal.";
/**
* Internal debug flag.
@@ -169,6 +170,14 @@ class FactoryFinder {
static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader, boolean useServicesMechanism)
throws ConfigurationError
{
+ // make sure we have access to restricted packages
+ if (System.getSecurityManager() != null) {
+ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+ cl = null;
+ useBSClsLoader = true;
+ }
+ }
+
try {
Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader);
Object instance = null;
@@ -210,7 +219,7 @@ class FactoryFinder {
providerClass.getDeclaredMethod(
"newTransformerFactoryNoServiceLoader"
);
- return creationMethod.invoke(null, null);
+ return creationMethod.invoke(null, (Object[])null);
} catch (NoSuchMethodException exc) {
return null;
} catch (Exception exc) {
diff --git a/jaxp/src/javax/xml/validation/SchemaFactoryFinder.java b/jaxp/src/javax/xml/validation/SchemaFactoryFinder.java
index 8157b6b..8a6cce5 100755
--- a/jaxp/src/javax/xml/validation/SchemaFactoryFinder.java
+++ b/jaxp/src/javax/xml/validation/SchemaFactoryFinder.java
@@ -54,6 +54,7 @@ class SchemaFactoryFinder {
*
Take care of restrictions imposed by java security model
*/
private static SecuritySupport ss = new SecuritySupport();
+ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal";
/**
*
Cache properties for performance.
*/
@@ -213,28 +214,6 @@ class SchemaFactoryFinder {
}
}
- /**
- // try to read from $java.home/lib/jaxp.properties
- try {
- String javah = ss.getSystemProperty( "java.home" );
- String configFile = javah + File.separator +
- "lib" + File.separator + "jaxp.properties";
- File f = new File( configFile );
- if( ss.doesFileExist(f)) {
- sf = loadFromProperty(
- propertyName,f.getAbsolutePath(), new FileInputStream(f));
- if(sf!=null) return sf;
- } else {
- debugPrintln("Tried to read "+ f.getAbsolutePath()+", but it doesn't exist.");
- }
- } catch(Throwable e) {
- if( debug ) {
- debugPrintln("failed to read $java.home/lib/jaxp.properties");
- e.printStackTrace();
- }
- }
- */
-
// try META-INF/services files
Iterator sitr = createServiceFileIterator();
while(sitr.hasNext()) {
@@ -269,14 +248,20 @@ class SchemaFactoryFinder {
*/
private Class createClass(String className) {
Class clazz;
+ // make sure we have access to restricted packages
+ boolean internal = false;
+ if (System.getSecurityManager() != null) {
+ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+ internal = true;
+ }
+ }
- // use approprite ClassLoader
try {
- if (classLoader != null) {
- clazz = classLoader.loadClass(className);
- } else {
- clazz = Class.forName(className);
- }
+ if (classLoader != null && !internal) {
+ clazz = classLoader.loadClass(className);
+ } else {
+ clazz = Class.forName(className);
+ }
} catch (Throwable t) {
if(debug) t.printStackTrace();
return null;
@@ -357,7 +342,7 @@ class SchemaFactoryFinder {
providerClass.getDeclaredMethod(
"newXMLSchemaFactoryNoServiceLoader"
);
- return creationMethod.invoke(null, null);
+ return creationMethod.invoke(null, (Object[])null);
} catch (NoSuchMethodException exc) {
return null;
} catch (Exception exc) {
diff --git a/jaxp/src/javax/xml/xpath/XPathFactoryFinder.java b/jaxp/src/javax/xml/xpath/XPathFactoryFinder.java
index 2833a58..f7724d0 100755
--- a/jaxp/src/javax/xml/xpath/XPathFactoryFinder.java
+++ b/jaxp/src/javax/xml/xpath/XPathFactoryFinder.java
@@ -48,6 +48,7 @@ import java.util.Properties;
* @since 1.5
*/
class XPathFactoryFinder {
+ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xpath.internal";
private static SecuritySupport ss = new SecuritySupport() ;
/** debug support code. */
@@ -246,18 +247,25 @@ class XPathFactoryFinder {
*/
private Class createClass(String className) {
Class clazz;
+ // make sure we have access to restricted packages
+ boolean internal = false;
+ if (System.getSecurityManager() != null) {
+ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+ internal = true;
+ }
+ }
- // use approprite ClassLoader
- try {
- if (classLoader != null) {
- clazz = classLoader.loadClass(className);
- } else {
- clazz = Class.forName(className);
- }
- } catch (Throwable t) {
- if(debug) t.printStackTrace();
- return null;
+ // use approprite ClassLoader
+ try {
+ if (classLoader != null && !internal) {
+ clazz = classLoader.loadClass(className);
+ } else {
+ clazz = Class.forName(className);
}
+ } catch (Throwable t) {
+ if(debug) t.printStackTrace();
+ return null;
+ }
return clazz;
}
@@ -333,7 +341,7 @@ class XPathFactoryFinder {
providerClass.getDeclaredMethod(
"newXPathFactoryNoServiceLoader"
);
- return creationMethod.invoke(null, null);
+ return creationMethod.invoke(null, (Object[])null);
} catch (NoSuchMethodException exc) {
return null;
} catch (Exception exc) {
diff --git a/jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java b/jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java
index c15cff1..cfeeeea 100755
--- a/jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java
+++ b/jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java
@@ -104,6 +104,8 @@ public final class DOMImplementationRegistry {
*/
private static final String FALLBACK_CLASS =
"com.sun.org.apache.xerces.internal.dom.DOMXSImplementationSourceImpl";
+ private static final String DEFAULT_PACKAGE =
+ "com.sun.org.apache.xerces.internal.dom";
/**
* Private constructor.
* @param srcs Vector List of DOMImplementationSources
@@ -168,10 +170,15 @@ public final class DOMImplementationRegistry {
StringTokenizer st = new StringTokenizer(p);
while (st.hasMoreTokens()) {
String sourceName = st.nextToken();
- // Use context class loader, falling back to Class.forName
- // if and only if this fails...
+ // make sure we have access to restricted packages
+ boolean internal = false;
+ if (System.getSecurityManager() != null) {
+ if (sourceName != null && sourceName.startsWith(DEFAULT_PACKAGE)) {
+ internal = true;
+ }
+ }
Class sourceClass = null;
- if (classLoader != null) {
+ if (classLoader != null && !internal) {
sourceClass = classLoader.loadClass(sourceName);
} else {
sourceClass = Class.forName(sourceName);
diff --git a/jaxp/src/org/xml/sax/helpers/NewInstance.java b/jaxp/src/org/xml/sax/helpers/NewInstance.java
index 398f8dc..449e62d 100755
--- a/jaxp/src/org/xml/sax/helpers/NewInstance.java
+++ b/jaxp/src/org/xml/sax/helpers/NewInstance.java
@@ -54,9 +54,10 @@ import java.lang.reflect.InvocationTargetException;
* including versions of Java 2.
*
* @author Edwin Goei, David Brownell
+ * @version 2.0.1 (sax2r2)
*/
class NewInstance {
-
+ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal";
/**
* Creates a new instance of the specified class name
*
@@ -66,8 +67,16 @@ class NewInstance {
throws ClassNotFoundException, IllegalAccessException,
InstantiationException
{
+ // make sure we have access to restricted packages
+ boolean internal = false;
+ if (System.getSecurityManager() != null) {
+ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+ internal = true;
+ }
+ }
+
Class driverClass;
- if (classLoader == null) {
+ if (classLoader == null || internal) {
driverClass = Class.forName(className);
} else {
driverClass = classLoader.loadClass(className);
@@ -75,29 +84,4 @@ class NewInstance {
return driverClass.newInstance();
}
- /**
- * Figure out which ClassLoader to use. For JDK 1.2 and later use
- * the context ClassLoader.
- */
- static ClassLoader getClassLoader ()
- {
- Method m = null;
-
- try {
- m = Thread.class.getMethod("getContextClassLoader", (Class[]) null);
- } catch (NoSuchMethodException e) {
- // Assume that we are running JDK 1.1, use the current ClassLoader
- return NewInstance.class.getClassLoader();
- }
-
- try {
- return (ClassLoader) m.invoke(Thread.currentThread(), (Object[]) null);
- } catch (IllegalAccessException e) {
- // assert(false)
- throw new UnknownError(e.getMessage());
- } catch (InvocationTargetException e) {
- // assert(e.getTargetException() instanceof SecurityException)
- throw new UnknownError(e.getMessage());
- }
- }
}
diff --git a/jaxp/src/org/xml/sax/helpers/ParserAdapter.java b/jaxp/src/org/xml/sax/helpers/ParserAdapter.java
index b2f2adc..73f10c2 100755
--- a/jaxp/src/org/xml/sax/helpers/ParserAdapter.java
+++ b/jaxp/src/org/xml/sax/helpers/ParserAdapter.java
@@ -74,13 +74,14 @@ import org.xml.sax.SAXNotSupportedException;
*
* @since SAX 2.0
* @author David Megginson
+ * @version 2.0.1 (sax2r2)
* @see org.xml.sax.helpers.XMLReaderAdapter
* @see org.xml.sax.XMLReader
* @see org.xml.sax.Parser
*/
public class ParserAdapter implements XMLReader, DocumentHandler
{
-
+ private static SecuritySupport ss = new SecuritySupport();
////////////////////////////////////////////////////////////////////
// Constructors.
@@ -102,7 +103,7 @@ public class ParserAdapter implements XMLReader, DocumentHandler
{
super();
- String driver = System.getProperty("org.xml.sax.parser");
+ String driver = ss.getSystemProperty("org.xml.sax.parser");
try {
setup(ParserFactory.makeParser());
diff --git a/jaxp/src/org/xml/sax/helpers/ParserFactory.java b/jaxp/src/org/xml/sax/helpers/ParserFactory.java
index 8709a3c..e716be9 100755
--- a/jaxp/src/org/xml/sax/helpers/ParserFactory.java
+++ b/jaxp/src/org/xml/sax/helpers/ParserFactory.java
@@ -30,12 +30,6 @@
package org.xml.sax.helpers;
-import java.lang.ClassNotFoundException;
-import java.lang.IllegalAccessException;
-import java.lang.InstantiationException;
-import java.lang.SecurityException;
-import java.lang.ClassCastException;
-
import org.xml.sax.Parser;
@@ -69,9 +63,10 @@ import org.xml.sax.Parser;
* interface.
* @since SAX 1.0
* @author David Megginson
+ * @version 2.0.1 (sax2r2)
*/
public class ParserFactory {
-
+ private static SecuritySupport ss = new SecuritySupport();
/**
* Private null constructor.
@@ -109,7 +104,7 @@ public class ParserFactory {
NullPointerException,
ClassCastException
{
- String className = System.getProperty("org.xml.sax.parser");
+ String className = ss.getSystemProperty("org.xml.sax.parser");
if (className == null) {
throw new NullPointerException("No value for sax.parser property");
} else {
@@ -146,7 +141,7 @@ public class ParserFactory {
ClassCastException
{
return (Parser) NewInstance.newInstance (
- NewInstance.getClassLoader (), className);
+ ss.getContextClassLoader(), className);
}
}
diff --git a/jaxp/src/org/xml/sax/helpers/SecuritySupport.java b/jaxp/src/org/xml/sax/helpers/SecuritySupport.java
new file mode 100644
index 0000000..cf03afb
--- /dev/null
+++ b/jaxp/src/org/xml/sax/helpers/SecuritySupport.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2004, 2006, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package org.xml.sax.helpers;
+
+import java.io.*;
+import java.security.*;
+
+/**
+ * This class is duplicated for each JAXP subpackage so keep it in sync.
+ * It is package private and therefore is not exposed as part of the JAXP
+ * API.
+ *
+ * Security related methods that only work on J2SE 1.2 and newer.
+ */
+class SecuritySupport {
+
+
+ ClassLoader getContextClassLoader() throws SecurityException{
+ return (ClassLoader)
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ ClassLoader cl = null;
+ //try {
+ cl = Thread.currentThread().getContextClassLoader();
+ //} catch (SecurityException ex) { }
+
+ if (cl == null)
+ cl = ClassLoader.getSystemClassLoader();
+
+ return cl;
+ }
+ });
+ }
+
+ String getSystemProperty(final String propName) {
+ return (String)
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return System.getProperty(propName);
+ }
+ });
+ }
+
+ FileInputStream getFileInputStream(final File file)
+ throws FileNotFoundException
+ {
+ try {
+ return (FileInputStream)
+ AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Object run() throws FileNotFoundException {
+ return new FileInputStream(file);
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (FileNotFoundException)e.getException();
+ }
+ }
+
+ InputStream getResourceAsStream(final ClassLoader cl,
+ final String name)
+ {
+ return (InputStream)
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ InputStream ris;
+ if (cl == null) {
+ ris = Object.class.getResourceAsStream(name);
+ } else {
+ ris = cl.getResourceAsStream(name);
+ }
+ return ris;
+ }
+ });
+ }
+
+ boolean doesFileExist(final File f) {
+ return ((Boolean)
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return new Boolean(f.exists());
+ }
+ })).booleanValue();
+ }
+
+}
diff --git a/jaxp/src/org/xml/sax/helpers/XMLReaderFactory.java b/jaxp/src/org/xml/sax/helpers/XMLReaderFactory.java
index 0d5ea4b..81ca862 100755
--- a/jaxp/src/org/xml/sax/helpers/XMLReaderFactory.java
+++ b/jaxp/src/org/xml/sax/helpers/XMLReaderFactory.java
@@ -34,8 +34,6 @@ package org.xml.sax.helpers;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import org.xml.sax.XMLReader;
import org.xml.sax.SAXException;
@@ -85,8 +83,8 @@ final public class XMLReaderFactory
}
private static final String property = "org.xml.sax.driver";
+ private static SecuritySupport ss = new SecuritySupport();
- private static String _clsFromJar = null;
private static boolean _jarread = false;
/**
* Attempt to create an XMLReader from system defaults.
@@ -134,43 +132,45 @@ final public class XMLReaderFactory
throws SAXException
{
String className = null;
- ClassLoader loader = NewInstance.getClassLoader ();
+ ClassLoader cl = ss.getContextClassLoader();
// 1. try the JVM-instance-wide system property
- try { className = System.getProperty (property); }
- catch (RuntimeException e) { /* normally fails for applets */ }
+ try {
+ className = ss.getSystemProperty(property);
+ }
+ catch (RuntimeException e) { /* continue searching */ }
// 2. if that fails, try META-INF/services/
if (className == null) {
if (!_jarread) {
- final ClassLoader loader1 = loader;
_jarread = true;
- _clsFromJar = (String)
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- String clsName = null;
- try {
- String service = "META-INF/services/" + property;
- InputStream in;
- BufferedReader reader;
- if (loader1 == null)
- in = ClassLoader.getSystemResourceAsStream (service);
- else
- in = loader1.getResourceAsStream (service);
-
- if (in != null) {
- reader = new BufferedReader (
- new InputStreamReader (in, "UTF8"));
- clsName = reader.readLine ();
- in.close ();
- }
- } catch (Exception e) {
+ String service = "META-INF/services/" + property;
+ InputStream in;
+ BufferedReader reader;
+
+ try {
+ if (cl != null) {
+ in = ss.getResourceAsStream(cl, service);
+
+ // If no provider found then try the current ClassLoader
+ if (in == null) {
+ cl = null;
+ in = ss.getResourceAsStream(cl, service);
}
- return clsName;
+ } else {
+ // No Context ClassLoader, try the current ClassLoader
+ in = ss.getResourceAsStream(cl, service);
+ }
+
+ if (in != null) {
+ reader = new BufferedReader (
+ new InputStreamReader (in, "UTF8"));
+ className = reader.readLine ();
+ in.close ();
}
- });
+ } catch (Exception e) {
+ }
}
- className = _clsFromJar;
}
// 3. Distro-specific fallback
@@ -187,7 +187,7 @@ final public class XMLReaderFactory
// do we know the XMLReader implementation class yet?
if (className != null)
- return loadClass (loader, className);
+ return loadClass (cl, className);
// 4. panic -- adapt any SAX1 parser
try {
@@ -217,7 +217,7 @@ final public class XMLReaderFactory
public static XMLReader createXMLReader (String className)
throws SAXException
{
- return loadClass (NewInstance.getClassLoader (), className);
+ return loadClass (ss.getContextClassLoader(), className);
}
private static XMLReader loadClass (ClassLoader loader, String className)
diff --git a/jaxws/.hgtags b/jaxws/.hgtags
index f9fcdb6..3942ec7 100755
--- a/jaxws/.hgtags
+++ b/jaxws/.hgtags
@@ -123,6 +123,7 @@ c025078c8362076503bb83b8e4da14ba7b347940 jdk7-b139
05469dd4c3662c454f8a019e492543add60795cc jdk7-b146
c01bfd68d0528bc88348813c4d75d7f5c62bc4e2 jdk7u1-b01
d13b1f877bb5ed8dceb2f7ec10365d1db5f70b2d jdk7-b147
+ce6378e3c791c56b98cbf161804a07d0225b41c0 7u0
4c24f7019ce939a452154a83151294ad7da66a9d jdk7u1-b02
272778f529d11081f548f37fcd6a7aec0b11a8dd jdk7u1-b03
48b06a6e6f46e5bcd610f4bed57cd5067cf31f8c jdk7u1-b04
@@ -197,5 +198,69 @@ a1daf7097c61181216233e4850ef6ec56b0fe6b6 jdk7u6-b18
55dcda93e8c8b5c3170def946de35dd0407eab59 jdk7u6-b21
0fec2efe2452aed9736da39add4c7f71be561838 jdk7u6-b22
afb6d773328fa76cea65dc024a448cd931d111f2 jdk7u6-b23
-55dcda93e8c8b5c3170def946de35dd0407eab59 jdk7u8-b01
-c025e953f655b375f27f8f94493ceeb43ef1d979 jdk7u8-b02
+b8b85e62d2c5347df8cf2e825e51e3de178508ea jdk7u6-b24
+fb03d08f73e98f0dd67cb81632eb9b685de49b7e jdk7u6-b30
+739ffa9dffad4cc2febe66ca1c2d86496e80741a jdk7u6-b31
+739ffa9dffad4cc2febe66ca1c2d86496e80741a jdk7u7-b10
+e9a5a78329d0518efafd9f6f6149f359a7db4e2e jdk7u7-b30
+ed6262e7bb0db4cd116c31f3c88cbd7c0288de40 jdk7u7-b11
+538c248de3ef0fcb34c28295c1eab61269708137 jdk7u7-b31
+dc2e6882056c2d400d4cf3c78d67da8e20fc37cc jdk7u7-b01
+45cf55bc1732e8495425dceb385740c6852c0fc8 jdk7u7-b02
+0289894a64a628133bb63f1dc48b45593f96a14d jdk7u9-b03
+0000000000000000000000000000000000000000 jdk7u7-b01
+dc2e6882056c2d400d4cf3c78d67da8e20fc37cc jdk7u9-b01
+0000000000000000000000000000000000000000 jdk7u7-b02
+45cf55bc1732e8495425dceb385740c6852c0fc8 jdk7u9-b02
+66a2e01550a9e84e907a7f7b96e64ee90a4ec0e4 jdk7u9-b04
+f3e42e044584b1b21de29eef1b82974d273c77dc jdk7u9-b05
+5e5703e9d18d66d7388057040d3c36e978488dc5 jdk7u9-b31
+987bb65e7b73ad94fb0edecce80d84ee5f8bda6e jdk7u9-b32
+dd8e4098681aa581d0398ad7d2d1e2547517c7e5 jdk7u10-b10
+1784290b63bcf021334b0accdb3868fdc4ca854e jdk7u10-b11
+fde9a060a04d9f9b54f36d645e91ec9a2b40cb81 jdk7u10-b12
+d7bf349cf0c60bc41a33c1f70969f11668deddb3 jdk7u10-b13
+17ec7a59002695c35dbd83a120b705e21d982d68 jdk7u10-b14
+75ecadd1f8fc5a218b1ed71b3c3df776d76e048e jdk7u10-b15
+ed609545e38c2e499437292c1541e4d1c2b8b992 jdk7u10-b16
+e63292c59ed8481864302cc3f53b498cbdea3470 jdk7u10-b17
+6a372e9b4ae978cdaf0b95277db31827794e2c1f jdk7u10-b18
+df3e4c85e26c651d098cddd546916a625fd777cd jdk7u10-b30
+29d469fac9106ce7c2f8656ee125e792908aca98 jdk7u10-b31
+846f4e01218ffe37b2dbceaf89c222c0aea43180 jdk7u11-b20
+1f06394ca182cb392e472ba7b63b28a40725629d jdk7u11-b21
+ac21be8046e06e5460d041b7e4f8140d635887fb jdk7u11-b32
+41abf18b24e9483de775bf938f8d5e673c08209d jdk7u11-b33
+ed609545e38c2e499437292c1541e4d1c2b8b992 jdk7u11-b03
+4e1dd1192649575e80d893bcab411077b77c9a0c jdk7u11-b04
+0e1eefefc2d0c8f0d0cd9e7fb7d78ae026aa8ba0 jdk7u11-b05
+7365410bb417d6a40996920bb4dbb44bdb1225a9 jdk7u11-b06
+66786f9d73c479ce70a306e14dd7f653f5b3a4f9 jdk7u11-b07
+a3cadd00459f1146fdcfa8702bbb29efdcd58960 jdk7u11-b08
+c7ea4220ad61b125bd7c4b7f112dd9ff18e9be33 jdk7u13-b09
+1d2eb88cadaf29bf577a71c69b04afe2468d8ff6 jdk7u13-b10
+21dbdd72a46a29c148ea3519268447c467540637 jdk7u13-b30
+1d2eb88cadaf29bf577a71c69b04afe2468d8ff6 jdk7u13-b20
+abcaebcead605f89cd0919add20d8ac16637ddc2 jdk7u15-b01
+62f9e7f5eb644fedd93dd93bd36bcf817a8d9c8a jdk7u15-b02
+ed9f270009f2b8606e9e0f58aeedbed36e13963e jdk7u15-b30
+297240e69d8ffcf85fc68b12af6523f7ea16397e jdk7u15-b31
+4fda3b01c75ecd80dba505f6152c21f3e1db5cce jdk7u15-b33
+eaf9b299067069826a5acdc88e15402e5a22cb5d jdk7u15-b03
+c7ea4220ad61b125bd7c4b7f112dd9ff18e9be33 jdk7u15-b32
+b8496d1dc0058341da1790bc2e7d2dbba6d4f90e jdk7u17-b01
+defde3ef03605b1660a246ea85d2e810e3fe4f6e jdk7u17-b02
+ae4272d61bc738e2d9265a68aefdc20ec648f22c jdk7u17-b30
+52c4fbd4f58f336dfdf4f680b7e7d7361ec0c3f8 jdk7u17-b31
+e07c518282bad3b315d8064da5fad222a5e3f7ed jdk7u21-b01
+0c1365d2fefb652aea34775749d68774c171ba1a jdk7u21-b02
+017171d6bc217f26e230503dd38bcf4473f339d2 jdk7u21-b03
+68e8364feffcc98b57d59675994dcb12e170ddf0 jdk7u21-b04
+8c43fd5d8cfef4d97bddc4fee7747f23a3c2bffa jdk7u21-b05
+dab51e98ee7d0f3a30b9e18b0d3591b944346868 jdk7u21-b06
+4a9533495068359d574da1060bc5a8fa6946cbc6 jdk7u21-b07
+ab11cef1dfaaec32281dc3d24a366f6691b51b7a jdk7u21-b08
+53c87e8a2ac494b57f6220bd7e25c7380aa7f418 jdk7u21-b09
+29c03ced9215a0bb63a4527dc5858b486cc4099d jdk7u21-b10
+fe6f5b57b9e67a7c6f52a5f926ac17e5c337d4a4 jdk7u21-b11
+12183763c6205c5cfe27924ccc4ca5480106c3b4 jdk7u21-b30
diff --git a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java
index 5c180e8..1b57e79 100755
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -235,7 +235,7 @@ public class ModelBuilder {
String pkg = nav.getPackageName(ci.getClazz());
if(!registries.containsKey(pkg)) {
// insert the package's object factory
- C c = nav.findClass(pkg + ".ObjectFactory",ci.getClazz());
+ C c = loadObjectFactory(ci, pkg);
if(c!=null)
addRegistry(c,(Locatable)p);
}
@@ -264,6 +264,15 @@ public class ModelBuilder {
return r;
}
+ private C loadObjectFactory(ClassInfoImpl ci, String pkg) {
+ try {
+ return nav.findClass(pkg + ".ObjectFactory", ci.getClazz());
+ } catch (SecurityException ignored) {
+ // treat SecurityException in same way as ClassNotFoundException in this case
+ return null;
+ }
+ }
+
/**
* Checks the uniqueness of the type name.
*/
diff --git a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java
index 0875cf5..68d01c8 100755
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -28,6 +28,7 @@ package com.sun.xml.internal.org.jvnet.mimepull;
import java.nio.ByteBuffer;
import java.io.File;
import java.io.IOException;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -50,41 +51,45 @@ final class MemoryData implements Data {
}
// size of the chunk given by the parser
+ @Override
public int size() {
return len;
}
+ @Override
public byte[] read() {
return data;
}
+ @Override
public long writeTo(DataFile file) {
return file.writeTo(data, 0, len);
}
/**
- *
* @param dataHead
* @param buf
* @return
*/
+ @Override
public Data createNext(DataHead dataHead, ByteBuffer buf) {
if (!config.isOnlyMemory() && dataHead.inMemory >= config.memoryThreshold) {
try {
String prefix = config.getTempFilePrefix();
String suffix = config.getTempFileSuffix();
- File dir = config.getTempDir();
- File tempFile = (dir == null)
- ? File.createTempFile(prefix, suffix)
- : File.createTempFile(prefix, suffix, dir);
- LOGGER.fine("Created temp file = "+tempFile);
+ File tempFile = TempFiles.createTempFile(prefix, suffix, config.getTempDir());
+ // delete the temp file when VM exits as a last resort for file clean up
+ tempFile.deleteOnExit();
+ if (LOGGER.isLoggable(Level.FINE)) {
+ LOGGER.log(Level.FINE, "Created temp file = {0}", tempFile);
+ }
dataHead.dataFile = new DataFile(tempFile);
- } catch(IOException ioe) {
+ } catch (IOException ioe) {
throw new MIMEParsingException(ioe);
}
if (dataHead.head != null) {
- for(Chunk c=dataHead.head; c != null; c=c.next) {
+ for (Chunk c = dataHead.head; c != null; c = c.next) {
long pointer = c.data.writeTo(dataHead.dataFile);
c.data = new FileData(dataHead.dataFile, pointer, len);
}
@@ -94,4 +99,5 @@ final class MemoryData implements Data {
return new MemoryData(buf, config);
}
}
+
}
diff --git a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java
new file mode 100644
index 0000000..797b9b7
--- /dev/null
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.org.jvnet.mimepull;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Helper utility to support jdk <= jdk1.6. After jdk1.6 EOL reflection can be removed and API can be used directly.
+ */
+class TempFiles {
+
+ private static final Logger LOGGER = Logger.getLogger(TempFiles.class.getName());
+
+ private static final Class> CLASS_FILES;
+ private static final Class> CLASS_PATH;
+ private static final Class> CLASS_FILE_ATTRIBUTE;
+ private static final Class> CLASS_FILE_ATTRIBUTES;
+ private static final Method METHOD_FILE_TO_PATH;
+ private static final Method METHOD_FILES_CREATE_TEMP_FILE;
+ private static final Method METHOD_FILES_CREATE_TEMP_FILE_WITHPATH;
+
+ private static final Method METHOD_PATH_TO_FILE;
+
+ private static boolean useJdk6API;
+
+ static {
+ useJdk6API = isJdk6();
+
+ CLASS_FILES = safeGetClass("java.nio.file.Files");
+ CLASS_PATH = safeGetClass("java.nio.file.Path");
+ CLASS_FILE_ATTRIBUTE = safeGetClass("java.nio.file.attribute.FileAttribute");
+ CLASS_FILE_ATTRIBUTES = safeGetClass("[Ljava.nio.file.attribute.FileAttribute;");
+ METHOD_FILE_TO_PATH = safeGetMethod(File.class, "toPath");
+ METHOD_FILES_CREATE_TEMP_FILE = safeGetMethod(CLASS_FILES, "createTempFile", String.class, String.class, CLASS_FILE_ATTRIBUTES);
+ METHOD_FILES_CREATE_TEMP_FILE_WITHPATH = safeGetMethod(CLASS_FILES, "createTempFile", CLASS_PATH, String.class, String.class, CLASS_FILE_ATTRIBUTES);
+ METHOD_PATH_TO_FILE = safeGetMethod(CLASS_PATH, "toFile");
+ }
+
+ private static boolean isJdk6() {
+ String javaVersion = System.getProperty("java.version");
+ LOGGER.log(Level.FINEST, "Detected java version = {0}", javaVersion);
+ return javaVersion.startsWith("1.6.");
+ }
+
+ private static Class> safeGetClass(String className) {
+ // it is jdk 6 or something failed already before
+ if (useJdk6API) return null;
+ try {
+ return Class.forName(className);
+ } catch (ClassNotFoundException e) {
+ LOGGER.log(Level.SEVERE, "Exception cought", e);
+ LOGGER.log(Level.WARNING, "Class {0} not found. Temp files will be created using old java.io API.", className);
+ useJdk6API = true;
+ return null;
+ }
+ }
+
+ private static Method safeGetMethod(Class> clazz, String methodName, Class>... parameterTypes) {
+ // it is jdk 6 or something failed already before
+ if (useJdk6API) return null;
+ try {
+ return clazz.getMethod(methodName, parameterTypes);
+ } catch (NoSuchMethodException e) {
+ LOGGER.log(Level.SEVERE, "Exception cought", e);
+ LOGGER.log(Level.WARNING, "Method {0} not found. Temp files will be created using old java.io API.", methodName);
+ useJdk6API = true;
+ return null;
+ }
+ }
+
+
+ static Object toPath(File f) throws InvocationTargetException, IllegalAccessException {
+ return METHOD_FILE_TO_PATH.invoke(f);
+ }
+
+ static File toFile(Object path) throws InvocationTargetException, IllegalAccessException {
+ return (File) METHOD_PATH_TO_FILE.invoke(path);
+ }
+
+ static File createTempFile(String prefix, String suffix, File dir) throws IOException {
+
+ if (useJdk6API) {
+ LOGGER.log(Level.FINEST, "Jdk6 detected, temp file (prefix:{0}, suffix:{1}) being created using old java.io API.", new Object[]{prefix, suffix});
+ return File.createTempFile(prefix, suffix, dir);
+
+ } else {
+
+ try {
+ if (dir != null) {
+ Object path = toPath(dir);
+ LOGGER.log(Level.FINEST, "Temp file (path: {0}, prefix:{1}, suffix:{2}) being created using NIO API.", new Object[]{dir.getAbsolutePath(), prefix, suffix});
+ return toFile(METHOD_FILES_CREATE_TEMP_FILE_WITHPATH.invoke(null, path, prefix, suffix, Array.newInstance(CLASS_FILE_ATTRIBUTE, 0)));
+ } else {
+ LOGGER.log(Level.FINEST, "Temp file (prefix:{0}, suffix:{1}) being created using NIO API.", new Object[]{prefix, suffix});
+ return toFile(METHOD_FILES_CREATE_TEMP_FILE.invoke(null, prefix, suffix, Array.newInstance(CLASS_FILE_ATTRIBUTE, 0)));
+ }
+
+ } catch (IllegalAccessException e) {
+ LOGGER.log(Level.SEVERE, "Exception caught", e);
+ LOGGER.log(Level.WARNING, "Error invoking java.nio API, temp file (path: {0}, prefix:{1}, suffix:{2}) being created using old java.io API.",
+ new Object[]{dir != null ? dir.getAbsolutePath() : null, prefix, suffix});
+ return File.createTempFile(prefix, suffix, dir);
+
+ } catch (InvocationTargetException e) {
+ LOGGER.log(Level.SEVERE, "Exception caught", e);
+ LOGGER.log(Level.WARNING, "Error invoking java.nio API, temp file (path: {0}, prefix:{1}, suffix:{2}) being created using old java.io API.",
+ new Object[]{dir != null ? dir.getAbsolutePath() : null, prefix, suffix});
+ return File.createTempFile(prefix, suffix, dir);
+ }
+ }
+
+ }
+
+
+}
diff --git a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java
index aee78d9..f2d953a 100755
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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
@@ -22,7 +22,6 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
-
package com.sun.xml.internal.ws.client;
import com.sun.istack.internal.NotNull;
@@ -30,13 +29,11 @@ import com.sun.istack.internal.Nullable;
import com.sun.xml.internal.ws.Closeable;
import com.sun.xml.internal.ws.api.BindingID;
import com.sun.xml.internal.ws.api.EndpointAddress;
-import com.sun.xml.internal.ws.api.WSBinding;
import com.sun.xml.internal.ws.api.WSService;
import com.sun.xml.internal.ws.api.addressing.WSEndpointReference;
import com.sun.xml.internal.ws.api.client.ServiceInterceptor;
import com.sun.xml.internal.ws.api.client.ServiceInterceptorFactory;
-import com.sun.xml.internal.ws.api.model.SEIModel;
-import com.sun.xml.internal.ws.api.pipe.*;
+import com.sun.xml.internal.ws.api.pipe.Stubs;
import com.sun.xml.internal.ws.api.server.Container;
import com.sun.xml.internal.ws.api.server.ContainerResolver;
import com.sun.xml.internal.ws.api.wsdl.parser.WSDLParserExtension;
@@ -45,8 +42,8 @@ import com.sun.xml.internal.ws.binding.WebServiceFeatureList;
import com.sun.xml.internal.ws.client.HandlerConfigurator.AnnotationConfigurator;
import com.sun.xml.internal.ws.client.HandlerConfigurator.HandlerResolverImpl;
import com.sun.xml.internal.ws.client.sei.SEIStub;
-import com.sun.xml.internal.ws.developer.WSBindingProvider;
import com.sun.xml.internal.ws.developer.UsesJAXBContextFeature;
+import com.sun.xml.internal.ws.developer.WSBindingProvider;
import com.sun.xml.internal.ws.model.AbstractSEIModelImpl;
import com.sun.xml.internal.ws.model.RuntimeModeler;
import com.sun.xml.internal.ws.model.SOAPSEIModel;
@@ -59,7 +56,6 @@ import com.sun.xml.internal.ws.resources.ProviderApiMessages;
import com.sun.xml.internal.ws.util.JAXWSUtils;
import com.sun.xml.internal.ws.util.ServiceConfigurationError;
import com.sun.xml.internal.ws.util.ServiceFinder;
-import static com.sun.xml.internal.ws.util.xml.XmlUtil.createDefaultCatalogResolver;
import com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser;
import org.xml.sax.SAXException;
@@ -74,16 +70,17 @@ import javax.xml.ws.*;
import javax.xml.ws.handler.HandlerResolver;
import javax.xml.ws.soap.AddressingFeature;
import java.io.IOException;
+import java.lang.RuntimePermission;
import java.lang.reflect.Proxy;
import java.net.MalformedURLException;
import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
+import java.security.*;
import java.util.*;
import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
+import static com.sun.xml.internal.ws.util.xml.XmlUtil.createDefaultCatalogResolver;
+
/**
* Service objects provide the client view of a Web service.
*
@@ -578,7 +575,7 @@ public class WSServiceDelegate extends WSService {
}
}
- private T createEndpointIFBaseProxy(@Nullable WSEndpointReference epr,QName portName, Class portInterface,
+ private T createEndpointIFBaseProxy(@Nullable WSEndpointReference epr,QName portName, final Class portInterface,
WebServiceFeature[] webServiceFeatures, SEIPortInfo eif) {
//fail if service doesnt have WSDL
if (wsdlService == null)
@@ -592,14 +589,37 @@ public class WSServiceDelegate extends WSService {
BindingImpl binding = eif.createBinding(webServiceFeatures,portInterface);
SEIStub pis = new SEIStub(eif, binding, eif.model, epr);
- T proxy = portInterface.cast(Proxy.newProxyInstance(portInterface.getClassLoader(),
- new Class[]{portInterface, WSBindingProvider.class, Closeable.class}, pis));
+ T proxy = createProxy(portInterface, pis);
+
if (serviceInterceptor != null) {
serviceInterceptor.postCreateProxy((WSBindingProvider)proxy, portInterface);
}
return proxy;
}
+ private T createProxy(final Class portInterface, final SEIStub pis) {
+
+ // accessClassInPackage privilege needs to be granted ...
+ RuntimePermission perm = new RuntimePermission("accessClassInPackage.com.sun." + "xml.internal.*");
+ PermissionCollection perms = perm.newPermissionCollection();
+ perms.add(perm);
+
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public T run() {
+ Object proxy = Proxy.newProxyInstance(portInterface.getClassLoader(),
+ new Class[]{portInterface, WSBindingProvider.class, Closeable.class}, pis);
+ return portInterface.cast(proxy);
+ }
+ },
+ new AccessControlContext(
+ new ProtectionDomain[]{
+ new ProtectionDomain(null, perms)
+ })
+ );
+ }
+
/**
* Lists up the port names in WSDL. For error diagnostics.
*/
diff --git a/jaxws/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java b/jaxws/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java
index 8f0ba86..dd6908c 100755
--- a/jaxws/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java
+++ b/jaxws/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. 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
@@ -43,20 +43,12 @@ class FactoryFinder {
throws SOAPException
{
try {
- Class spiClass;
- if (classLoader == null) {
- spiClass = Class.forName(className);
- } else {
- spiClass = classLoader.loadClass(className);
- }
+ Class spiClass = safeLoadClass(className, classLoader);
return spiClass.newInstance();
} catch (ClassNotFoundException x) {
- throw new SOAPException(
- "Provider " + className + " not found", x);
+ throw new SOAPException("Provider " + className + " not found", x);
} catch (Exception x) {
- throw new SOAPException(
- "Provider " + className + " could not be instantiated: " + x,
- x);
+ throw new SOAPException("Provider " + className + " could not be instantiated: " + x, x);
}
}
@@ -73,11 +65,65 @@ class FactoryFinder {
* a system property
* @exception SOAPException if there is a SOAP error
*/
- static Object find(String factId)
+ static Object find(String factoryId)
throws SOAPException
{
- final ClassLoader classLoader;
- final String factoryId = factId;
+ return find(factoryId, null, false);
+ }
+
+ /**
+ * Finds the implementation Class object for the given
+ * factory name, or if that fails, finds the Class object
+ * for the given fallback class name. The arguments supplied must be
+ * used in order. If using the first argument is successful, the second
+ * one will not be used.
+ *
+ * This method is package private so that this code can be shared.
+ *
+ * @return the Class object of the specified message factory;
+ * may be null
+ *
+ * @param factoryId the name of the factory to find, which is
+ * a system property
+ * @param fallbackClassName the implementation class name, which is
+ * to be used only if nothing else
+ * is found; null to indicate that
+ * there is no fallback class name
+ * @exception SOAPException if there is a SOAP error
+ */
+ static Object find(String factoryId, String fallbackClassName)
+ throws SOAPException
+ {
+ return find(factoryId, fallbackClassName, true);
+ }
+
+ /**
+ * Finds the implementation Class object for the given
+ * factory name, or if that fails, finds the Class object
+ * for the given default class name, but only if tryFallback
+ * is true. The arguments supplied must be used in order
+ * If using the first argument is successful, the second one will not
+ * be used. Note the default class name may be needed even if fallback
+ * is not to be attempted, so certain error conditions can be handled.
+ *
+ * This method is package private so that this code can be shared.
+ *
+ * @return the Class object of the specified message factory;
+ * may not be null
+ *
+ * @param factoryId the name of the factory to find, which is
+ * a system property
+ * @param defaultClassName the implementation class name, which is
+ * to be used only if nothing else
+ * is found; null to indicate
+ * that there is no default class name
+ * @param tryFallback whether to try the default class as a
+ * fallback
+ * @exception SOAPException if there is a SOAP error
+ */
+ static Object find(String factoryId, String defaultClassName,
+ boolean tryFallback) throws SOAPException {
+ ClassLoader classLoader;
try {
classLoader = Thread.currentThread().getContextClassLoader();
} catch (Exception x) {
@@ -99,7 +145,7 @@ class FactoryFinder {
String javah=System.getProperty( "java.home" );
String configFile = javah + File.separator +
"lib" + File.separator + "jaxm.properties";
- final File f=new File( configFile );
+ File f=new File( configFile );
if( f.exists()) {
Properties props=new Properties();
props.load( new FileInputStream(f));
@@ -134,49 +180,56 @@ class FactoryFinder {
} catch( Exception ex ) {
}
- return null;
+ // If not found and fallback should not be tried, return a null result.
+ if (!tryFallback)
+ return null;
+
+ // We didn't find the class through the usual means so try the default
+ // (built in) factory if specified.
+ if (defaultClassName == null) {
+ throw new SOAPException(
+ "Provider for " + factoryId + " cannot be found", null);
+ }
+ return newInstance(defaultClassName, classLoader);
}
/**
- * Finds the implementation Class object for the given
- * factory name, or if that fails, finds the Class object
- * for the given fallback class name. The arguments supplied must be
- * used in order. If using the first argument is successful, the second
- * one will not be used.
- *
- * This method is package private so that this code can be shared.
- *
- * @return the Class object of the specified message factory;
- * may not be null
- *
- * @param factoryId the name of the factory to find, which is
- * a system property
- * @param fallbackClassName the implementation class name, which is
- * to be used only if nothing else
- * is found; null to indicate that
- * there is no fallback class name
- * @exception SOAPException if there is a SOAP error
+ * Loads the class, provided that the calling thread has an access to the
+ * class being loaded. If this is the specified default factory class and it
+ * is restricted by package.access we get a SecurityException and can do a
+ * Class.forName() on it so it will be loaded by the bootstrap class loader.
*/
- static Object find(String factoryId, String fallbackClassName)
- throws SOAPException
- {
-
- Object obj = find(factoryId);
- if (obj != null)
- return obj;
-
- ClassLoader classLoader;
+ private static Class safeLoadClass(String className,
+ ClassLoader classLoader)
+ throws ClassNotFoundException {
try {
- classLoader = Thread.currentThread().getContextClassLoader();
- } catch (Exception x) {
- throw new SOAPException(x.toString(), x);
- }
+ // make sure that the current thread has an access to the package of the given name.
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ int i = className.lastIndexOf('.');
+ if (i != -1) {
+ s.checkPackageAccess(className.substring(0, i));
+ }
+ }
- if (fallbackClassName == null) {
- throw new SOAPException(
- "Provider for " + factoryId + " cannot be found", null);
+ if (classLoader == null)
+ return Class.forName(className);
+ else
+ return classLoader.loadClass(className);
+ } catch (SecurityException se) {
+ // (only) default implementation can be loaded
+ // using bootstrap class loader ...
+ if (isDefaultImplementation(className))
+ return Class.forName(className);
+
+ throw se;
}
+ }
- return newInstance(fallbackClassName, classLoader);
+ private static boolean isDefaultImplementation(String className) {
+ return MessageFactory.DEFAULT_MESSAGE_FACTORY.equals(className) ||
+ SOAPFactory.DEFAULT_SOAP_FACTORY.equals(className) ||
+ SOAPConnectionFactory.DEFAULT_SOAP_CONNECTION_FACTORY.equals(className) ||
+ SAAJMetaFactory.DEFAULT_META_FACTORY_CLASS.equals(className);
}
}
diff --git a/jaxws/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java b/jaxws/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java
index 5933b1d..42fbe11 100755
--- a/jaxws/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java
+++ b/jaxws/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. 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
@@ -66,7 +66,7 @@ import java.io.InputStream;
*/
public abstract class MessageFactory {
- static private final String DEFAULT_MESSAGE_FACTORY
+ static final String DEFAULT_MESSAGE_FACTORY
= "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl";
static private final String MESSAGE_FACTORY_PROPERTY
@@ -99,11 +99,14 @@ public abstract class MessageFactory {
public static MessageFactory newInstance()
throws SOAPException {
try {
- MessageFactory factory = (MessageFactory)
- FactoryFinder.find(MESSAGE_FACTORY_PROPERTY);
+ MessageFactory factory = (MessageFactory) FactoryFinder.find(
+ MESSAGE_FACTORY_PROPERTY,
+ DEFAULT_MESSAGE_FACTORY,
+ false);
- if (factory != null)
+ if (factory != null) {
return factory;
+ }
return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
} catch (Exception ex) {
diff --git a/jaxws/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java b/jaxws/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java
index b7316e6..e7fcf81 100755
--- a/jaxws/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java
+++ b/jaxws/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. 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
@@ -44,7 +44,7 @@ package javax.xml.soap;
public abstract class SAAJMetaFactory {
static private final String META_FACTORY_CLASS_PROPERTY =
"javax.xml.soap.MetaFactory";
- static private final String DEFAULT_META_FACTORY_CLASS =
+ static final String DEFAULT_META_FACTORY_CLASS =
"com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl";
/**
diff --git a/jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java b/jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java
index 9d9ea6b..c1e51f0 100755
--- a/jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java
+++ b/jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. 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
@@ -38,7 +38,7 @@ public abstract class SOAPConnectionFactory {
* A constant representing the default value for a SOAPConnection
* object. The default is the point-to-point SOAP connection.
*/
- static private final String DEFAULT_SOAP_CONNECTION_FACTORY
+ static final String DEFAULT_SOAP_CONNECTION_FACTORY
= "com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory";
/**
diff --git a/jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java b/jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java
index 1b97406..1c39a23 100755
--- a/jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java
+++ b/jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. 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
@@ -54,6 +54,12 @@ public abstract class SOAPFactory {
"javax.xml.soap.SOAPFactory";
/**
+ * Class name of default SOAPFactory implementation.
+ */
+ static final String DEFAULT_SOAP_FACTORY
+ = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl";
+
+ /**
* Creates a SOAPElement object from an existing DOM
* Element. If the DOM Element that is passed in
* as an argument is already a SOAPElement then this method
@@ -255,7 +261,7 @@ public abstract class SOAPFactory {
throws SOAPException
{
try {
- SOAPFactory factory = (SOAPFactory) FactoryFinder.find(SOAP_FACTORY_PROPERTY);
+ SOAPFactory factory = (SOAPFactory) FactoryFinder.find(SOAP_FACTORY_PROPERTY, DEFAULT_SOAP_FACTORY, false);
if (factory != null)
return factory;
return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
diff --git a/jdk/.hgtags b/jdk/.hgtags
index b80e952..ba80b78 100755
--- a/jdk/.hgtags
+++ b/jdk/.hgtags
@@ -123,6 +123,7 @@ efbf75c24b0f31847c9c403f6dc07dc80551908d jdk7-b143
539e576793a8e64aaf160e0d6ab0b9723cd0bef0 jdk7-b146
69e973991866c948cf1808b06884ef2d28b64fcb jdk7u1-b01
f097ca2434b1412b12ab4a5c2397ce271bf681e7 jdk7-b147
+0870207843e2a74816dff1e33a717ffaf6f0a919 7u0
2baf612764d215e6f3a5b48533f74c6924ac98d7 jdk7u1-b02
a4781b6d9cfb6901452579adee17c9a17c1b584c jdk7u1-b03
b223ed9a5fdf8ce3af42adfa8815975811d70eae jdk7u1-b04
@@ -197,5 +198,65 @@ a263f787ced5bc7c14078ae552c82de6bd011611 jdk7u6-b19
243717d7fe9589148951ffb5551264af0e446314 jdk7u6-b21
d78f2b600d393f45d6ace8ca0f29ad677624a775 jdk7u6-b22
0ae89e53f5300da1961984a7d81c220c7cf717d7 jdk7u6-b23
-df945ef30444adf08f3ef14b0c49c8bda6dda587 jdk7u8-b01
-dd1e513c05b8b8c8402e9ecf9c0d5bdbebb1a089 jdk7u8-b02
+1c775da998735711853cfe1ae1d6baddc5f12a66 jdk7u6-b24
+4bd0528374971157afd6372890f4250e1cf712d9 jdk7u6-b30
+8c2c5d63a17ee5aa85face026d6f60fb7d34aded jdk7u6-b31
+78e01a6ca8d30e8fc4eb297d297a098edfb3fec6 jdk7u7-b10
+9666d4e4bbf3f80614e246d5c15df86154544013 jdk7u7-b30
+94154c14973aee7c5ff4846af7bcb71fe7a82fa5 jdk7u7-b11
+f93d2e3b2610b612401c95dd56d1a1122d35f676 jdk7u7-b31
+94a7d51992ae6fd31f9adc15c4976d6354dca14d jdk7u7-b01
+901c290c9c8b495a2696f10a87523363239d001b jdk7u7-b02
+0e2200a8762c1fdbd1ea812ba3f6535245372c81 jdk7u9-b03
+0000000000000000000000000000000000000000 jdk7u7-b01
+94a7d51992ae6fd31f9adc15c4976d6354dca14d jdk7u9-b01
+0000000000000000000000000000000000000000 jdk7u7-b02
+901c290c9c8b495a2696f10a87523363239d001b jdk7u9-b02
+7302c386ca9c6cd20c27d0a2adb0b142f679d6b3 jdk7u9-b04
+ffad06d7009576c3098705e05452ebc309a59e56 jdk7u9-b05
+3b1a395f1948c7063d342a0c3e26c8450c6e7acb jdk7u9-b31
+77f7e5f13763fed11afb6e12840d78bd55c2d979 jdk7u9-b32
+c1efb11d7db509dafd7882811b2562ba593f6431 jdk7u10-b10
+0243e41000c6f76654725cac31ffdc95633c63e7 jdk7u10-b11
+c86a49dd4a0dca3a56f00429cfcffb2ad5f2a224 jdk7u10-b12
+c6de70ed568d190c9c7d9641b88b9b5f1bc36fd5 jdk7u10-b13
+abe96e9e10f973cf0fdacc1475e69a274ef76fcf jdk7u10-b14
+c9a0e381cd8eaf62bcacfd59b01c249de81ae167 jdk7u10-b15
+ed59989fb0635f2d4461173e218c43494f06bb82 jdk7u10-b16
+a1c5bac982a6d4aa58f551cb46cde53f526aca48 jdk7u10-b17
+115d1e4365293846bbc911cf312886c471e37fbd jdk7u10-b18
+84218dff5e4c7bc00fd9266769c0d12bdde866f5 jdk7u10-b30
+3515fd583ede49b125a0b5f72ac403b3984d199b jdk7u10-b31
+ecc14534318c80dc7612c8b1d328a67849c5b07f jdk7u11-b20
+d9969a953f693f5760b1d2759f11a2cb222e4f20 jdk7u11-b21
+c7282a85c6bcc717b7099a03db028ecb77b41098 jdk7u11-b32
+8fd5e105c6a288b01f8809a6c84a5a64a63f39be jdk7u11-b33
+84da14fbd3ac12a3c6734fa4b6a366cfde1426af jdk7u11-b03
+932ef74edbf984299a68c126c70bbe04ffbde9b5 jdk7u11-b04
+fb35fb91f6478f8076993bcc4112746bcd9a2985 jdk7u11-b05
+f26def552d2c4873aeaee00241f60efc462a11a7 jdk7u11-b06
+1d14a3d7bac870423e52a889d2f5f60ee76ddc6a jdk7u11-b07
+ee61b528b3f866b20095f5e9593896d4ea4be468 jdk7u11-b08
+0b9564dab118d40bc5edc60269f736f97ab6f385 jdk7u13-b09
+cbbb166b38eb15f5d5c68e913ee18f6f352b7af0 jdk7u13-b10
+28700a56b69d80e70aecf230ab7f9ad4bb5acf23 jdk7u13-b30
+8eb180a284b0911b2645d5cbdff5be499a75d6b2 jdk7u13-b20
+835448d525a10bb826f4f7ebe272fc410bdb0f5d jdk7u15-b01
+0443fe2d8023111b52f4c8db32e038f4a5a9f373 jdk7u15-b02
+70b0f967c0649c501fb14a27bb06daeccbff823a jdk7u15-b30
+9f20468265071696b4d2ece286bc228a4d5a302a jdk7u15-b31
+3ef25219292f57ea56ac0ef338ceadf5fd098bdf jdk7u15-b33
+87e45d30e24db726ea03b20d861f0a025e437641 jdk7u15-b03
+b5ae6fb92e71df1833221026efe50863593bf682 jdk7u17-b01
+b130c8cfecfc552614047b3244d5d94439827fcd jdk7u17-b02
+a474615061bf610105a426780a7ac4c95bd76456 jdk7u17-b30
+1ad6f413e250bd2671b4908e232bd0d244c917a7 jdk7u17-b31
+8261e56b7f91c7553e8485b206bdc9030a3546e4 jdk7u21-b01
+af6be9d7aed7c323858932c908b049f4bcdb6a3e jdk7u21-b05
+ffc1454e644a39265cd6d80ef4b4c12c5dbf35c9 jdk7u21-b06
+b453d9be6b3f5496aa217ade7478d3b7fa32b13b jdk7u21-b07
+de4e41c5c549136209a68154d847cf126e563b88 jdk7u21-b08
+622aedcdda610a148a082558a0c25d8b3b735d07 jdk7u21-b09
+f447c3bbf074439ece0ce9fea82c857f93817801 jdk7u21-b10
+f9323b9d020ce8d313af2d2e2682e2b6cabcc40d jdk7u21-b11
+08ed0bfc9668f04ce4e3803f16aad92f6e50f885 jdk7u21-b30
diff --git a/jdk/make/com/oracle/security/ucrypto/Makefile b/jdk/make/com/oracle/security/ucrypto/Makefile
index f6545e8..f779bf4 100755
--- a/jdk/make/com/oracle/security/ucrypto/Makefile
+++ b/jdk/make/com/oracle/security/ucrypto/Makefile
@@ -198,9 +198,9 @@ ifndef OPENJDK
#
# Build ucrypto.jar.
#
- $(UNSIGNED_DIR)/ucrypto.jar: build
+ $(UNSIGNED_DIR)/ucrypto.jar: build $(JCE_MANIFEST_FILE)
$(prep-target)
- $(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
+ $(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
diff --git a/jdk/make/com/sun/nio/Makefile b/jdk/make/com/sun/nio/Makefile
index 288b629..8404f23 100755
--- a/jdk/make/com/sun/nio/Makefile
+++ b/jdk/make/com/sun/nio/Makefile
@@ -31,11 +31,18 @@ BUILDDIR = ../../..
include $(BUILDDIR)/common/Defs.gmk
# MMM: disable for now
-ifneq ($(PLATFORM), macosx)
+ifeq (,$(findstring $(PLATFORM), bsd macosx))
include $(BUILDDIR)/common/Subdirs.gmk
SUBDIRS = sctp
endif
+ifeq ($(OS_VENDOR), FreeBSD)
+# FreeBSD 5.x and lower are unsupported, 6.x has no sctp support.
+ifneq ($(call MajorVersion,$(shell uname -r)), 6)
+include $(BUILDDIR)/common/Subdirs.gmk
+SUBDIRS = sctp
+endif
+endif
all build clean clobber::
$(SUBDIRS-loop)
diff --git a/jdk/make/com/sun/nio/sctp/Makefile b/jdk/make/com/sun/nio/sctp/Makefile
index e71a92b..450116a 100755
--- a/jdk/make/com/sun/nio/sctp/Makefile
+++ b/jdk/make/com/sun/nio/sctp/Makefile
@@ -59,15 +59,11 @@ OTHER_INCLUDES += \
-I$(PLATFORM_SRC)/native/java/net \
-I$(CLASSHDRDIR)/../../../../java/java.nio/nio/CClassHeaders
+OTHER_LDLIBS += $(LIBSOCKET) -L$(LIBDIR)/$(LIBARCH) -lnet -lnio
ifeq ($(PLATFORM), linux)
COMPILER_WARNINGS_FATAL=true
-#OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread -ldl
-OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -lnio -lnet -lpthread -ldl
+OTHER_LDLIBS += -lpthread $(LIBDL)
endif
-ifeq ($(PLATFORM), solaris)
-#LIBSCTP = -lsctp
-OTHER_LDLIBS += $(LIBSOCKET) -L$(LIBDIR)/$(LIBARCH) -lnet -lnio
-endif # PLATFORM
else # windows
include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/com/sun/security/auth/module/Makefile b/jdk/make/com/sun/security/auth/module/Makefile
index ea5b663..2bb6af1 100755
--- a/jdk/make/com/sun/security/auth/module/Makefile
+++ b/jdk/make/com/sun/security/auth/module/Makefile
@@ -67,7 +67,7 @@ ifeq ($(PLATFORM), solaris)
include FILES_c_solaris.gmk
endif # solaris
-ifneq (,$(findstring $(PLATFORM), linux macosx))
+ifneq (,$(findstring $(PLATFORM), linux bsd macosx))
LIBRARY = jaas_unix
include FILES_export_unix.gmk
include FILES_c_unix.gmk
diff --git a/jdk/make/com/sun/tools/attach/Exportedfiles.gmk b/jdk/make/com/sun/tools/attach/Exportedfiles.gmk
index 8852c76..b94daad 100755
--- a/jdk/make/com/sun/tools/attach/Exportedfiles.gmk
+++ b/jdk/make/com/sun/tools/attach/Exportedfiles.gmk
@@ -43,7 +43,7 @@ FILES_export = \
sun/tools/attach/LinuxVirtualMachine.java
endif
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
FILES_export = \
sun/tools/attach/BsdVirtualMachine.java
endif
diff --git a/jdk/make/com/sun/tools/attach/FILES_c.gmk b/jdk/make/com/sun/tools/attach/FILES_c.gmk
index 8a5baec..90a1f71 100755
--- a/jdk/make/com/sun/tools/attach/FILES_c.gmk
+++ b/jdk/make/com/sun/tools/attach/FILES_c.gmk
@@ -39,7 +39,7 @@ FILES_c = \
LinuxVirtualMachine.c
endif
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
FILES_c = \
BsdVirtualMachine.c
endif
diff --git a/jdk/make/com/sun/tools/attach/FILES_java.gmk b/jdk/make/com/sun/tools/attach/FILES_java.gmk
index 6e11f8c..b847b6f 100755
--- a/jdk/make/com/sun/tools/attach/FILES_java.gmk
+++ b/jdk/make/com/sun/tools/attach/FILES_java.gmk
@@ -43,7 +43,7 @@ FILES_java += \
sun/tools/attach/LinuxAttachProvider.java
endif
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
FILES_java += \
sun/tools/attach/BsdAttachProvider.java
endif
diff --git a/jdk/make/com/sun/tools/attach/Makefile b/jdk/make/com/sun/tools/attach/Makefile
index 2f6d787..321414b 100755
--- a/jdk/make/com/sun/tools/attach/Makefile
+++ b/jdk/make/com/sun/tools/attach/Makefile
@@ -38,7 +38,7 @@ endif
ifeq ($(PLATFORM), linux)
FILES_m = mapfile-linux
endif
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
FILES_m = mapfile-bsd
endif
include $(BUILDDIR)/common/Mapfile-vers.gmk
@@ -57,7 +57,7 @@ ifeq ($(PLATFORM), windows)
EXTRA_LIBS += psapi.lib
endif
-ifeq ($PLATFORM), macosx)
+ifeq ($(PLATFORM), macosx)
vpath %.c $(call NativeSrcDirList,,native/sun/tools/attach)
else
vpath %.c $(PLATFORM_SRC)/native/sun/tools/attach
diff --git a/jdk/make/common/Defs-bsd.gmk b/jdk/make/common/Defs-bsd.gmk
new file mode 100644
index 0000000..7b3106b
--- /dev/null
+++ b/jdk/make/common/Defs-bsd.gmk
@@ -0,0 +1,490 @@
+#
+# Copyright (c) 1999, 2012, Oracle and/or its affiliates. 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. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+#
+# Makefile to specify compiler flags for programs and libraries
+# targeted to BSD. Should not contain any rules.
+#
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+# Warning: the following variables are overriden by Defs.gmk. Set
+# values will be silently ignored:
+# CFLAGS (set $(OTHER_CFLAGS) instead)
+# CPPFLAGS (set $(OTHER_CPPFLAGS) instead)
+# CXXFLAGS (set $(OTHER_CXXFLAGS) instead)
+# LDFLAGS (set $(OTHER_LDFAGS) instead)
+# LDLIBS (set $(EXTRA_LIBS) instead)
+# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
+
+# Get shared JDK settings
+include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
+
+# Part of INCREMENTAL_BUILD mechanism.
+# Compiler emits things like: path/file.o: file.h
+# We want something like: relative_path/file.o relative_path/file.d: file.h
+CC_DEPEND = -MM
+CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g'
+
+ifndef PLATFORM_SRC
+ PLATFORM_SRC = $(BUILDDIR)/../src/solaris
+endif # PLATFORM_SRC
+
+# Location of the various .properties files specific to BSD platform
+ifndef PLATFORM_PROPERTIES
+ PLATFORM_PROPERTIES = $(BUILDDIR)/../src/solaris/lib
+endif # PLATFORM_SRC
+
+# BSD build pulls its platform sources from the solaris tree.
+JAVA_SRCDIR_LIST = src/macosx src/solaris src/share
+NATIVE_SRCDIR_LIST = src/macosx src/solaris src/share
+
+# Platform specific closed sources
+ifndef OPENJDK
+ ifndef CLOSED_PLATFORM_SRC
+ CLOSED_PLATFORM_SRC = $(BUILDDIR)/../src/closed/solaris
+ endif
+endif
+
+# platform specific include files
+PLATFORM_INCLUDE_NAME = $(OS_NAME)
+PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
+
+# suffix used for make dependencies files.
+DEPEND_SUFFIX = d
+# The suffix applied to the library name for FDLIBM
+FDDLIBM_SUFFIX = a
+# The suffix applied to scripts (.bat for windows, nothing for unix)
+SCRIPT_SUFFIX =
+# CC compiler object code output directive flag value
+CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
+CC_PROGRAM_OUTPUT_FLAG = -o #trailing blank required!
+
+# The Full Debug Symbols (FDS) default for VARIANT == OPT builds is
+# enabled with debug info files ZIP'ed to save space. For VARIANT !=
+# OPT builds, FDS is always enabled, after all a debug build without
+# debug info isn't very useful. The ZIP_DEBUGINFO_FILES option only has
+# meaning when FDS is enabled.
+#
+# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
+# disabled for a VARIANT == OPT build.
+#
+# Note: Use of a different variable name for the FDS override option
+# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
+# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
+# in options via environment variables, use of distinct variables
+# prevents strange behaviours. For example, in a VARIANT != OPT build,
+# the FULL_DEBUG_SYMBOLS environment variable will be 0, but the
+# ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If the same
+# variable name is used, then different values can be picked up by
+# different parts of the build. Just to be clear, we only need two
+# variable names because the incoming option value can be overridden
+# in some situations, e.g., a VARIANT != OPT build.
+
+ifeq ($(VARIANT), OPT)
+ FULL_DEBUG_SYMBOLS ?= 1
+ ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
+else
+ # debug variants always get Full Debug Symbols (if available)
+ ENABLE_FULL_DEBUG_SYMBOLS = 1
+endif
+_JUNK_ := $(shell \
+ echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
+# since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
+
+ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ # Default OBJCOPY comes from GNU Binutils on BSD:
+ DEF_OBJCOPY=/usr/bin/objcopy
+ ifdef CROSS_COMPILE_ARCH
+ # don't try to generate .debuginfo files when cross compiling
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: cross compiling for ARCH $(CROSS_COMPILE_ARCH)," \
+ "skipping .debuginfo generation.")
+ OBJCOPY=
+ else
+ OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
+ ifneq ($(ALT_OBJCOPY),)
+ _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
+ # disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path
+ OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
+ endif
+ endif
+
+ # Setting ENABLE_FULL_DEBUG_SYMBOLS=1 (and OBJCOPY) above enables the
+ # JDK build to import .debuginfo or .diz files from the HotSpot build.
+ # However, adding FDS support to the JDK build will occur in phases
+ # so a different make variable (LIBRARY_SUPPORTS_FULL_DEBUG_SYMBOLS
+ # and PROGRAM_SUPPORTS_FULL_DEBUG_SYMBOLS) is used to indicate that a
+ # particular library or program supports FDS.
+
+ ifeq ($(OBJCOPY),)
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
+ ENABLE_FULL_DEBUG_SYMBOLS=0
+ else
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
+
+ # Library stripping policies for .debuginfo configs:
+ # all_strip - strips everything from the library
+ # min_strip - strips most stuff from the library; leaves minimum symbols
+ # no_strip - does not strip the library at all
+ #
+ # Oracle security policy requires "all_strip". A waiver was granted on
+ # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
+ #
+ # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
+ STRIP_POLICY ?= min_strip
+
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
+
+ ZIP_DEBUGINFO_FILES ?= 1
+
+ _JUNK_ := $(shell \
+ echo >&2 "INFO: ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)")
+ endif
+endif
+
+#
+# Default optimization
+#
+
+ifndef OPTIMIZATION_LEVEL
+ ifeq ($(PRODUCT), java)
+ OPTIMIZATION_LEVEL = HIGHER
+ else
+ OPTIMIZATION_LEVEL = LOWER
+ endif
+endif
+ifndef FASTDEBUG_OPTIMIZATION_LEVEL
+ FASTDEBUG_OPTIMIZATION_LEVEL = LOWER
+endif
+
+CC_OPT/NONE =
+CC_OPT/LOWER = -O2
+CC_OPT/HIGHER = -O3
+CC_OPT/HIGHEST = -O3
+
+CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
+
+# For all platforms, do not omit the frame pointer register usage.
+# We need this frame pointer to make it easy to walk the stacks.
+# This should be the default on X86, but ia64 and amd64 may not have this
+# as the default.
+CFLAGS_REQUIRED_amd64 += -m64 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+LDFLAGS_COMMON_amd64 += -m64
+CFLAGS_REQUIRED_i586 += -m32 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+LDFLAGS_COMMON_i586 += -m32
+CFLAGS_REQUIRED_ia64 += -m64 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
+LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
+CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9
+LDFLAGS_COMMON_sparc += -m32 -mcpu=v9
+CFLAGS_REQUIRED_arm += -fsigned-char -D_LITTLE_ENDIAN
+CFLAGS_REQUIRED_ppc += -fsigned-char -D_BIG_ENDIAN
+ifeq ($(ZERO_BUILD), true)
+ CFLAGS_REQUIRED = $(ZERO_ARCHFLAG)
+ ifeq ($(ZERO_ENDIANNESS), little)
+ CFLAGS_REQUIRED += -D_LITTLE_ENDIAN
+ endif
+ LDFLAGS_COMMON += $(ZERO_ARCHFLAG)
+else
+ CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
+ LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
+endif
+
+# If this is a --hash-style=gnu system, use --hash-style=both
+# The gnu .hash section won't work on some Linux systems like SuSE 10.
+_HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | $(GREP) -- '--hash-style=gnu')
+ifneq ($(_HAS_HASH_STYLE_GNU),)
+ LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
+endif
+LDFLAGS_COMMON += $(LDFLAGS_HASH_STYLE)
+
+#
+# Selection of warning messages
+#
+GCC_INHIBIT = -Wno-unused -Wno-parentheses
+GCC_STYLE =
+GCC_WARNINGS = -W -Wall $(GCC_STYLE) $(GCC_INHIBIT)
+
+#
+# Treat compiler warnings as errors, if warnings not allowed
+#
+ifeq ($(COMPILER_WARNINGS_FATAL),true)
+ GCC_WARNINGS += -Werror
+endif
+
+#
+# Misc compiler options
+#
+ifneq ($(ARCH),ppc)
+ CFLAGS_COMMON = -fno-strict-aliasing
+endif
+PIC_CODE_LARGE = -fPIC
+PIC_CODE_SMALL = -fpic
+GLOBAL_KPIC = $(PIC_CODE_LARGE)
+CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS)
+ifeq ($(ARCH), amd64)
+ CFLAGS_COMMON += -pipe
+endif
+
+# BSD 64bit machines use Dwarf2, which can be HUGE, have fastdebug use -g1
+DEBUG_FLAG = -g
+ifeq ($(FASTDEBUG), true)
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ DEBUG_FLAG = -g1
+ endif
+endif
+
+# DEBUG_BINARIES overrides everything, use full -g debug information
+ifeq ($(DEBUG_BINARIES), true)
+ DEBUG_FLAG = -g
+ CFLAGS_REQUIRED += $(DEBUG_FLAG)
+endif
+
+# If Full Debug Symbols is enabled, then we want the same debug and
+# optimization flags as used by FASTDEBUG.
+#
+ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ ifeq ($(LIBRARY_SUPPORTS_FULL_DEBUG_SYMBOLS),1)
+ ifeq ($(VARIANT), OPT)
+ CC_OPT = $(DEBUG_FLAG) $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
+ endif
+ endif
+endif
+
+CFLAGS_OPT = $(CC_OPT)
+CFLAGS_DBG = $(DEBUG_FLAG)
+CFLAGS_COMMON += $(CFLAGS_REQUIRED)
+
+CXXFLAGS_COMMON = $(GLOBAL_KPIC) -DCC_NOEX $(GCC_WARNINGS)
+CXXFLAGS_OPT = $(CC_OPT)
+CXXFLAGS_DBG = $(DEBUG_FLAG)
+CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
+
+# FASTDEBUG: Optimize the code in the -g versions, gives us a faster debug java
+ifeq ($(FASTDEBUG), true)
+ CFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
+ CXXFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
+endif
+
+CPP_ARCH_FLAGS = -DARCH='"$(ARCH)"'
+
+# Alpha arch does not like "alpha" defined (potential general arch cleanup issue here)
+ifneq ($(ARCH),alpha)
+ CPP_ARCH_FLAGS += -D$(ARCH)
+else
+ CPP_ARCH_FLAGS += -D_$(ARCH)_
+endif
+
+CPPFLAGS_COMMON = $(CPP_ARCH_FLAGS) -D_ALLBSD_SOURCE $(VERSION_DEFINES) \
+ -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
+
+ifeq ($(ARCH_DATA_MODEL), 64)
+CPPFLAGS_COMMON += -D_LP64=1
+endif
+
+CPPFLAGS_OPT = -DNDEBUG
+CPPFLAGS_DBG = -DDEBUG
+ifneq ($(PRODUCT), java)
+ CPPFLAGS_DBG += -DLOGGING
+endif
+
+# Libraries need to locate other libraries at runtime, and you can tell
+# a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
+# buried inside the .so. The $ORIGIN says to look relative to where
+# the library itself is and it can be followed with relative paths from
+# that. By default we always look in $ORIGIN, optionally we add relative
+# paths if the Makefile sets LD_RUNPATH_EXTRAS to those relative paths.
+# On BSD we add a flag -z origin, not sure if this is necessary, but
+# doesn't seem to hurt.
+# The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
+# Try: 'readelf -d lib*.so' to see these settings in a library.
+#
+Z_ORIGIN_FLAG/sparc = -Xlinker -z -Xlinker origin
+Z_ORIGIN_FLAG/i586 = -Xlinker -z -Xlinker origin
+Z_ORIGIN_FLAG/amd64 = -Xlinker -z -Xlinker origin
+Z_ORIGIN_FLAG/ia64 = -Xlinker -z -Xlinker origin
+Z_ORIGIN_FLAG/arm =
+Z_ORIGIN_FLAG/ppc =
+Z_ORIGIN_FLAG/zero = -Xlinker -z -Xlinker origin
+
+LDFLAG_Z_ORIGIN = $(Z_ORIGIN_FLAG/$(ARCH_FAMILY))
+
+LDFLAGS_COMMON += $(LDFLAG_Z_ORIGIN) -Xlinker -rpath -Xlinker \$$ORIGIN
+LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=$(LDFLAG_Z_ORIGIN) -Xlinker -rpath -Xlinker \$$ORIGIN/%)
+
+#
+# -L paths for finding and -ljava
+#
+LDFLAGS_OPT = -Xlinker -O1
+LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
+LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
+
+#
+# -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
+# statically link libgcc but will print a warning with the flag. We don't
+# want the warning, so check gcc version first.
+#
+ifeq ($(CC_MAJORVER),3)
+ OTHER_LDFLAGS += -static-libgcc
+endif
+
+# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+# (See Rules.gmk) The gcc 5 compiler might have an option for this?
+AUTOMATIC_PCH_OPTION =
+
+#
+# Post Processing of libraries/executables
+#
+ifeq ($(VARIANT), OPT)
+ ifneq ($(NO_STRIP), true)
+ ifneq ($(DEBUG_BINARIES), true)
+ # Debug 'strip -S' leaves local function Elf symbols (better stack
+ # traces)
+ POST_STRIP_PROCESS = $(STRIP) -S
+ endif
+ endif
+endif
+
+#
+# Use: ld $(LD_MAPFILE_FLAG) mapfile *.o
+#
+LD_MAPFILE_FLAG = -Xlinker --version-script -Xlinker
+
+#
+# Support for Quantify.
+#
+ifdef QUANTIFY
+QUANTIFY_CMD = quantify
+QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
+LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
+endif
+
+# Using map files currently break compilation on FreeBSD during shared library
+# checks for some of the AWT native libraries.
+ifeq ($(OS_VENDOR), FreeBSD)
+LDNOMAP=true
+endif
+
+#
+# Path and option to link against the VM, if you have to. Note that
+# there are libraries that link against only -ljava, but they do get
+# -L to the -ljvm, this is because -ljava depends on -ljvm, whereas
+# the library itself should not.
+#
+VM_NAME = server
+JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
+JAVALIB = -ljava $(JVMLIB)
+
+#
+# We want to privatize JVM symbols on Solaris. This is so the user can
+# write a function called FindClass and this should not override the
+# FindClass that is inside the JVM. At this point in time we are not
+# concerned with other JNI libraries because we hope that there will
+# not be as many clashes there.
+#
+PRIVATIZE_JVM_SYMBOLS = false
+
+USE_PTHREADS = true
+override ALT_CODESET_KEY = _NL_CTYPE_CODESET_NAME
+override AWT_RUNPATH =
+override HAVE_ALTZONE = false
+override HAVE_FILIOH = false
+override HAVE_GETHRTIME = false
+override HAVE_GETHRVTIME = false
+override LEX_LIBRARY = -lfl
+ifeq ($(STATIC_CXX),true)
+override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
+else
+override LIBCXX = -lstdc++
+endif
+override LIBPOSIX4 =
+override LIBSOCKET =
+override LIBNSL =
+override LIBSCF =
+override LIBTHREAD =
+override LIBDL =
+override MOOT_PRIORITIES = true
+override NO_INTERRUPTIBLE_IO = true
+override OPENWIN_HOME = $(X11_PATH)
+override OPENWIN_LIB = $(OPENWIN_HOME)/lib
+override OTHER_M4FLAGS = -D__GLIBC__ -DGNU_ASSEMBLER
+override SUN_CMM_SUBDIR =
+override THREADS_FLAG = native
+override USE_GNU_M4 = true
+override USING_GNU_TAR = true
+override WRITE_LIBVERSION = false
+
+# USE_EXECNAME forces the launcher to look up argv[0] on $PATH, and put the
+# resulting resolved absolute name of the executable in the environment
+# variable EXECNAME. That executable name is then used that to locate the
+# installation area.
+override USE_EXECNAME = true
+
+# If your platform has DPS, it will have Type1 fonts too, in which case
+# it is best to enable DPS support until such time as 2D's rasteriser
+# can fully handle Type1 fonts in all cases. Default is "yes".
+# HAVE_DPS should only be "no" if the platform has no DPS headers or libs
+# DPS (Displayable PostScript) is available on Solaris machines
+HAVE_DPS = no
+
+ifeq ($(OS_VENDOR), FreeBSD)
+ SYSTEM_ZLIB = true
+endif
+
+ifeq ($(OS_VENDOR), OpenBSD)
+ SYSTEM_ZLIB = true
+endif
+
+#
+# Japanese manpages
+#
+JA_SOURCE_ENCODING = eucJP
+JA_TARGET_ENCODINGS = UTF-8
+
+# Settings for the JDI - Serviceability Agent binding.
+HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
+SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
+SA_DEBUGINFO_NAME = $(LIB_PREFIX)saproc.debuginfo
+SA_DIZ_NAME = $(LIB_PREFIX)saproc.diz
+
+# The JDI - Serviceability Agent binding is not currently supported
+# on ia64.
+ifeq ($(ARCH), ia64)
+ INCLUDE_SA = false
+else
+ INCLUDE_SA = true
+endif
+
+ifdef CROSS_COMPILE_ARCH
+ # X11 headers are not under /usr/include
+ OTHER_CFLAGS += -I$(OPENWIN_HOME)/include
+ OTHER_CXXFLAGS += -I$(OPENWIN_HOME)/include
+ OTHER_CPPFLAGS += -I$(OPENWIN_HOME)/include
+endif
diff --git a/jdk/make/common/Defs-linux.gmk b/jdk/make/common/Defs-linux.gmk
index 86668f4..f756488 100755
--- a/jdk/make/common/Defs-linux.gmk
+++ b/jdk/make/common/Defs-linux.gmk
@@ -429,6 +429,7 @@ override LIBTHREAD =
override LIBDL = -ldl
override MOOT_PRIORITIES = true
override NO_INTERRUPTIBLE_IO = true
+override OPENWIN_HOME = $(X11_PATH)
ifeq ($(ARCH), amd64)
override OPENWIN_LIB = $(OPENWIN_HOME)/lib64
else
diff --git a/jdk/make/common/Defs-solaris.gmk b/jdk/make/common/Defs-solaris.gmk
index 8e08d2e..4d17efb 100755
--- a/jdk/make/common/Defs-solaris.gmk
+++ b/jdk/make/common/Defs-solaris.gmk
@@ -753,6 +753,9 @@ LIBSOCKET = -lsocket
# Network Services library
LIBNSL = -lnsl
+# Dynamic Loading library
+LIBDL = -ldl
+
# service configuration facility library
LIBSCF = -lscf
diff --git a/jdk/make/common/Defs.gmk b/jdk/make/common/Defs.gmk
index 7cbb0c0..5307686 100755
--- a/jdk/make/common/Defs.gmk
+++ b/jdk/make/common/Defs.gmk
@@ -179,15 +179,15 @@ DEVTOOLS_FT_DIR_EXISTS = $(shell \
ifdef ALT_FREETYPE_LIB_PATH
FREETYPE_LIB_PATH = $(ALT_FREETYPE_LIB_PATH)
- ifeq ($(PLATFORM), macosx)
+ ifneq (,$(findstring $(PLATFORM), bsd macosx))
USING_SYSTEM_FT_LIB=true
endif
else
ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
FREETYPE_LIB_PATH = $(DEVTOOLS_FT_DIR)/lib
else
- ifeq ($(PLATFORM), macosx)
- FREETYPE_LIB_PATH = /usr/X11R6/lib
+ ifneq (,$(findstring $(PLATFORM), bsd macosx))
+ FREETYPE_LIB_PATH = $(X11_PATH)/lib
else
FREETYPE_LIB_PATH = /usr/lib
endif
@@ -201,8 +201,8 @@ DEVTOOLS_FT_DIR_EXISTS = $(shell \
ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
FREETYPE_HEADERS_PATH = $(DEVTOOLS_FT_DIR)/include
else
- ifeq ($(PLATFORM), macosx)
- FREETYPE_HEADERS_PATH = /usr/X11R6/include
+ ifneq (,$(findstring $(PLATFORM), bsd macosx))
+ FREETYPE_HEADERS_PATH = $(X11_PATH)/include
else
FREETYPE_HEADERS_PATH = /usr/include
endif
@@ -258,6 +258,10 @@ ifdef PROGRAM
LDLIBS_COMMON = -pthread
endif
+ ifeq ($(PLATFORM), bsd)
+ LDLIBS_COMMON = -pthread
+ endif
+
endif # PROGRAM
LDLIBS_COMMON += $(EXTRA_LIBS)
@@ -312,6 +316,7 @@ endif
JDK_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-image
JRE_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-image
+JDK_SERVER_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-server-image
#where the demo source can be found
DEMOSRCDIR = $(SHARE_SRC)/demo
@@ -399,7 +404,7 @@ OTHER_CPPFLAGS += $(INCLUDES)
# We define an intermediate variable for Java files because
# we use its value later to help define $SOURCEPATH
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
VPATH0.java = $(subst $(ONESPACE),:,$(GENSRCDIR) $(call JavaSrcDirList,,classes))
else
VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
diff --git a/jdk/make/common/Library.gmk b/jdk/make/common/Library.gmk
index 2cdf964..f340efe 100755
--- a/jdk/make/common/Library.gmk
+++ b/jdk/make/common/Library.gmk
@@ -299,8 +299,12 @@ endif # WRITE_LIBVERSION
ifeq ($(PLATFORM), solaris)
$(STRIP) -x $@
else
- # assume Linux
- $(STRIP) -g $@
+ ifeq ($(PLATFORM), linux)
+ $(STRIP) -g $@
+ else
+ # assume BSD
+ $(STRIP) -S $@
+ endif
endif
# implied else here is no stripping at all
endif
diff --git a/jdk/make/common/Mapfile-vers.gmk b/jdk/make/common/Mapfile-vers.gmk
index 15c8ccd..c957be5 100755
--- a/jdk/make/common/Mapfile-vers.gmk
+++ b/jdk/make/common/Mapfile-vers.gmk
@@ -76,7 +76,7 @@ endif
endif # PLATFORM
-ifeq ($(PLATFORM), linux)
+ifneq (,$(findstring $(PLATFORM), linux bsd))
ifeq ($(VARIANT), OPT)
# OPT build MUST have a mapfile?
diff --git a/jdk/make/common/Program.gmk b/jdk/make/common/Program.gmk
index ff32f4b..0ee59f3 100755
--- a/jdk/make/common/Program.gmk
+++ b/jdk/make/common/Program.gmk
@@ -95,6 +95,17 @@ ifeq ($(PLATFORM), macosx)
endif # SYSTEM_ZLIB
endif # PLATFORM
+ifeq ($(PLATFORM), bsd)
+ LDFLAGS += -Wl,--whole-archive
+ LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
+ LDFLAGS += -Wl,--no-whole-archive
+# Work-around an dlsym(RTLD_DEFAULT) bug in at least FreeBSD & OpenBSD
+ LDFLAGS += -Wl,--export-dynamic
+ ifeq ($(SYSTEM_ZLIB),true)
+ OTHER_LDLIBS += -lz
+ endif
+endif #PLATFORM
+
ifneq (,$(findstring $(PLATFORM), linux solaris)) # UNIX systems
LDFLAGS += -L $(LIBDIR)/$(LIBARCH)/jli
OTHER_LDLIBS += -ljli
@@ -153,7 +164,6 @@ ifeq ($(PLATFORM), windows)
ifndef LOCAL_RESOURCE_FILE
@$(ECHO) $(OBJDIR)/$(PROGRAM).res >> $@
endif # LOCAL_RESOURCE_FILE
- @$(ECHO) setargv.obj >> $@
@$(ECHO) Created $@
$(ACTUAL_PROGRAM):: $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX)
@@ -227,6 +237,11 @@ else # *NIXES
INFO_PLIST_FILE=
endif # MACOSX
+ ifeq ($(PLATFORM), bsd)
+ THREADLIBS = -pthread
+ OTHER_CPPFLAGS += -DPACKAGE_PATH='"$(PACKAGE_PATH)"'
+ endif
+
#
# This rule only applies on unix. It supports quantify and its ilk.
#
@@ -281,8 +296,12 @@ else # *NIXES
ifeq ($(PLATFORM), solaris)
$(STRIP) -x $@
else
- # assume Linux
- $(STRIP) -g $@
+ ifeq ($(PLATFORM), linux)
+ $(STRIP) -g $@
+ else
+ # assume BSD
+ $(STRIP) -S $@
+ endif
endif
# implied else here is no stripping at all
endif
@@ -350,7 +369,9 @@ endif #PLATFORM
ifneq ($(PLATFORM), windows)
- HAVE_GETHRTIME=true
+ ifneq ($(PLATFORM), bsd)
+ HAVE_GETHRTIME=true
+ endif
endif #PLATFORM
ifeq ($(HAVE_GETHRTIME),true)
@@ -360,12 +381,10 @@ endif
OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)/bin -I$(LAUNCHER_PLATFORM_SRC)/bin
ifeq ($(PLATFORM), macosx)
OTHER_INCLUDES += -I$(LAUNCHER_SOLARIS_PLATFORM_SRC)/bin
- ifneq ($(SYSTEM_ZLIB), true)
- OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
- endif # SYSTEM_ZLIB
-else # PLATFORM !MACOSX
+endif # PLATFORM
+ifneq ($(SYSTEM_ZLIB), true)
OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
-endif
+endif # SYSTEM_ZLIB
OTHER_CPPFLAGS += -DPROGNAME='"$(PROGRAM)"'
VERSION_DEFINES += -DFULL_VERSION='"$(FULL_VERSION)"'
diff --git a/jdk/make/common/Release-macosx.gmk b/jdk/make/common/Release-macosx.gmk
index f56370f..ebb95bc 100755
--- a/jdk/make/common/Release-macosx.gmk
+++ b/jdk/make/common/Release-macosx.gmk
@@ -31,6 +31,8 @@ JA_DIRNAME=ja_JP.UTF-8
JDK_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents
JRE_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2re-bundle/jre$(JDK_VERSION).jre/Contents
+JDK_SERVER_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2sdk-server-bundle/jdk$(JDK_VERSION).jdk/Contents
+JDK_SERVER_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-server-image
MACOSX_SRC = $(JDK_TOPDIR)/src/macosx
@@ -70,6 +72,13 @@ jdk-bundle-files:
$(SED) -e "s/@@ID@@/$(BUNDLE_ID_JDK)/g" -e "s/@@NAME@@/$(BUNDLE_NAME_JDK)/g" -e "s/@@INFO@@/$(BUNDLE_INFO_JDK)/g" -e "s/@@PLATFORM_VERSION@@/$(BUNDLE_PLATFORM_VERSION)/g" -e "s/@@VERSION@@/$(BUNDLE_VERSION)/g" -e "s/@@VENDOR@@/$(BUNDLE_VENDOR)/g" < $(MACOSX_SRC)/bundle/JDK-Info.plist > $(JDK_BUNDLE_DIR)/Info.plist
/usr/bin/SetFile -a B $(JDK_BUNDLE_DIR)/../
-EXTRA_IMAGE_TARGETS += jre-bundle-setup jdk-bundle-setup jre-bundle-files jdk-bundle-files
+jdk-server-bundle-files:
+ $(MKDIR) -p $(JDK_SERVER_BUNDLE_DIR)/MacOS
+ ln -s ../Home/jre/lib/jli/libjli.dylib $(JDK_SERVER_BUNDLE_DIR)/MacOS/
+ $(CP) -r $(JDK_IMAGE_DIR) $(JDK_SERVER_BUNDLE_DIR)/Home
+ $(SED) -e "s/@@ID@@/$(BUNDLE_ID_JDK)/g" -e "s/@@NAME@@/$(BUNDE_NAME_JDK)/g" -e "s/@@INFO@@/$(BUNDLE_INFO_JDK)/g" -e "s/@@PLATFORM_VERSION@@/$(BUNDLE_PLATFORM_VERSION)/g" -e "s/@@VERSION@@/$(BUNDLE_VERSION)/g" -e "s/@@VENDOR@@/$(BUNDLE_VENDOR)/g" < $(MACOSX_SRC)/bundle/JDK-Info.plist > $(JDK_SERVER_BUNDLE_DIR)/Info.plist
+ /usr/bin/SetFile -a B $(JDK_SERVER_BUNDLE_DIR)/../
+
+EXTRA_IMAGE_TARGETS += jre-bundle-setup jdk-bundle-setup jre-bundle-files jdk-bundle-files jdk-server-bundle-files
.PHONY: $(EXTRA_JRE_TARGETS) $(EXTRA_IMAGE_TARGETS)
diff --git a/jdk/make/common/Release.gmk b/jdk/make/common/Release.gmk
index f6d1090..1ff0abb 100755
--- a/jdk/make/common/Release.gmk
+++ b/jdk/make/common/Release.gmk
@@ -178,6 +178,12 @@ ifeq ($(PLATFORM), linux)
JA_DIRNAME=ja_JP.UTF-8
endif # linux
+ifeq ($(PLATFORM), bsd)
+ MANBASEDIRS=$(JDK_TOPDIR)/src/linux/doc $(IMPORTDOCDIR)
+ MAN1SUBDIR=man
+ JA_DIRNAME=ja_JP.UTF-8
+endif # linux
+
define copy-man-pages
$(MKDIR) -p $1/man/man1
for manbase in $(MANBASEDIRS:%=%/$(MAN1SUBDIR)) ; do \
@@ -233,8 +239,8 @@ initial-image-jre-sol64 initial-image-jdk-sol64 \
trim-image-jre trim-image-jdk \
identify-image-jre identify-image-jdk \
process-image-jre process-image-jdk \
-compare-image \
-sec-files sec-files-win jgss-files ::
+compare-image \
+sec-files sec-files-win jgss-files server-jdk-image ::
@$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
# Order is important here, trim jre after jdk image is created
@@ -243,16 +249,17 @@ ifeq ($(PLATFORM), macosx)
images:: sanity-images post-sanity-images \
$(INITIAL_IMAGE_JRE) $(EXTRA_JRE_TARGETS) $(INITIAL_IMAGE_JDK) \
trim-image-jre trim-image-jdk \
- identify-image-jre identify-image-jdk \
- process-image-jre process-image-jdk sec-files sec-files-win jgss-files \
- $(EXTRA_IMAGE_TARGETS)
+ identify-image-jre identify-image-jdk \
+ process-image-jre process-image-jdk sec-files sec-files-win \
+ jgss-files $(EXTRA_IMAGE_TARGETS) server-jdk-image
else
images:: sanity-images post-sanity-images \
$(INITIAL_IMAGE_JRE) $(INITIAL_IMAGE_JDK) \
trim-image-jre trim-image-jdk \
identify-image-jre identify-image-jdk \
- process-image-jre process-image-jdk sec-files sec-files-win jgss-files
+ process-image-jre process-image-jdk sec-files sec-files-win \
+ jgss-files server-jdk-image
endif
# Don't use these
@@ -399,10 +406,29 @@ TOOLS = \
sun/tools/jinfo \
sun/tools/jmap
+JFR_SRCDIRS_EXIST := $(shell \
+ if [ -d $(CLOSED_SHARE_SRC)/classes/com/oracle/jrockit/jfr ] ; then \
+ echo true; \
+ else \
+ echo false; \
+ fi)
+
+BUILD_JFR=
+ifndef OPENJDK
+ifndef JAVASE_EMBEDDED
+ifeq ($(JFR_SRCDIRS_EXIST), true)
+BUILD_JFR=true
+endif
+endif
+endif
+
# classes that go into jfr.jar
+JFR_CLASSES_DIRS=
+ifdef BUILD_JFR
JFR_CLASSES_DIRS= \
com/oracle/jrockit/jfr \
oracle/jrockit/jfr
+endif
# classes that go into jsse.jar
JSSE_CLASSES_DIRS = \
@@ -606,8 +632,7 @@ $(NOT_RT_JAR_LIST): FRC
$(ECHO) "sun/tools/jstack/" >> $@
$(ECHO) "sun/tools/jinfo/" >> $@
$(ECHO) "sun/tools/jmap/" >> $@
-ifndef OPENJDK
-ifndef JAVASE_EMBEDDED
+ifdef BUILD_JFR
$(ECHO) "com/oracle/jrockit/jfr/" >> $@
$(ECHO) "com/oracle/jrockit/jfr/client/" >> $@
$(ECHO) "com/oracle/jrockit/jfr/management/" >> $@
@@ -618,7 +643,7 @@ ifndef JAVASE_EMBEDDED
$(ECHO) "oracle/jrockit/jfr/settings/" >> $@
$(ECHO) "oracle/jrockit/jfr/tools/" >> $@
endif
-endif
+
# File order list for rt.jar
@@ -645,8 +670,7 @@ $(TOTAL_JAR_FILELIST): $(JARREORDER_JARFILE) $(NOT_RT_JAR_LIST)
# Create jfr.jar
JFR_JAR=
-ifndef OPENJDK
-ifndef JAVASE_EMBEDDED
+ifdef BUILD_JFR
JFR_JAR=$(ABS_TEMPDIR)/jfr-orig.jar
$(JFR_JAR): $(OTHER_JAR_MANIFEST_FILE)
$(prep-target)
@@ -655,7 +679,6 @@ $(JFR_JAR): $(OTHER_JAR_MANIFEST_FILE)
$(JFR_CLASSES_DIRS) $(BOOT_JAR_JFLAGS)
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
endif
-endif
# Create the rt.jar file list & non-class files list
@@ -912,6 +935,27 @@ endif
done
$(RM) $(JRE_BIN_LIST)
+# Duplicate current j2re-image contents to server-j2re-image
+# for the server version of jre, before deploy build
+server-jdk-image::
+ifeq ($(PLATFORM), macosx)
+ $(RM) -r $(JDK_SERVER_BUNDLE_DIR)/Home/demo
+ $(RM) -r $(JDK_SERVER_BUNDLE_DIR)/Home/sample
+ $(RM) $(JDK_SERVER_BUNDLE_DIR)/Home/bin/jcontrol
+ $(RM) $(JDK_SERVER_BUNDLE_DIR)/Home/jre/bin/jcontrol
+ $(RM) $(JDK_SERVER_BUNDLE_DIR)/Home/man/ja_JP.UTF-8/man1/javaws.1
+ $(RM) $(JDK_SERVER_BUNDLE_DIR)/Home/man/man1/javaws.1
+else
+ $(RM) -r $(JDK_SERVER_IMAGE_DIR)
+ $(CP) -r $(JDK_IMAGE_DIR) $(JDK_SERVER_IMAGE_DIR)
+ $(RM) -r $(JDK_SERVER_IMAGE_DIR)/demo
+ $(RM) -r $(JDK_SERVER_IMAGE_DIR)/sample
+ $(RM) $(JDK_SERVER_IMAGE_DIR)/bin/jcontrol
+ $(RM) $(JDK_SERVER_IMAGE_DIR)/jre/bin/jcontrol
+ $(RM) $(JDK_SERVER_IMAGE_DIR)/man/ja_JP.UTF-8/man1/javaws.1
+ $(RM) $(JDK_SERVER_IMAGE_DIR)/man/man1/javaws.1
+endif
+
######################################################
# JDK Image
######################################################
@@ -983,6 +1027,12 @@ endif
FILES_launcher = $(wildcard $(SHARE_SRC)/bin/*) \
$(wildcard $(PLATFORM_SRC)/bin/java_md*)
+ifeq ($(OS_VENDOR), OpenBSD)
+ FILES_FROM_ARG=-I
+else
+ FILES_FROM_ARG=-T
+endif
+
# Standard jdk image
initial-image-jdk:: initial-image-jdk-setup \
initial-image-jdk-db \
@@ -1070,7 +1120,7 @@ initial-image-jdk:: initial-image-jdk-setup \
@# So for Linux, make use of the -T option (like Solaris' -I option) of
@# obtaining the list of files from a file. MKS tar has no such option.
- ifneq (,$(findstring $(PLATFORM), linux macosx))
+ ifneq (,$(findstring $(PLATFORM), linux macosx bsd))
for d in $(SOURCE_DIRS); do \
$(RM) $(ABS_TEMPDIR)/src-files.list; \
($(CD) $$d && \
@@ -1083,7 +1133,7 @@ initial-image-jdk:: initial-image-jdk-setup \
done ; \
) ; \
if [ -f $(ABS_TEMPDIR)/src-files.list ] ; then \
- ($(CD) $$d && $(TAR) cf - -T $(ABS_TEMPDIR)/src-files.list ) \
+ ($(CD) $$d && $(TAR) cf - $(FILES_FROM_ARG) $(ABS_TEMPDIR)/src-files.list ) \
| ($(CD) $(JDK_IMAGE_DIR)/src && $(TAR) xf -); \
fi; \
done
diff --git a/jdk/make/common/Rules.gmk b/jdk/make/common/Rules.gmk
index 77196f0..14fe793 100755
--- a/jdk/make/common/Rules.gmk
+++ b/jdk/make/common/Rules.gmk
@@ -51,7 +51,7 @@ $(CLASSDESTDIR) $(CLASSHDRDIR) $(OBJDIR) $(OUTPUTDIR) $(BINDIR) $(LIBDIR) $(LIBD
#
# All source tree areas for java/properties files (a few may be closed)
#
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
ifdef OPENJDK
ALL_CLASSES_SRC = $(call JavaSrcDirList,,classes)
else
@@ -212,7 +212,7 @@ endif
$(CLASSDESTDIR)/%.class: $(GENSRCDIR)/%.java
@$(add-java-file)
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
# TODO(cpc): need to document why this is necessary...
$(CLASSDESTDIR)/%.class: $(JDK_TOPDIR)/src/macosx/classes/%.java
@$(add-java-file)
diff --git a/jdk/make/common/shared/Compiler-gcc.gmk b/jdk/make/common/shared/Compiler-gcc.gmk
index 9dde0ba..7d03777 100755
--- a/jdk/make/common/shared/Compiler-gcc.gmk
+++ b/jdk/make/common/shared/Compiler-gcc.gmk
@@ -72,6 +72,21 @@ ifeq ($(PLATFORM), linux)
endif
+ifeq ($(PLATFORM), bsd)
+
+ # Settings specific to BSD
+ CC = $(COMPILER_PATH)gcc
+ CPP = $(COMPILER_PATH)gcc -E
+ CXX = $(COMPILER_PATH)g++
+
+ # Option used to create a shared library
+ ifeq ($(OS_VENDOR), Apple)
+ SHARED_LIBRARY_FLAG = -dynamiclib
+ else
+ SHARED_LIBRARY_FLAG = -shared
+ endif
+endif
+
ifeq ($(PLATFORM), solaris)
# Settings specific to Solaris
diff --git a/jdk/make/common/shared/Defs-bsd.gmk b/jdk/make/common/shared/Defs-bsd.gmk
new file mode 100644
index 0000000..52d813a
--- /dev/null
+++ b/jdk/make/common/shared/Defs-bsd.gmk
@@ -0,0 +1,262 @@
+#
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+#
+# Definitions for BSD.
+#
+
+# Default for COMPILER_WARNINGS_FATAL on BSD (C & C++ compiler warnings)
+ifndef COMPILER_WARNINGS_FATAL
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+# BSD should use parallel compilation for best build times
+ifndef COMPILE_APPROACH
+ COMPILE_APPROACH = parallel
+endif
+
+# Indication that we are doing an incremental build.
+# This may trigger the creation of make depend files.
+ifndef INCREMENTAL_BUILD
+ INCREMENTAL_BUILD = false
+endif
+
+# FullPath just makes sure it never ends with a / and no duplicates
+define FullPath
+$(shell cd $1 2> $(DEV_NULL) && pwd)
+endef
+
+# OptFullPath: Absolute path name of a dir that might not initially exist.
+define OptFullPath
+$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
+endef
+
+ifdef ALT_X11_PATH
+ X11_PATH = $(ALT_X11_PATH)
+else
+ ifeq ($(OS_VENDOR), NetBSD)
+ X11_PATH = /usr/X11R7
+ else
+ ifeq ($(OS_VENDOR), FreeBSD)
+ X11_PATH = /usr/local
+ else
+ X11_PATH = /usr/X11R6
+ endif
+ endif
+endif
+
+ifdef ALT_PACKAGE_PATH
+ PACKAGE_PATH = $(ALT_PACKAGE_PATH)
+else
+ ifeq ($(OS_VENDOR), NetBSD)
+ PACKAGE_PATH = /usr/pkg
+ else
+ PACKAGE_PATH = /usr/local
+ endif
+endif
+
+# ALSA
+ifdef ALT_ALSA_LIB_PATH
+ ALSA_LIB_PATH = $(ALT_ALSA_LIB_PATH)
+else
+ ALSA_LIB_PATH = $(PACKAGE_PATH)/lib
+endif
+
+ifdef ALT_ALSA_HEADERS_PATH
+ ALSA_HEADERS_PATH = $(ALT_ALSA_HEADERS_PATH)
+else
+ ALSA_HEADERS_PATH = $(PACKAGE_PATH)/include
+endif
+
+# Location on system where jdk installs might be
+USRJDKINSTANCES_PATH = $(PACKAGE_PATH)
+
+# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_UNIXCOMMAND_PATH)" "undefined"
+ UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
+else
+ UNIXCOMMAND_PATH = /bin/
+endif
+
+# USRBIN_PATH: path to where the most common Unix commands are.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_USRBIN_PATH)" "undefined"
+ USRBIN_PATH :=$(call PrefixPath,$(ALT_USRBIN_PATH))
+else
+ USRBIN_PATH = /usr/bin/
+endif
+
+# UNIXCCS_PATH: path to where the Solaris ported UNIX commands can be found
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_UNIXCCS_PATH)" "undefined"
+ UNIXCCS_PATH :=$(call PrefixPath,$(ALT_UNIXCCS_PATH))
+else
+ UNIXCCS_PATH = /usr/ccs/bin/
+endif
+
+# SLASH_JAVA: location of all network accessable files
+ifdef ALT_SLASH_JAVA
+ SLASH_JAVA :=$(ALT_SLASH_JAVA)
+else
+ SLASH_JAVA := $(call DirExists,/java,/java,/NOT-SET)
+endif
+
+# JDK_DEVTOOLS_DIR: common path for all the java devtools
+ifdef ALT_JDK_DEVTOOLS_DIR
+ JDK_DEVTOOLS_DIR =$(ALT_JDK_DEVTOOLS_DIR)
+else
+ JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
+endif
+
+# COMPILER_PATH: path to where the compiler and tools are installed.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_COMPILER_PATH)" "undefined"
+ COMPILER_PATH :=$(call PrefixPath,$(ALT_COMPILER_PATH))
+else
+ COMPILER_PATH =/usr/bin/
+endif
+
+# OPENWIN_HOME: path to where the X11 environment is installed.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq ($(ALT_OPENWIN_HOME),)
+ OPENWIN_HOME :=$(call PrefixPath,$(ALT_OPENWIN_HOME))
+else
+ OPENWIN_HOME =$(X11_PATH)
+endif
+
+# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined"
+ DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH))
+else
+ DEVTOOLS_PATH =$(PACKAGE_PATH)/bin/
+endif
+
+# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
+# _BOOTDIR2: Second choice
+ifndef ALT_BOOTDIR
+ _BOOTDIR1 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
+ _BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
+endif
+
+# Always build headless on BSD
+BUILD_HEADLESS = true
+LIBM=-lm
+
+_CUPS_HEADERS_PATH=$(PACKAGE_PATH)/include
+
+# Import JDK images allow for partial builds, components not built are
+# imported (or copied from) these import areas when needed.
+
+# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
+# multiple platforms, e.g. windows-i586, solaris-sparc, linux-586, etc.
+ifdef ALT_BUILD_JDK_IMPORT_PATH
+ BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
+else
+ BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
+endif
+BUILD_JDK_IMPORT_PATH:=$(call AltCheckValue,BUILD_JDK_IMPORT_PATH)
+
+# JDK_IMPORT_PATH: location of JDK install tree (this version) to import
+ifdef ALT_JDK_IMPORT_PATH
+ JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
+else
+ JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
+endif
+JDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH)
+
+# HOTSPOT_IMPORT_PATH: location of hotspot pre-built files
+ifdef ALT_HOTSPOT_IMPORT_PATH
+ HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
+else
+ HOTSPOT_IMPORT_PATH =$(JDK_IMPORT_PATH)
+endif
+HOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
+
+# HOTSPOT_CLIENT_PATH: location of client jvm library file.
+ifeq ($(ARCH_DATA_MODEL), 32)
+ ifdef ALT_HOTSPOT_CLIENT_PATH
+ HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
+ else
+ HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
+ endif
+ HOTSPOT_CLIENT_PATH:=$(call AltCheckValue,HOTSPOT_CLIENT_PATH)
+endif
+
+# HOTSPOT_SERVER_PATH: location of server jvm library file.
+ifdef ALT_HOTSPOT_SERVER_PATH
+ HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
+else
+ HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
+endif
+HOTSPOT_SERVER_PATH:=$(call AltCheckValue,HOTSPOT_SERVER_PATH)
+
+# Special define for checking the binaries
+
+# Debug builds should downgrade warnings to just info
+MAPFILE_WARNING-DBG=INFO
+MAPFILE_WARNING-OPT=WARNING
+MAPFILE_WARNING-=WARNING
+MAPFILE_WARNING=$(MAPFILE_WARNING-$(VARIANT))
+
+# Macro to check it's input file for banned dependencies and verify the
+# binary built properly. Relies on process exit code.
+ifndef CROSS_COMPILE_ARCH
+ifeq ($(OS_VENDOR), OpenBSD)
+define binary_file_verification # binary_file
+( \
+ $(ECHO) "Checking for mapfile use in: $1" && \
+ if [ "`$(OBJDUMP) -T $1 | $(EGREP) '[0-9a-f]* g *DF \.text.*SUNWprivate'`" = "" ] ; then \
+ $(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
+ fi && \
+ $(ECHO) "Library loads for: $1" && \
+ $(LDD) $1 && \
+ $(ECHO) "RUNPATH for: $1" && \
+ ( $(READELF) -d $1 | $(EGREP) 'NEEDED|RUNPATH|RPATH' ) \
+) || true
+endef
+else
+define binary_file_verification # binary_file
+( \
+ $(ECHO) "Checking for mapfile use in: $1" && \
+ if [ "`$(NM) -D -g --defined-only $1 | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
+ $(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
+ fi && \
+ $(ECHO) "Library loads for: $1" && \
+ $(LDD) $1 && \
+ $(ECHO) "RUNPATH for: $1" && \
+ ( $(READELF) -d $1 | $(EGREP) 'NEEDED|RUNPATH|RPATH' ) \
+)
+endef
+endif
+else
+define binary_file_verification
+( \
+ $(ECHO) "Skipping binary file verification for cross-compile build" \
+)
+endef
+endif
+
diff --git a/jdk/make/common/shared/Defs-utils.gmk b/jdk/make/common/shared/Defs-utils.gmk
index 9bc05d6..ec17734 100755
--- a/jdk/make/common/shared/Defs-utils.gmk
+++ b/jdk/make/common/shared/Defs-utils.gmk
@@ -74,6 +74,13 @@ ifeq ($(PLATFORM),macosx)
UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
endif
+ifeq ($(PLATFORM),bsd)
+ UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
+ UTILS_USR_BIN_PATH=$(USRBIN_PATH)
+ UTILS_CCS_BIN_PATH=$(USRBIN_PATH)
+ UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
+endif
+
# Utilities
ifdef CROSS_COMPILE_ARCH
AR = $(COMPILER_PATH)ar
@@ -251,3 +258,35 @@ ifeq ($(PLATFORM), macosx)
# Builtin shell command, no -e option needed
ECHO = echo
endif
+
+# BSD specific
+ifeq ($(PLATFORM),bsd)
+ BASENAME = $(UTILS_USR_BIN_PATH)basename
+ EGREP = $(UTILS_USR_BIN_PATH)egrep
+ EXPR = $(UTILS_COMMAND_PATH)expr
+ FMT = $(UTILS_USR_BIN_PATH)fmt
+ GREP = $(UTILS_USR_BIN_PATH)grep
+ GUNZIP = $(UTILS_USR_BIN_PATH)gunzip
+ ID = $(UTILS_USR_BIN_PATH)id
+ MSGFMT = $(UTILS_DEVTOOL_PATH)msgfmt
+ SED = $(UTILS_USR_BIN_PATH)sed
+ SORT = $(UTILS_USR_BIN_PATH)sort
+ TEST = $(UTILS_COMMAND_PATH)test
+ TOUCH = $(UTILS_USR_BIN_PATH)touch
+ TRUE = $(UTILS_USR_BIN_PATH)true
+ UNAME = $(UTILS_USR_BIN_PATH)uname
+ UNZIP = $(UTILS_DEVTOOL_PATH)unzip
+ # BSD OS_VENDOR specific
+ ifeq ($(OS_VENDOR), OpenBSD)
+ NAWK = $(UTILS_USR_BIN_PATH)awk
+ OBJDUMP = $(UTILS_USR_BIN_PATH)objdump
+ else
+ CPIO = $(UTILS_USR_BIN_PATH)cpio
+ TAR = $(UTILS_USR_BIN_PATH)tar
+ endif
+ ifeq ($(OS_VENDOR), NetBSD)
+ NAWK = $(UTILS_USR_BIN_PATH)awk
+ ZIPEXE = $(UTILS_DEVTOOL_PATH)zip
+ UNZIP = $(UTILS_DEVTOOL_PATH)unzip
+ endif
+endif
diff --git a/jdk/make/common/shared/Defs-versions.gmk b/jdk/make/common/shared/Defs-versions.gmk
index 1675e25..8ded23a 100755
--- a/jdk/make/common/shared/Defs-versions.gmk
+++ b/jdk/make/common/shared/Defs-versions.gmk
@@ -44,6 +44,11 @@ ifeq ($(PLATFORM), linux)
override CC_VERSION = gcc
endif
+# BSD uses GNU compilers by default
+ifeq ($(PLATFORM), bsd)
+ override CC_VERSION = gcc
+endif
+
# Mac OS X uses LLVM by default
ifeq ($(PLATFORM), macosx)
override CC_VERSION = llvm
@@ -169,6 +174,13 @@ ifeq ($(PLATFORM), linux)
endif
endif
+# BSD specific
+ifeq ($(PLATFORM), macosx)
+ REQUIRED_COMPILER_NAME = GCC4
+ REQUIRED_COMPILER_VERSION = GCC4
+ REQUIRED_CC_VER = 4.2.1
+endif
+
# Mac specific
ifeq ($(PLATFORM), macosx)
REQUIRED_OS_NAME = Darwin
diff --git a/jdk/make/common/shared/Defs.gmk b/jdk/make/common/shared/Defs.gmk
index 2e514d2..61b05f2 100755
--- a/jdk/make/common/shared/Defs.gmk
+++ b/jdk/make/common/shared/Defs.gmk
@@ -181,7 +181,7 @@ endef
# platform and shared sources/headers. This is mainly useful for the
# Mac OS X build, which pulls its platform sources from the solaris and/or
# macosx trees, depending on the component.
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
define JavaSrcDirList
$(JAVA_SRCDIR_LIST:%=$1$(JDK_TOPDIR)/%/$2)
endef
diff --git a/jdk/make/common/shared/Platform.gmk b/jdk/make/common/shared/Platform.gmk
index 943ff03..7e57800 100755
--- a/jdk/make/common/shared/Platform.gmk
+++ b/jdk/make/common/shared/Platform.gmk
@@ -298,6 +298,85 @@ ifeq ($(PLATFORM), macosx)
# How much RAM does this machine have:
endif
+ifeq ($(SYSTEM_UNAME), FreeBSD)
+ PLATFORM = bsd
+ OS_NAME = freebsd
+ OS_VENDOR = FreeBSD
+ REQUIRED_OS_VERSION = 6.0
+endif
+
+ifeq ($(SYSTEM_UNAME), NetBSD)
+ PLATFORM = bsd
+ OS_NAME = netbsd
+ OS_VENDOR = NetBSD
+ REQUIRED_OS_VERSION = 3.0
+endif
+
+ifeq ($(SYSTEM_UNAME), OpenBSD)
+ PLATFORM = bsd
+ OS_NAME = openbsd
+ OS_VENDOR = OpenBSD
+ REQUIRED_OS_VERSION = 4.9
+endif
+
+# Platform settings specific to BSD
+ifeq ($(PLATFORM), bsd)
+ OS_VERSION := $(shell uname -r)
+ # Arch and OS name/version
+ mach := $(shell uname -m)
+ archExpr = case "$(mach)" in \
+ i[3-9]86) \
+ echo i586 \
+ ;; \
+ sparc64) \
+ echo sparcv9 \
+ ;; \
+ sparc*) \
+ echo sparc \
+ ;; \
+ x86_64) \
+ echo amd64 \
+ ;; \
+ "Power Macintosh") \
+ echo ppc \
+ ;; \
+ *) \
+ echo $(mach) \
+ ;; \
+ esac
+ ARCH := $(shell $(archExpr) )
+ ARCH_FAMILY := $(ARCH)
+
+ # i586, sparc, and ppc are 32 bit, amd64 and sparc64 are 64
+ ifneq (,$(findstring $(ARCH), i586 sparc ppc))
+ ARCH_DATA_MODEL=32
+ else
+ ARCH_DATA_MODEL=64
+ endif
+
+ # Need to maintain the jre/lib/i386 location for 32-bit Intel
+ ifeq ($(ARCH), i586)
+ LIBARCH = i386
+ else
+ LIBARCH = $(ARCH)
+ endif
+
+ # Value of Java os.arch property
+ ARCHPROP = $(LIBARCH)
+
+ # Suffix for file bundles used in previous release
+ BUNDLE_FILE_SUFFIX=.tar.gz
+ # Minimum disk space needed as determined by running 'du -sk' on
+ # a fully built workspace.
+ REQUIRED_FREE_SPACE=1500000
+ # How much RAM does this machine have:
+ ifeq ($(OS_VENDOR), OpenBSD)
+ MB_OF_MEMORY=$(shell sysctl -n hw.physmem | awk '{print int($$NF / 1048576); }' )
+ else
+ MB_OF_MEMORY=$(shell (sysctl -n hw.physmem64 2> /dev/null || sysctl -n hw.physmem) | awk '{print int($$NF / 1048576); }' )
+ endif
+endif
+
# Windows with and without CYGWIN will be slightly different
ifeq ($(SYSTEM_UNAME), Windows_NT)
PLATFORM = windows
diff --git a/jdk/make/java/Makefile b/jdk/make/java/Makefile
index 664861a..da37497 100755
--- a/jdk/make/java/Makefile
+++ b/jdk/make/java/Makefile
@@ -53,7 +53,7 @@ ifeq ($(PLATFORM), solaris)
endif
endif # PLATFORM
-ifeq ($(PLATFORM), linux)
+ifneq (,$(findstring $(PLATFORM), linux bsd))
SUBDIRS += jexec
endif # PLATFORM
diff --git a/jdk/make/java/instrument/Makefile b/jdk/make/java/instrument/Makefile
index fbc9455..4425e99 100755
--- a/jdk/make/java/instrument/Makefile
+++ b/jdk/make/java/instrument/Makefile
@@ -104,12 +104,24 @@ ifeq ($(PLATFORM), windows)
# equivalent of strcasecmp is stricmp on Windows
CPPFLAGS_COMMON += -Dstrcasecmp=stricmp
else
-ifneq (,$(findstring $(PLATFORM), macosx))
- ifneq ($(ARCH), universal)
- LDFLAGS += -Wl,-all_load
+ifneq (,$(findstring $(PLATFORM), macosx bsd))
+ ifeq ($(OS_VENDOR), Apple)
+ ifneq ($(ARCH), universal)
+ LDFLAGS += -Wl,-all_load
+ endif
+ LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
+ OTHER_LDLIBS += -liconv
+ else
+ LDFLAGS += -Wl,--whole-archive
+ LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
+ LDFLAGS += -Wl,--no-whole-archive
+ ifneq ($(OS_NAME), netbsd)
+# Use CPPFLAGS instead of OTHER_INCLUDES to force this last
+ CPPFLAGS += -I$(PACKAGE_PATH)/include
+ OTHER_LDLIBS += -L$(PACKAGE_PATH)/lib -liconv
+ endif
endif
- LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
- OTHER_LDLIBS += -liconv
+
ifeq ($(SYSTEM_ZLIB), true)
OTHER_LDLIBS += -lz
endif
diff --git a/jdk/make/java/java/FILES_java.gmk b/jdk/make/java/java/FILES_java.gmk
index 437c655..1d57313 100755
--- a/jdk/make/java/java/FILES_java.gmk
+++ b/jdk/make/java/java/FILES_java.gmk
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2012, Oracle and/or its affiliates. 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
@@ -476,6 +476,7 @@ JAVA_JAVA_java = \
sun/misc/MessageUtils.java \
sun/misc/GC.java \
sun/misc/Service.java \
+ sun/misc/JavaAWTAccess.java \
sun/misc/JavaLangAccess.java \
sun/misc/JavaIOAccess.java \
sun/misc/JavaIOFileDescriptorAccess.java \
diff --git a/jdk/make/java/java/Makefile b/jdk/make/java/java/Makefile
index 377d8b2..6f81c58 100755
--- a/jdk/make/java/java/Makefile
+++ b/jdk/make/java/java/Makefile
@@ -175,9 +175,11 @@ OTHER_INCLUDES += -I$(PLATFORM_SRC)/native/java/util
#
ifneq ($(PLATFORM), windows)
ifneq ($(PLATFORM), macosx)
+ifneq ($(PLATFORM), bsd)
HAVE_ALTZONE=true
endif
endif
+endif
ifeq ($(HAVE_ALTZONE),true)
OTHER_CPPFLAGS += -DHAVE_ALTZONE
diff --git a/jdk/make/java/java/genlocales.gmk b/jdk/make/java/java/genlocales.gmk
index 41cf00f..7bbe5d5 100755
--- a/jdk/make/java/java/genlocales.gmk
+++ b/jdk/make/java/java/genlocales.gmk
@@ -93,18 +93,66 @@ $(LocaleDataMetaInfo_Dest):$(LocaleDataMetaInfo_Src) $(LOCALEGEN_SH)
else
+ifeq ($(PLATFORM), bsd)
+
+$(LocaleDataMetaInfo_Dest):$(LocaleDataMetaInfo_Src) $(LOCALEGEN_SH)
+ @$(RM) $@.tmp.euro $@.tmp.noneuro;
+ @$(prep-target)
+ @$(ECHO) $(Euro_Resources_properties) | $(SED) -e s@.properties@'\
+'@g > $@.tmp.euro;
+ @$(ECHO) $(Euro_Resources_java) | $(SED) -e s@.java@'\
+'@g >> $@.tmp.euro;
+ @$(ECHO) $(NonEuro_Resources_properties) | $(SED) -e s@.properties@'\
+'@g > $@.tmp.noneuro;
+ @$(ECHO) $(NonEuro_Resources_java) | $(SED) -e s@.java@'\
+'@g >> $@.tmp.noneuro;
+ NAWK="$(NAWK)" SED="$(SED)" SORT="$(SORT)" \
+ $(SH) $(LOCALEGEN_SH) $(RESOURCE_NAMES) $@.tmp.euro \
+ $@.tmp.noneuro $< $@
+ @$(RM) $@.tmp.euro $@.tmp.noneuro;
+
+else
+
+ifeq ($(PLATFORM), bsd)
+
+$(LocaleDataMetaInfo_Dest):$(LocaleDataMetaInfo_Src) $(LOCALEGEN_SH)
+ @$(RM) $@.tmp.euro $@.tmp.noneuro;
+ @$(prep-target)
+ @$(ECHO) $(Euro_Resources_properties) | $(SED) -e s@.properties@'\
+'@g > $@.tmp.euro;
+ @$(ECHO) $(Euro_Resources_java) | $(SED) -e s@.java@'\
+'@g >> $@.tmp.euro;
+ @$(ECHO) $(NonEuro_Resources_properties) | $(SED) -e s@.properties@'\
+'@g > $@.tmp.noneuro;
+ @$(ECHO) $(NonEuro_Resources_java) | $(SED) -e s@.java@'\
+'@g >> $@.tmp.noneuro;
+ NAWK="$(NAWK)" SED="$(SED)" SORT="$(SORT)" \
+ $(SH) $(LOCALEGEN_SH) $(RESOURCE_NAMES) $@.tmp.euro \
+ $@.tmp.noneuro $< $@
+ @$(RM) $@.tmp.euro $@.tmp.noneuro;
+
+else
+
$(LocaleDataMetaInfo_Dest):$(LocaleDataMetaInfo_Src) $(LOCALEGEN_SH)
@$(RM) $@.tmp.euro $@.tmp.noneuro;
@$(prep-target)
- @$(ECHO) $(subst .properties,'\n',$(Euro_Resources_properties)) > $@.tmp.euro;
- @$(ECHO) $(subst .java,'\n',$(Euro_Resources_java)) >> $@.tmp.euro;
- @$(ECHO) $(subst .properties,'\n',$(NonEuro_Resources_properties)) > $@.tmp.noneuro;
- @$(ECHO) $(subst .java,'\n',$(NonEuro_Resources_java)) >> $@.tmp.noneuro;
+ @$(ECHO) $(Euro_Resources_properties) | $(SED) -e s@.properties@'\
+'@g > $@.tmp.euro;
+ @$(ECHO) $(Euro_Resources_java) | $(SED) -e s@.java@'\
+'@g >> $@.tmp.euro;
+ @$(ECHO) $(NonEuro_Resources_properties) | $(SED) -e s@.properties@'\
+'@g > $@.tmp.noneuro;
+ @$(ECHO) $(NonEuro_Resources_java) | $(SED) -e s@.java@'\
+'@g >> $@.tmp.noneuro;
NAWK="$(NAWK)" SED="$(SED)" SORT="$(SORT)" \
$(SH) $(LOCALEGEN_SH) $(RESOURCE_NAMES) $@.tmp.euro \
$@.tmp.noneuro $< $@
@$(RM) $@.tmp.euro $@.tmp.noneuro;
endif
+
+endif
+
+endif
genlocales : $(LocaleDataMetaInfo_Dest)
diff --git a/jdk/make/java/jli/Makefile b/jdk/make/java/jli/Makefile
index 1bc98d6..79f88e1 100755
--- a/jdk/make/java/jli/Makefile
+++ b/jdk/make/java/jli/Makefile
@@ -90,7 +90,8 @@ endif # SYSTEM_ZLIB
# add platform specific files
ifeq ($(PLATFORM), windows)
- FILES_c += java_md.c
+ FILES_c += java_md.c \
+ cmdtoargs.c
else # NIXES
FILES_c += java_md_common.c
ifeq ($(PLATFORM), macosx)
@@ -116,9 +117,9 @@ ifeq ($(PLATFORM), solaris)
LIBARCH_DEFINES += -DLIBARCH64NAME='"$(LIBARCH64)"'
endif # PLATFORM
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), macosx bsd))
OTHER_CPPFLAGS += $(LIBARCH_DEFINES) -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
-else # ! MACOSX
+else # ! MACOSX || BSD
OTHER_CPPFLAGS += $(LIBARCH_DEFINES)
endif #PLATFORM
@@ -131,7 +132,7 @@ ifneq ($(PLATFORM), windows) # UNIX systems
# Note: it is important to keep this order, meaning -lc as the
# last library, otherwise it could cause compatibility issues
# by pulling in SUNW_private symbols from libc
- LDLIBS = -ldl -lc
+ LDLIBS = $(LIBDL) -lc
ifeq ($(USE_PTHREADS),true)
LDLIBS += -lpthread
endif # USE_PTHREADS
@@ -149,7 +150,11 @@ ifeq ($(PLATFORM), windows)
-export:JLI_ReportErrorMessage \
-export:JLI_ReportErrorMessageSys \
-export:JLI_ReportMessage \
- -export:JLI_ReportExceptionDescription
+ -export:JLI_ReportExceptionDescription \
+ -export:JLI_MemAlloc \
+ -export:JLI_CmdToArgs \
+ -export:JLI_GetStdArgc \
+ -export:JLI_GetStdArgs
endif # PLATFORM
OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)
diff --git a/jdk/make/java/jli/mapfile-vers b/jdk/make/java/jli/mapfile-vers
index 5ff5edb..08ccd41 100755
--- a/jdk/make/java/jli/mapfile-vers
+++ b/jdk/make/java/jli/mapfile-vers
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2012, Oracle and/or its affiliates. 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
@@ -35,9 +35,8 @@ SUNWprivate_1.1 {
JLI_ReportErrorMessageSys;
JLI_ReportMessage;
JLI_ReportExceptionDescription;
-# JNI_CreateJavaVM;
-# JNI_GetCreatedJavaVMs;
-# JNI_GetDefaultJavaVMInitArgs;
+ JLI_GetStdArgs;
+ JLI_GetStdArgc;
local:
*;
};
diff --git a/jdk/make/java/net/FILES_c.gmk b/jdk/make/java/net/FILES_c.gmk
index a4bbb40..cfc5492 100755
--- a/jdk/make/java/net/FILES_c.gmk
+++ b/jdk/make/java/net/FILES_c.gmk
@@ -47,6 +47,10 @@ ifeq ($(PLATFORM), macosx)
FILES_c += bsd_close.c
endif
+ifeq ($(OS_VENDOR), FreeBSD)
+ FILES_c += bsd_close.c
+endif
+
ifeq ($(PLATFORM), windows)
FILES_c += TwoStacksPlainSocketImpl.c
FILES_c += DualStackPlainSocketImpl.c
diff --git a/jdk/make/java/net/Makefile b/jdk/make/java/net/Makefile
index 24e55c9..ae9b9e8 100755
--- a/jdk/make/java/net/Makefile
+++ b/jdk/make/java/net/Makefile
@@ -74,6 +74,7 @@ ifeq ($(PLATFORM), windows)
FILES_export += java/net/DualStackPlainSocketImpl.java
FILES_export += java/net/TwoStacksPlainDatagramSocketImpl.java
FILES_export += java/net/DualStackPlainDatagramSocketImpl.java
+ FILES_export += sun/net/www/protocol/http/ntlm/NTLMAuthSequence.java
else
FILES_export += java/net/PlainDatagramSocketImpl.java
endif
@@ -91,7 +92,7 @@ include $(BUILDDIR)/common/Mapfile-vers.gmk
include $(BUILDDIR)/common/Library.gmk
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), macosx bsd))
ifdef DONT_ENABLE_IPV6
OTHER_CFLAGS += -DDONT_ENABLE_IPV6
endif
diff --git a/jdk/make/java/nio/Makefile b/jdk/make/java/nio/Makefile
index 505c05e..3ff56f1 100755
--- a/jdk/make/java/nio/Makefile
+++ b/jdk/make/java/nio/Makefile
@@ -260,7 +260,7 @@ FILES_gen += \
sun/nio/fs/UnixConstants.java
endif # PLATFORM = linux
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
FILES_java += \
sun/nio/ch/AbstractPollSelectorImpl.java \
sun/nio/ch/BsdAsynchronousChannelProvider.java \
@@ -331,7 +331,7 @@ FILES_gen += \
sun/nio/fs/UnixConstants.java
endif # PLATFORM = bsd, macosx
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
FILES_java += \
sun/nio/ch/KQueueSelectorProvider.java \
sun/nio/ch/KQueueSelectorImpl.java \
@@ -339,6 +339,9 @@ FILES_java += \
FILES_c += \
KQueueArrayWrapper.c
+endif # PLATFORM = bsd, macosx
+
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
vpath %.c $(call NativeSrcDirList,,native/sun/nio/fs)
vpath %.c $(call NativeSrcDirList,,native/sun/nio/ch)
@@ -381,7 +384,7 @@ endif
ifeq ($(PLATFORM), linux)
OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread $(LIBDL)
endif
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
OTHER_LDLIBS += -L$(LIBDIR) -ljava -lnet -pthread
endif
ifeq ($(PLATFORM), solaris)
@@ -406,7 +409,7 @@ endif
ifeq ($(PLATFORM), linux)
FILES_m = mapfile-linux
endif
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
FILES_m = mapfile-bsd
endif
include $(BUILDDIR)/common/Mapfile-vers.gmk
diff --git a/jdk/make/java/nio/mapfile-bsd b/jdk/make/java/nio/mapfile-bsd
index b3f50ff..3bf78e2 100755
--- a/jdk/make/java/nio/mapfile-bsd
+++ b/jdk/make/java/nio/mapfile-bsd
@@ -70,6 +70,7 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_IOUtil_drain;
Java_sun_nio_ch_IOUtil_fdVal;
Java_sun_nio_ch_IOUtil_initIDs;
+ Java_sun_nio_ch_IOUtil_iovMax;
Java_sun_nio_ch_IOUtil_makePipe;
Java_sun_nio_ch_IOUtil_randomBytes;
Java_sun_nio_ch_IOUtil_setfdVal;
@@ -80,6 +81,11 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_KQueue_identOffset;
Java_sun_nio_ch_KQueue_filterOffset;
Java_sun_nio_ch_KQueue_flagsOffset;
+ Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes;
+ Java_sun_nio_ch_KQueueArrayWrapper_init;
+ Java_sun_nio_ch_KQueueArrayWrapper_register0;
+ Java_sun_nio_ch_KQueueArrayWrapper_kevent0;
+ Java_sun_nio_ch_KQueueArrayWrapper_interrupt;
Java_sun_nio_ch_KQueuePort_socketpair;
Java_sun_nio_ch_KQueuePort_interrupt;
Java_sun_nio_ch_KQueuePort_drain1;
diff --git a/jdk/make/java/npt/Makefile b/jdk/make/java/npt/Makefile
index ee312a8..d1e04b5 100755
--- a/jdk/make/java/npt/Makefile
+++ b/jdk/make/java/npt/Makefile
@@ -74,6 +74,14 @@ ifeq ($(PLATFORM), macosx))
OTHER_LDLIBS += -liconv
endif
+# Add location of iconv headers
+ifeq ($(PLATFORM), bsd)
+ ifneq ($(OS_NAME), netbsd)
+ CPPFLAGS += -I$(PACKAGE_PATH)/include
+ OTHER_LDLIBS += -L$(PACKAGE_PATH)/lib -liconv
+ endif
+endif
+
#
# Add to ambient vpath so we pick up the library files
#
diff --git a/jdk/make/java/redist/fonts/Makefile b/jdk/make/java/redist/fonts/Makefile
index d98fb8f..2133127 100755
--- a/jdk/make/java/redist/fonts/Makefile
+++ b/jdk/make/java/redist/fonts/Makefile
@@ -42,7 +42,7 @@ SHARED_FONTFILES = \
$(LIBDIR)/fonts/LucidaSansRegular.ttf \
$(LIBDIR)/fonts/LucidaSansDemiBold.ttf \
-ifeq ($(PLATFORM), linux)
+ifneq (,$(findstring $(PLATFORM), linux bsd))
# The oblique versions of the font are derived from the base versions
# and since 2D can do this derivation on the fly at run time there is no
@@ -82,7 +82,7 @@ $(LIBDIR)/fonts/%.ttf: $(CLOSED_SRC)/share/lib/fonts/%.ttf
$(FONTSDIRFILE): $(PLATFORM_SRC)/classes/sun/awt/motif/java.fonts.dir
$(install-file)
-ifeq ($(PLATFORM), linux)
+ifneq (,$(findstring $(PLATFORM), linux bsd))
# The oblique fonts are only needed/wanted on Linux.
@@ -96,7 +96,7 @@ $(LIBDIR)/oblique-fonts/%.ttf: $(CLOSED_SRC)/share/lib/fonts/oblique/%.ttf
$(OBLFONTSDIRFILE): $(PLATFORM_SRC)/classes/sun/awt/motif/java.oblique-fonts.dir
$(install-file)
-endif # linux
+endif # linux || bsd
all build : $(INTERNAL_IMPORT_LIST)
diff --git a/jdk/make/javax/crypto/Defs-jce.gmk b/jdk/make/javax/crypto/Defs-jce.gmk
index 7aecdc0..6203129 100755
--- a/jdk/make/javax/crypto/Defs-jce.gmk
+++ b/jdk/make/javax/crypto/Defs-jce.gmk
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2012, Oracle and/or its affiliates. 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
@@ -31,7 +31,7 @@ include $(BUILDDIR)/common/Release.gmk
JCE_MANIFEST_FILE = $(TEMPDIR)/manifest.mf
$(JCE_MANIFEST_FILE): $(MAINMANIFEST)
$(prep-target)
- $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
+ $(SED) -e "s#@@RELEASE@@#$(JDK_VERSION)#" \
-e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
$(MAINMANIFEST) >> $@
$(ECHO) "Extension-Name: javax.crypto" >> $@
diff --git a/jdk/make/javax/sound/Makefile b/jdk/make/javax/sound/Makefile
index cb455a7..93fb55a 100755
--- a/jdk/make/javax/sound/Makefile
+++ b/jdk/make/javax/sound/Makefile
@@ -111,6 +111,21 @@ ifeq ($(PLATFORM), linux)
#MXSPP_ADD = $(PLATFORM)-$(ARCH)/
endif # PLATFORM linux
+ifeq ($(PLATFORM), bsd)
+ifeq ($(OS_VENDOR), FreeBSD)
+ # ALSA handles directaudio, ports, and MIDI
+ SUBDIRS += jsoundalsa
+ EXTRA_SOUND_JNI_LIBS += jsoundalsa
+else
+ # build with empty MIDI i/o
+ INCLUDE_MIDI = TRUE
+ # build with empty ports
+ INCLUDE_PORTS = TRUE
+ # build with empty direct audio
+ INCLUDE_DAUDIO = TRUE
+endif
+endif # PLATFORM bsd
+
ifeq ($(PLATFORM), macosx)
CPPFLAGS += -DUSE_PORTS=TRUE \
-DUSE_DAUDIO=TRUE \
diff --git a/jdk/make/javax/sound/SoundDefs.gmk b/jdk/make/javax/sound/SoundDefs.gmk
index 06c0af8..53f50c2 100755
--- a/jdk/make/javax/sound/SoundDefs.gmk
+++ b/jdk/make/javax/sound/SoundDefs.gmk
@@ -40,6 +40,10 @@ ifeq ($(PLATFORM), linux)
CPPFLAGS += -DX_PLATFORM=X_LINUX
endif # PLATFORM linux
+ifeq ($(PLATFORM), bsd)
+ CPPFLAGS += -DX_PLATFORM=X_BSD
+endif # PLATFORM bsd
+
ifeq ($(PLATFORM), macosx)
CPPFLAGS += -DX_PLATFORM=X_MACOSX
endif # PLATFORM macosx
diff --git a/jdk/make/javax/sound/jsoundalsa/Makefile b/jdk/make/javax/sound/jsoundalsa/Makefile
index 5fa0124..d1ab49f 100755
--- a/jdk/make/javax/sound/jsoundalsa/Makefile
+++ b/jdk/make/javax/sound/jsoundalsa/Makefile
@@ -51,6 +51,7 @@ FILES_c = \
$(PORTFILES_c)
# platform dependent files
+ifeq ($(PLATFORM), linux)
FILES_c += \
PLATFORM_API_LinuxOS_ALSA_CommonUtils.c \
PLATFORM_API_LinuxOS_ALSA_PCM.c \
@@ -60,19 +61,37 @@ FILES_c += \
PLATFORM_API_LinuxOS_ALSA_MidiUtils.c \
PLATFORM_API_LinuxOS_ALSA_Ports.c
+MIDI_CPPFLAGS= \
+ -DUSE_PLATFORM_MIDI_OUT=TRUE \
+ -DUSE_PLATFORM_MIDI_IN=TRUE
+endif
+
+ifeq ($(PLATFORM), bsd)
+FILES_c += \
+ PLATFORM_API_BsdOS_ALSA_CommonUtils.c \
+ PLATFORM_API_BsdOS_ALSA_PCM.c \
+ PLATFORM_API_BsdOS_ALSA_PCMUtils.c \
+ PLATFORM_API_BsdOS_ALSA_MidiIn.c \
+ PLATFORM_API_BsdOS_ALSA_MidiOut.c \
+ PLATFORM_API_BsdOS_ALSA_MidiUtils.c \
+ PLATFORM_API_BsdOS_ALSA_Ports.c
+
+MIDI_CPPFLAGS=
+endif
+
FILES_export = \
$(DAUDIOFILES_export) \
$(MIDIFILES_export) \
$(PORTFILES_export)
-OTHER_LDLIBS += -lasound
+OTHER_LDLIBS += -L$(ALSA_LIB_PATH) -lasound
CPPFLAGS += \
-DUSE_DAUDIO=TRUE \
-DUSE_PORTS=TRUE \
- -DUSE_PLATFORM_MIDI_OUT=TRUE \
- -DUSE_PLATFORM_MIDI_IN=TRUE \
- -I$(SHARE_SRC)/native/com/sun/media/sound
+ $(MIDI_CPPFLAGS) \
+ -I$(SHARE_SRC)/native/com/sun/media/sound \
+ -I$(ALSA_HEADERS_PATH)
#
# Add to the ambient VPATH.
diff --git a/jdk/make/jpda/transport/socket/Makefile b/jdk/make/jpda/transport/socket/Makefile
index dab17ca..6ac0804 100755
--- a/jdk/make/jpda/transport/socket/Makefile
+++ b/jdk/make/jpda/transport/socket/Makefile
@@ -38,6 +38,11 @@ FILES_m = mapfile-vers
include $(BUILDDIR)/common/Defs.gmk
+ifeq ($(PLATFORM), bsd))
+ LIBSOCKET =
+ OTHER_LDLIBS += -pthread
+endif
+
ifeq ($(PLATFORM), linux)
OTHER_LDLIBS += $(LIBNSL) $(LIBSOCKET) -lpthread
endif
diff --git a/jdk/make/sun/awt/Makefile b/jdk/make/sun/awt/Makefile
index ed93612..640d855 100755
--- a/jdk/make/sun/awt/Makefile
+++ b/jdk/make/sun/awt/Makefile
@@ -123,7 +123,12 @@ OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
OTHER_LDLIBS = $(JVMLIB) $(LIBM) $(LIBDL)
endif
-FILES_c += initIDs.c
+ifeq ($(PLATFORM), bsd)
+FILES_c = $(FILES_2D_c)
+FILES_c += awt_LoadLibrary.c
+OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
+OTHER_LDLIBS = $(JVMLIB) $(LIBM)
+endif
ifeq ($(PLATFORM), macosx)
FILES_c = $(FILES_2D_c)
@@ -132,6 +137,8 @@ OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
OTHER_LDLIBS = $(JVMLIB) $(LIBM)
endif
+FILES_c += initIDs.c
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS/LINUX
endif # PLATFORM
@@ -425,6 +432,17 @@ FONTCONFIGS_SRC_PREFIX = $(PLATFORM).
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS
endif # PLATFORM
+ifeq ($(PLATFORM), bsd)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv BSD
+
+FONTCONFIGS_SRC = $(PLATFORM_SRC)/classes/sun/awt/fontconfigs
+_FONTCONFIGS = \
+ fontconfig.properties
+
+FONTCONFIGS_SRC_PREFIX = $(PLATFORM).
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BSD
+endif # PLATFORM
ifeq ($(PLATFORM), macosx)
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MAC OS X
@@ -530,6 +548,9 @@ CPPFLAGS += -I$(OPENWIN_HOME)/include \
-I$(OPENWIN_HOME)/include/X11/extensions \
-I$(PLATFORM_SRC)/native/$(PKGDIR)/font
endif
+ifeq ($(PLATFORM), bsd)
+CPPFLAGS += -I$(PLATFORM_SRC)/native/$(PKGDIR)/font
+endif
CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
-I$(SHARE_SRC)/native/$(PKGDIR)/../font \
-I$(PLATFORM_SRC)/native/$(PKGDIR)/../font \
@@ -551,7 +572,13 @@ CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
-I$(PLATFORM_SRC)/native/$(PKGDIR) \
$(EVENT_MODEL)
-ifeq ($(PLATFORM), linux)
+# include these last so we don't pick up unintentional includes
+ifeq ($(PLATFORM), bsd)
+CPPFLAGS += -I$(OPENWIN_HOME)/include \
+ -I$(OPENWIN_HOME)/include/X11/extensions
+endif
+
+ifneq (,$(findstring $(PLATFORM), linux bsd))
LDFLAGS += -L$(OPENWIN_LIB)
endif
diff --git a/jdk/make/sun/awt/mawt.gmk b/jdk/make/sun/awt/mawt.gmk
index 4c9b08f..66dc3f8 100755
--- a/jdk/make/sun/awt/mawt.gmk
+++ b/jdk/make/sun/awt/mawt.gmk
@@ -169,7 +169,7 @@ ifeq ($(PLATFORM), solaris)
OTHER_LDLIBS = -lXt -lXext $(LIBXTST) $(LIBXMU) -lX11 -lXi
endif
-ifneq (,$(findstring $(PLATFORM), linux macosx))
+ifneq (,$(findstring $(PLATFORM), bsd linux macosx))
OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
# XXX what is this define below? Isn't it motif-related?
OTHER_CFLAGS += -DXMSTRINGDEFINES=1
@@ -193,6 +193,7 @@ endif
#
# Other extra flags needed for compiling.
#
+ifneq ($(PLATFORM), bsd))
CPPFLAGS += -I$(CUPS_HEADERS_PATH)
ifndef HEADLESS
@@ -200,6 +201,7 @@ CPPFLAGS += -I$(OPENWIN_HOME)/include
LDFLAGS += -L$(OPENWIN_LIB)
endif # !HEADLESS
+endif # !PLATFORM
CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
-I$(SHARE_SRC)/native/$(PKGDIR)/../font \
@@ -223,13 +225,16 @@ CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
-I$(PLATFORM_SRC)/native/$(PKGDIR) \
$(EVENT_MODEL)
-ifeq ($(PLATFORM), macosx)
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
CPPFLAGS += -I$(CUPS_HEADERS_PATH)
ifndef HEADLESS
CPPFLAGS += -I$(MOTIF_DIR)/include \
-I$(OPENWIN_HOME)/include
LDFLAGS += -L$(MOTIF_LIB) -L$(OPENWIN_LIB)
+ifeq ($(OS_NAME), netbsd)
+LDFLAGS += -Wl,-R$(OPENWIN_LIB)
+endif
endif # !HEADLESS
endif # PLATFORM
@@ -240,6 +245,12 @@ ifeq ($(PLATFORM), linux)
$(wildcard /usr/include/X11/extensions))
endif
+ifeq ($(PLATFORM), bsd))
+ CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions \
+ -I$(OPENWIN_HOME)/include \
+ -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
+endif
+
ifeq ($(PLATFORM), macosx))
CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions \
-I$(OPENWIN_HOME)/include
diff --git a/jdk/make/sun/font/FILES_c.gmk b/jdk/make/sun/font/FILES_c.gmk
index c943706..b1895c5 100755
--- a/jdk/make/sun/font/FILES_c.gmk
+++ b/jdk/make/sun/font/FILES_c.gmk
@@ -106,7 +106,21 @@ FILES_cpp_shared = \
OpenTypeLayoutEngine.cpp \
ThaiLayoutEngine.cpp \
ScriptAndLanguageTags.cpp \
- FontInstanceAdapter.cpp
+ FontInstanceAdapter.cpp \
+ ContextualGlyphInsertionProc2.cpp \
+ ContextualGlyphSubstProc2.cpp \
+ GXLayoutEngine2.cpp \
+ IndicRearrangementProcessor2.cpp \
+ LigatureSubstProc2.cpp \
+ MorphTables2.cpp \
+ NonContextualGlyphSubstProc2.cpp \
+ SegmentArrayProcessor2.cpp \
+ SegmentSingleProcessor2.cpp \
+ SimpleArrayProcessor2.cpp \
+ SingleTableProcessor2.cpp \
+ StateTableProcessor2.cpp \
+ SubtableProcessor2.cpp \
+ TrimmedArrayProcessor2.cpp
ifeq ($(PLATFORM),windows)
diff --git a/jdk/make/sun/font/Makefile b/jdk/make/sun/font/Makefile
index e224fe3..360c182 100755
--- a/jdk/make/sun/font/Makefile
+++ b/jdk/make/sun/font/Makefile
@@ -91,7 +91,7 @@ else # PLATFORM unix
endif # PLATFORM
# Turn off aliasing with GCC for ExtensionSubtables.cpp
-ifeq ($(PLATFORM), linux)
+ifneq (,$(findstring $(PLATFORM), bsd linux))
CXXFLAGS += $(CXXFLAGS_$(@F))
CXXFLAGS_ExtensionSubtables.o = -fno-strict-aliasing
endif
@@ -178,7 +178,7 @@ else # PLATFORM
# Libraries to link, and other C flags.
#
-ifeq ($(PLATFORM), macosx))
+ifneq (,$(findstring $(PLATFORM), bsd macosx))
OTHER_INCLUDES += -I$(X11_PATH)/include
OTHER_LDLIBS += -lawt $(LIBM) $(LIBCXX)
ifeq ($(OS_VENDOR),Apple)
diff --git a/jdk/make/sun/javazic/tzdata/VERSION b/jdk/make/sun/javazic/tzdata/VERSION
index 80cedce..85db871 100755
--- a/jdk/make/sun/javazic/tzdata/VERSION
+++ b/jdk/make/sun/javazic/tzdata/VERSION
@@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
-tzdata2012c
+tzdata2012i
diff --git a/jdk/make/sun/javazic/tzdata/africa b/jdk/make/sun/javazic/tzdata/africa
index 0b82075..7db9b3d 100755
--- a/jdk/make/sun/javazic/tzdata/africa
+++ b/jdk/make/sun/javazic/tzdata/africa
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)africa 8.35
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -261,7 +260,7 @@ Rule Egypt 2006 only - Sep 21 23:00s 0 -
# I received a mail from an airline which says that the daylight
# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
-# http://www.nentjes.info/Bill/bill5.htm
+# http://www.nentjes.info/Bill/bill5.htm
# http://www.timeanddate.com/worldclock/city.html?n=53
# From Steffen Thorsen (2007-09-04): The official information...:
# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
@@ -315,18 +314,18 @@ Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 -
# in September.
# From Steffen Thorsen (2009-08-11):
-# We have been able to confirm the August change with the Egyptian Cabinet
+# We have been able to confirm the August change with the Egyptian Cabinet
# Information and Decision Support Center:
#
# http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html
#
-#
+#
# The Middle East News Agency
#
# http://www.mena.org.eg/index.aspx
#
# also reports "Egypt starts winter time on August 21"
-# today in article numbered "71, 11/08/2009 12:25 GMT."
+# today in article numbered "71, 11/08/2009 12:25 GMT."
# Only the title above is available without a subscription to their service,
# and can be found by searching for "winter" in their search engine
# (at least today).
@@ -505,7 +504,7 @@ Zone Africa/Nouakchott -1:03:48 - LMT 1912
# From Steffen Thorsen (2008-06-25):
# Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial
# basis....
-# It seems that Mauritius observed daylight saving time from 1982-10-10 to
+# It seems that Mauritius observed daylight saving time from 1982-10-10 to
# 1983-03-20 as well, but that was not successful....
# http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html
@@ -529,12 +528,12 @@ Zone Africa/Nouakchott -1:03:48 - LMT 1912
# than previously announced (2008-11-01 to 2009-03-31). The new start
# date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
# given, but it is probably at either 2 or 3 wall clock time).
-#
-# A little strange though, since the article says that they moved the date
-# to align itself with Europe and USA which also change time on that date,
-# but that means they have not paid attention to what happened in
-# USA/Canada last year (DST ends first Sunday in November). I also wonder
-# why that they end on a Friday, instead of aligning with Europe which
+#
+# A little strange though, since the article says that they moved the date
+# to align itself with Europe and USA which also change time on that date,
+# but that means they have not paid attention to what happened in
+# USA/Canada last year (DST ends first Sunday in November). I also wonder
+# why that they end on a Friday, instead of aligning with Europe which
# changes two days later.
# From Alex Krivenyshev (2008-07-11):
@@ -593,7 +592,7 @@ Zone Africa/Nouakchott -1:03:48 - LMT 1912
#
# From Arthur David Olson (2009-07-11):
-# The "mauritius-dst-will-not-repeat" wrapup includes this:
+# The "mauritius-dst-will-not-repeat" wrapup includes this:
# "The trial ended on March 29, 2009, when the clocks moved back by one hour
# at 2am (or 02:00) local time..."
@@ -687,8 +686,8 @@ Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
# XXX--guess that it is only Morocco for now; guess only 2008 for now.
# From Steffen Thorsen (2008-08-27):
-# Morocco will change the clocks back on the midnight between August 31
-# and September 1. They originally planned to observe DST to near the end
+# Morocco will change the clocks back on the midnight between August 31
+# and September 1. They originally planned to observe DST to near the end
# of September:
#
# One article about it (in French):
@@ -822,6 +821,23 @@ Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
# "...à partir du dernier dimance d'avril et non fins mars,
# comme annoncé précédemment."
+# From Milamber Space Network (2012-07-17):
+# The official return to GMT is announced by the Moroccan government:
+#
+# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]
+#
+#
+# Google translation, lightly edited:
+# Back to the standard time of the Kingdom (GMT)
+# Pursuant to Decree No. 2-12-126 issued on 26 Jumada (I) 1433 (April 18,
+# 2012) and in accordance with the order of Mr. President of the
+# Government No. 3-47-12 issued on 24 Sha'ban (11 July 2012), the Ministry
+# of Public Service and Administration Modernization announces the return
+# of the legal time of the Kingdom (GMT) from Friday, July 20, 2012 until
+# Monday, August 20, 2012. So the time will be delayed by 60 minutes from
+# 3:00 am Friday, July 20, 2012 and will again be advanced by 60 minutes
+# August 20, 2012 from 2:00 am.
+
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Morocco 1939 only - Sep 12 0:00 1:00 S
@@ -849,6 +865,8 @@ Rule Morocco 2011 only - Apr 3 0:00 1:00 S
Rule Morocco 2011 only - Jul 31 0 0 -
Rule Morocco 2012 max - Apr lastSun 2:00 1:00 S
Rule Morocco 2012 max - Sep lastSun 3:00 0 -
+Rule Morocco 2012 only - Jul 20 3:00 0 -
+Rule Morocco 2012 only - Aug 20 2:00 1:00 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
@@ -877,7 +895,7 @@ Zone Africa/Maputo 2:10:20 - LMT 1903 Mar
# Forecasting Riaan van Zyl explained that the far eastern parts of
# the country are close to 40 minutes earlier in sunrise than the rest
# of the country.
-#
+#
# From Paul Eggert (2007-03-31):
# Apparently the Caprivi Strip informally observes Botswana time, but
# we have no details. In the meantime people there can use Africa/Gaborone.
diff --git a/jdk/make/sun/javazic/tzdata/antarctica b/jdk/make/sun/javazic/tzdata/antarctica
index ddbff54..64b71d5 100755
--- a/jdk/make/sun/javazic/tzdata/antarctica
+++ b/jdk/make/sun/javazic/tzdata/antarctica
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)antarctica 8.10
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
diff --git a/jdk/make/sun/javazic/tzdata/asia b/jdk/make/sun/javazic/tzdata/asia
index 4369776..9ef3ef8 100755
--- a/jdk/make/sun/javazic/tzdata/asia
+++ b/jdk/make/sun/javazic/tzdata/asia
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)asia 8.73
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -125,7 +124,7 @@ Zone Asia/Kabul 4:36:48 - LMT 1890
# From Alexander Krivenyshev (2012-02-10):
# According to News Armenia, on Feb 9, 2012,
# http://newsarmenia.ru/society/20120209/42609695.html
-#
+#
# The Armenia National Assembly adopted final reading of Amendments to the
# Law "On procedure of calculation time on the territory of the Republic of
# Armenia" according to which Armenia [is] abolishing Daylight Saving Time.
@@ -205,15 +204,15 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
#
# From A. N. M. Kamrus Saadat (2009-06-15):
-# Finally we've got the official mail regarding DST start time where DST start
-# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh
-# Telecommunication Regulatory Commission).
+# Finally we've got the official mail regarding DST start time where DST start
+# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh
+# Telecommunication Regulatory Commission).
#
# No DST end date has been announced yet.
# From Alexander Krivenyshev (2009-09-25):
-# Bangladesh won't go back to Standard Time from October 1, 2009,
-# instead it will continue DST measure till the cabinet makes a fresh decision.
+# Bangladesh won't go back to Standard Time from October 1, 2009,
+# instead it will continue DST measure till the cabinet makes a fresh decision.
#
# Following report by same newspaper-"The Daily Star Friday":
# "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
@@ -227,8 +226,8 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
# From Steffen Thorsen (2009-10-13):
# IANS (Indo-Asian News Service) now reports:
-# Bangladesh has decided that the clock advanced by an hour to make
-# maximum use of daylight hours as an energy saving measure would
+# Bangladesh has decided that the clock advanced by an hour to make
+# maximum use of daylight hours as an energy saving measure would
# "continue for an indefinite period."
#
# One of many places where it is published:
@@ -256,7 +255,7 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
# From Alexander Krivenyshev (2010-03-22):
# According to Bangladesh newspaper "The Daily Star,"
-# Cabinet cancels Daylight Saving Time
+# Cabinet cancels Daylight Saving Time
#
# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
#
@@ -384,11 +383,11 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D
# observing daylight saving time in 1986.
#
# From Thomas S. Mullaney (2008-02-11):
-# I think you're combining two subjects that need to treated
-# separately: daylight savings (which, you're correct, wasn't
-# implemented until the 1980s) and the unified time zone centered near
-# Beijing (which was implemented in 1949). Briefly, there was also a
-# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
+# I think you're combining two subjects that need to treated
+# separately: daylight savings (which, you're correct, wasn't
+# implemented until the 1980s) and the unified time zone centered near
+# Beijing (which was implemented in 1949). Briefly, there was also a
+# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
# ceased, and the second eventually recognized (again, in the 1980s).
#
# From Paul Eggert (2008-06-30):
@@ -525,7 +524,7 @@ Zone Asia/Kashgar 5:03:56 - LMT 1928 # or Kashi or Kaxgar
# as of 2009-10-28:
# Year Period
# 1941 1 Apr to 30 Sep
-# 1942 Whole year
+# 1942 Whole year
# 1943 Whole year
# 1944 Whole year
# 1945 Whole year
@@ -616,16 +615,16 @@ Zone Asia/Hong_Kong 7:36:36 - LMT 1904 Oct 30
# From Arthur David Olson (2010-04-07):
# Here's Google's translation of the table at the bottom of the "summert.htm" page:
# Decade Name Start and end date
-# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time May 1 to September 30
-# 41 years of the Republic of China (AD 1952) Daylight Saving Time March 1 to October 31
-# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time April 1 to October 31
-# In the 44 years to 45 years (AD 1955-1956 years) Daylight Saving Time April 1 to September 30
-# Republic of China 46 years to 48 years (AD 1957-1959) Summer Time April 1 to September 30
-# Republic of China 49 years to 50 years (AD 1960-1961) Summer Time June 1 to September 30
-# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time
-# Republic of China 63 years to 64 years (1974-1975 AD) Daylight Saving Time April 1 to September 30
-# Republic of China 65 years to 67 years (1976-1978 AD) Stop Daylight Saving Time
-# Republic of China 68 years (AD 1979) Daylight Saving Time July 1 to September 30
+# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time May 1 to September 30
+# 41 years of the Republic of China (AD 1952) Daylight Saving Time March 1 to October 31
+# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time April 1 to October 31
+# In the 44 years to 45 years (AD 1955-1956 years) Daylight Saving Time April 1 to September 30
+# Republic of China 46 years to 48 years (AD 1957-1959) Summer Time April 1 to September 30
+# Republic of China 49 years to 50 years (AD 1960-1961) Summer Time June 1 to September 30
+# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time
+# Republic of China 63 years to 64 years (1974-1975 AD) Daylight Saving Time April 1 to September 30
+# Republic of China 65 years to 67 years (1976-1978 AD) Stop Daylight Saving Time
+# Republic of China 68 years (AD 1979) Daylight Saving Time July 1 to September 30
# Republic of China since 69 years (AD 1980) Stop Daylight Saving Time
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
@@ -1194,15 +1193,15 @@ Rule Zion 2004 only - Sep 22 1:00 0 S
#
# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
-# From Paul Eggert (2005-02-22):
+# From Paul Eggert (2012-10-26):
# I used Ephraim Silverberg's dst-israel.el program
# (2005-02-20)
# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
-# to generate the transitions in this list.
+# to generate the transitions from 2005 through 2012.
# (I replaced "lastFri" with "Fri>=26" by hand.)
-# The spring transitions below all correspond to the following Rule:
+# The spring transitions all correspond to the following Rule:
#
-# Rule Zion 2005 max - Mar Fri>=26 2:00 1:00 D
+# Rule Zion 2005 2012 - Mar Fri>=26 2:00 1:00 D
#
# but older zic implementations (e.g., Solaris 8) do not support
# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
@@ -1219,39 +1218,36 @@ Rule Zion 2009 only - Sep 27 2:00 0 S
Rule Zion 2010 only - Sep 12 2:00 0 S
Rule Zion 2011 only - Apr 1 2:00 1:00 D
Rule Zion 2011 only - Oct 2 2:00 0 S
-Rule Zion 2012 2015 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D
Rule Zion 2012 only - Sep 23 2:00 0 S
-Rule Zion 2013 only - Sep 8 2:00 0 S
-Rule Zion 2014 only - Sep 28 2:00 0 S
-Rule Zion 2015 only - Sep 20 2:00 0 S
-Rule Zion 2016 only - Apr 1 2:00 1:00 D
-Rule Zion 2016 only - Oct 9 2:00 0 S
-Rule Zion 2017 2021 - Mar Fri>=26 2:00 1:00 D
-Rule Zion 2017 only - Sep 24 2:00 0 S
-Rule Zion 2018 only - Sep 16 2:00 0 S
-Rule Zion 2019 only - Oct 6 2:00 0 S
-Rule Zion 2020 only - Sep 27 2:00 0 S
-Rule Zion 2021 only - Sep 12 2:00 0 S
-Rule Zion 2022 only - Apr 1 2:00 1:00 D
-Rule Zion 2022 only - Oct 2 2:00 0 S
-Rule Zion 2023 2032 - Mar Fri>=26 2:00 1:00 D
-Rule Zion 2023 only - Sep 24 2:00 0 S
-Rule Zion 2024 only - Oct 6 2:00 0 S
-Rule Zion 2025 only - Sep 28 2:00 0 S
-Rule Zion 2026 only - Sep 20 2:00 0 S
-Rule Zion 2027 only - Oct 10 2:00 0 S
-Rule Zion 2028 only - Sep 24 2:00 0 S
-Rule Zion 2029 only - Sep 16 2:00 0 S
-Rule Zion 2030 only - Oct 6 2:00 0 S
-Rule Zion 2031 only - Sep 21 2:00 0 S
-Rule Zion 2032 only - Sep 12 2:00 0 S
-Rule Zion 2033 only - Apr 1 2:00 1:00 D
-Rule Zion 2033 only - Oct 2 2:00 0 S
-Rule Zion 2034 2037 - Mar Fri>=26 2:00 1:00 D
-Rule Zion 2034 only - Sep 17 2:00 0 S
-Rule Zion 2035 only - Oct 7 2:00 0 S
-Rule Zion 2036 only - Sep 28 2:00 0 S
-Rule Zion 2037 only - Sep 13 2:00 0 S
+
+# From Ephraim Silverberg (2012-10-18):
+
+# Yesterday, the Interior Ministry Committee, after more than a year
+# past, approved sending the proposed June 2011 changes to the Time
+# Decree Law back to the Knesset for second and third (final) votes
+# before the upcoming elections on Jan. 22, 2013. Hence, although the
+# changes are not yet law, they are expected to be so before February 2013.
+#
+# As of 2013, DST starts at 02:00 on the Friday before the last Sunday in March.
+# DST ends at 02:00 on the first Sunday after October 1, unless it occurs on the
+# second day of the Jewish Rosh Hashana holiday, in which case DST ends a day
+# later (i.e. at 02:00 the first Monday after October 2).
+# [Rosh Hashana holidays are factored in until 2100.]
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
+Rule Zion 2013 2026 - Oct Sun>=2 2:00 0 S
+Rule Zion 2027 only - Oct Mon>=3 2:00 0 S
+Rule Zion 2028 max - Oct Sun>=2 2:00 0 S
+# The following rules are commented out for now, as they break older
+# versions of zic that support only signed 32-bit timestamps, i.e.,
+# through 2038-01-19 03:14:07 UTC.
+#Rule Zion 2028 2053 - Oct Sun>=2 2:00 0 S
+#Rule Zion 2054 only - Oct Mon>=3 2:00 0 S
+#Rule Zion 2055 2080 - Oct Sun>=2 2:00 0 S
+#Rule Zion 2081 only - Oct Mon>=3 2:00 0 S
+#Rule Zion 2082 max - Oct Sun>=2 2:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Jerusalem 2:20:56 - LMT 1880
@@ -1386,6 +1382,16 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
# From Arthur David Olson (2009-04-06):
# We still have Jordan switching to DST on Thursdays in 2000 and 2001.
+# From Steffen Thorsen (2012-10-25):
+# Yesterday the government in Jordan announced that they will not
+# switch back to standard time this winter, so the will stay on DST
+# until about the same time next year (at least).
+# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950
+#
+# From Paul Eggert (2012-10-25):
+# For now, assume this is just a one-year measure. If it becomes
+# permanent, we should move Jordan from EET to AST effective tomorrow.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Jordan 1973 only - Jun 6 0:00 1:00 S
Rule Jordan 1973 1975 - Oct 1 0:00 0 -
@@ -1414,7 +1420,8 @@ Rule Jordan 2002 max - Mar lastThu 24:00 1:00 S
Rule Jordan 2003 only - Oct 24 0:00s 0 -
Rule Jordan 2004 only - Oct 15 0:00s 0 -
Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
-Rule Jordan 2006 max - Oct lastFri 0:00s 0 -
+Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
+Rule Jordan 2013 max - Oct lastFri 0:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Amman 2:23:44 - LMT 1931
2:00 Jordan EE%sT
@@ -1859,15 +1866,15 @@ Zone Asia/Muscat 3:54:20 - LMT 1920
# shown 8 per cent higher consumption of electricity.
# From Alex Krivenyshev (2008-05-15):
-#
-# Here is an article that Pakistan plan to introduce Daylight Saving Time
+#
+# Here is an article that Pakistan plan to introduce Daylight Saving Time
# on June 1, 2008 for 3 months.
-#
-# "... The federal cabinet on Wednesday announced a new conservation plan to help
-# reduce load shedding by approving the closure of commercial centres at 9pm and
-# moving clocks forward by one hour for the next three months.
+#
+# "... The federal cabinet on Wednesday announced a new conservation plan to help
+# reduce load shedding by approving the closure of commercial centres at 9pm and
+# moving clocks forward by one hour for the next three months.
# ...."
-#
+#
#
# http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
#
@@ -1927,7 +1934,7 @@ Zone Asia/Muscat 3:54:20 - LMT 1920
# Government has decided to restore the previous time by moving the
# clocks backward by one hour from October 1. A formal announcement to
# this effect will be made after the Prime Minister grants approval in
-# this regard."
+# this regard."
#
# http://www.thenews.com.pk/updates.asp?id=87168
#
@@ -2223,7 +2230,7 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
#
# http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
#
-# the clocks were set back one hour at 2010-08-11 00:00:00 local time in
+# the clocks were set back one hour at 2010-08-11 00:00:00 local time in
# Gaza and the West Bank.
# Some more background info:
#
@@ -2262,7 +2269,7 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
# The rules for Egypt are stolen from the `africa' file.
# From Steffen Thorsen (2011-09-30):
-# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
+# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
# 00:00).
# So West Bank and Gaza now have the same time again.
#
@@ -2317,6 +2324,8 @@ Rule Palestine 2010 only - Aug 11 0:00 0 -
# From Arthur David Olson (2011-09-20):
# 2011 transitions per http://www.timeanddate.com as of 2011-09-20.
+# From Paul Eggert (2012-10-12):
+# 2012 transitions per http://www.timeanddate.com as of 2012-10-12.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
@@ -2327,7 +2336,7 @@ Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
2:00 Palestine EE%sT 2011 Apr 2 12:01
2:00 1:00 EEST 2011 Aug 1
2:00 - EET 2012 Mar 30
- 2:00 1:00 EEST 2012 Sep 28
+ 2:00 1:00 EEST 2012 Sep 21 1:00
2:00 - EET
Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
@@ -2342,7 +2351,7 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
2:00 - EET 2011 Aug 30
2:00 1:00 EEST 2011 Sep 30 3:00
2:00 - EET 2012 Mar 30
- 2:00 1:00 EEST 2012 Sep 28 3:00
+ 2:00 1:00 EEST 2012 Sep 21 1:00
2:00 - EET
# Paracel Is
@@ -2536,19 +2545,19 @@ Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
# having it between Wednesday and Thursday (two workdays in Syria) since the
# weekend in Syria is not Saturday and Sunday, but Friday and Saturday. So now
# it is implemented at midnight of the last workday before weekend...
-#
+#
# From Steffen Thorsen (2007-10-27):
# Jesper Norgaard Welen wrote:
-#
+#
# > "Winter local time in Syria will be observed at midnight of Thursday 1
# > November 2007, and the clock will be put back 1 hour."
-#
+#
# I found confirmation on this in this gov.sy-article (Arabic):
# http://wehda.alwehda.gov.sy/_print_veiw.asp?FileName=12521710520070926111247
-#
+#
# which using Google's translate tools says:
-# Council of Ministers also approved the commencement of work on
-# identifying the winter time as of Friday, 2/11/2007 where the 60th
+# Council of Ministers also approved the commencement of work on
+# identifying the winter time as of Friday, 2/11/2007 where the 60th
# minute delay at midnight Thursday 1/11/2007.
Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
@@ -2614,8 +2623,8 @@ Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
#
# From Steffen Thorsen (2009-10-27):
-# The Syrian Arab News Network on 2009-09-29 reported that Syria will
-# revert back to winter (standard) time on midnight between Thursday
+# The Syrian Arab News Network on 2009-09-29 reported that Syria will
+# revert back to winter (standard) time on midnight between Thursday
# 2009-10-29 and Friday 2009-10-30:
#
# http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)
diff --git a/jdk/make/sun/javazic/tzdata/australasia b/jdk/make/sun/javazic/tzdata/australasia
index 1f261fb..7f83448 100755
--- a/jdk/make/sun/javazic/tzdata/australasia
+++ b/jdk/make/sun/javazic/tzdata/australasia
@@ -22,7 +22,6 @@
# questions.
#
#
# From Alexander Krivenyshev (2010-10-24):
-# According to Radio Fiji and Fiji Times online, Fiji will end DST 3
+# According to Radio Fiji and Fiji Times online, Fiji will end DST 3
# weeks earlier than expected - on March 6, 2011, not March 27, 2011...
-# Here is confirmation from Government of the Republic of the Fiji Islands,
+# Here is confirmation from Government of the Republic of the Fiji Islands,
# Ministry of Information (fiji.gov.fj) web site:
#
# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155
@@ -320,15 +319,15 @@ Zone Indian/Cocos 6:27:40 - LMT 1900
#
# From Steffen Thorsen (2011-10-03):
-# Now the dates have been confirmed, and at least our start date
+# Now the dates have been confirmed, and at least our start date
# assumption was correct (end date was one week wrong).
#
#
# www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
#
# which says
-# Members of the public are reminded to change their time to one hour in
-# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to
+# Members of the public are reminded to change their time to one hour in
+# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to
# 2am on February 26 next year.
# From Ken Rylander (2011-10-24)
@@ -345,15 +344,23 @@ Zone Indian/Cocos 6:27:40 - LMT 1900
# The commencement of daylight saving will remain unchanged and start
# on the 23rd of October, 2011.
+# From the Fiji Government Online Portal (2012-08-21) via Steffen Thorsen:
+# The Minister for Labour, Industrial Relations and Employment Mr Jone Usamate
+# today confirmed that Fiji will start daylight savings at 2 am on Sunday 21st
+# October 2012 and end at 3 am on Sunday 20th January 2013.
+# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155
+#
+# From Paul Eggert (2012-08-31):
+# For now, guess a pattern of the penultimate Sundays in October and January.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S
Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
Rule Fiji 2009 only - Nov 29 2:00 1:00 S
Rule Fiji 2010 only - Mar lastSun 3:00 0 -
-Rule Fiji 2010 only - Oct 24 2:00 1:00 S
+Rule Fiji 2010 max - Oct Sun>=18 2:00 1:00 S
Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
-Rule Fiji 2011 only - Oct 23 2:00 1:00 S
-Rule Fiji 2012 only - Jan 22 3:00 0 -
+Rule Fiji 2012 max - Jan Sun>=18 3:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Fiji 11:53:40 - LMT 1915 Oct 26 # Suva
12:00 Fiji FJ%sT # Fiji Time
@@ -582,7 +589,7 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
# From David Zuelke (2011-05-09):
# Subject: Samoa to move timezone from east to west of international date line
-#
+#
#
# http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
#
@@ -644,6 +651,23 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
# seasons, there is not yet any indication that this trend will continue on
# a regular basis. For now, we have explicitly listed the transitions below.
+#
+# From Nicky (2012-09-10):
+# Daylight Saving Time commences on Sunday 30th September 2012 and
+# ends on Sunday 7th of April 2013.
+#
+# Please find link below for more information.
+# http://www.mcil.gov.ws/mcil_publications.html
+#
+# That publication also includes dates for Summer of 2013/4 as well
+# which give the impression of a pattern in selecting dates for the
+# future, so for now, we will guess this will continue.
+
+# Western Samoa
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule WS 2012 max - Sep lastSun 3:00 1 D
+Rule WS 2012 max - Apr Sun>=1 4:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
-11:26:56 - LMT 1911
-11:30 - SAMT 1950 # Samoa Time
@@ -651,8 +675,8 @@ Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
-11:00 1:00 WSDT 2011 Apr 2 4:00
-11:00 - WST 2011 Sep 24 3:00
-11:00 1:00 WSDT 2011 Dec 30
- 13:00 1:00 WSDT 2012 Apr 1 4:00
- 13:00 - WST
+ 13:00 1:00 WSDT 2012 Apr Sun>=1 4:00
+ 13:00 WS WS%sT
# Solomon Is
# excludes Bougainville, for which see Papua New Guinea
@@ -664,25 +688,25 @@ Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct # Honiara
#
# From Gwillim Law (2011-12-29)
# A correspondent informed me that Tokelau, like Samoa, will be skipping
-# December 31 this year, thereby changing its time zone from UTC-10 to
-# UTC+14. When I tried to verify this statement, I found a confirming
-# article in Time magazine online
-#
-# (http://www.time.com/time/world/article/0,8599,2103243,00.html).
-#
+# December 31 this year ...
#
-# From Jonathan Leffler (2011-12-29)
-# Information from the BBC to the same effect:
-#
-# http://www.bbc.co.uk/news/world-asia-16351377
-#
+# From Steffen Thorsen (2012-07-25)
+# ... we double checked by calling hotels and offices based in Tokelau asking
+# about the time there, and they all told a time that agrees with UTC+13....
+# Shanks says UTC-10 from 1901 [but] ... there is a good chance the change
+# actually was to UTC-11 back then.
#
-# Patch supplied by Tim Parenti (2011-12-29)
+# From Paul Eggert (2012-07-25)
+# A Google Books snippet of Appendix to the Journals of the House of
+# Representatives of New Zealand, Session 1948,
+# , page 65, says Tokelau
+# was "11 hours slow on G.M.T." Go with Thorsen and assume Shanks & Pottenger
+# are off by an hour starting in 1901.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Fakaofo -11:24:56 - LMT 1901
- -10:00 - TKT 2011 Dec 30 # Tokelau Time
- 14:00 - TKT
+ -11:00 - TKT 2011 Dec 30 # Tokelau Time
+ 13:00 - TKT
# Tonga
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
@@ -1363,22 +1387,22 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
# See "southeast Australia" above for 2008 and later.
# From Steffen Thorsen (2009-04-28):
-# According to the official press release, South Australia's extended daylight
-# saving period will continue with the same rules as used during the 2008-2009
+# According to the official press release, South Australia's extended daylight
+# saving period will continue with the same rules as used during the 2008-2009
# summer (southern hemisphere).
-#
+#
# From
#
# http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf
#
-# The extended daylight saving period that South Australia has been trialling
+# The extended daylight saving period that South Australia has been trialling
# for over the last year is now set to be ongoing.
-# Daylight saving will continue to start on the first Sunday in October each
+# Daylight saving will continue to start on the first Sunday in October each
# year and finish on the first Sunday in April the following year.
-# Industrial Relations Minister, Paul Caica, says this provides South Australia
-# with a consistent half hour time difference with NSW, Victoria, Tasmania and
+# Industrial Relations Minister, Paul Caica, says this provides South Australia
+# with a consistent half hour time difference with NSW, Victoria, Tasmania and
# the ACT for all 52 weeks of the year...
-#
+#
# We have a wrap-up here:
#
# http://www.timeanddate.com/news/time/south-australia-extends-dst.html
diff --git a/jdk/make/sun/javazic/tzdata/backward b/jdk/make/sun/javazic/tzdata/backward
index a43cc72..4ccea7c 100755
--- a/jdk/make/sun/javazic/tzdata/backward
+++ b/jdk/make/sun/javazic/tzdata/backward
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)factory 8.2
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
diff --git a/jdk/make/sun/javazic/tzdata/iso3166.tab b/jdk/make/sun/javazic/tzdata/iso3166.tab
index 0c4d4be..fee3f33 100755
--- a/jdk/make/sun/javazic/tzdata/iso3166.tab
+++ b/jdk/make/sun/javazic/tzdata/iso3166.tab
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)iso3166.tab 8.11
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
# ISO 3166 alpha-2 country codes
diff --git a/jdk/make/sun/javazic/tzdata/leapseconds b/jdk/make/sun/javazic/tzdata/leapseconds
index 55d89d3..ab6720d 100755
--- a/jdk/make/sun/javazic/tzdata/leapseconds
+++ b/jdk/make/sun/javazic/tzdata/leapseconds
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)leapseconds 8.13
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -101,8 +100,8 @@ Leap 2012 Jun 30 23:59:60 + S
#
#
# A positive leap second will be introduced at the end of June 2012.
-# The sequence of dates of the UTC second markers will be:
-#
+# The sequence of dates of the UTC second markers will be:
+#
# 2012 June 30, 23h 59m 59s
# 2012 June 30, 23h 59m 60s
# 2012 July 1, 0h 0m 0s
@@ -119,6 +118,6 @@ Leap 2012 Jun 30 23:59:60 + S
#
#
# Daniel GAMBIS
-# Head
+# Head
# Earth Orientation Center of IERS
# Observatoire de Paris, France
diff --git a/jdk/make/sun/javazic/tzdata/northamerica b/jdk/make/sun/javazic/tzdata/northamerica
index 14b98e5..c303326 100755
--- a/jdk/make/sun/javazic/tzdata/northamerica
+++ b/jdk/make/sun/javazic/tzdata/northamerica
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)northamerica 8.54
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -502,7 +501,7 @@ Zone America/Juneau 15:02:19 - LMT 1867 Oct 18
-8:00 US P%sT 1946
-8:00 - PST 1969
-8:00 US P%sT 1980 Apr 27 2:00
- -9:00 US Y%sT 1980 Oct 26 2:00
+ -9:00 US Y%sT 1980 Oct 26 2:00
-8:00 US P%sT 1983 Oct 30 2:00
-9:00 US Y%sT 1983 Nov 30
-9:00 US AK%sT
@@ -1867,7 +1866,7 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
# Here is a summary of the three clock change events in Creston's history:
# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
# Exact date unknown
-# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
+# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
# Exact date in October unknown; Sunday October 1 is a reasonable guess.
# 3. June 1918: switch to Pacific Daylight Time (GMT-7)
# Exact date in June unknown; Sunday June 2 is a reasonable guess.
@@ -2697,20 +2696,20 @@ Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose
# except that it switches at midnight standard time as usual.
#
# From Steffen Thorsen (2007-10-25):
-# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week
+# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week
# earlier - on the last Sunday of October, just like in 2006.
-#
+#
# He supplied these references:
-#
+#
# http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES
# http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm
-#
+#
# From Alex Kryvenishev (2007-10-25):
# Here is also article from Granma (Cuba):
-#
+#
# [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre
# http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html
-#
+#
# http://www.worldtimezone.com/dst_news/dst_news_cuba03.html
# From Arthur David Olson (2008-03-09):
@@ -2794,7 +2793,7 @@ Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose
#
#
# From Steffen Thorsen (2011-10-30)
-# Cuba will end DST two weeks later this year. Instead of going back
+# Cuba will end DST two weeks later this year. Instead of going back
# tonight, it has been delayed to 2011-11-13 at 01:00.
#
# One source (Spanish)
@@ -2806,11 +2805,11 @@ Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose
#
# http://www.timeanddate.com/news/time/cuba-time-changes-2011.html
#
-#
+#
# From Steffen Thorsen (2012-03-01)
-# According to Radio Reloj, Cuba will start DST on Midnight between March
+# According to Radio Reloj, Cuba will start DST on Midnight between March
# 31 and April 1.
-#
+#
# Radio Reloj has the following info (Spanish):
#
# http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril
@@ -2821,6 +2820,13 @@ Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose
# http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
#
+# From Steffen Thorsen (2012-11-03):
+# Radio Reloj and many other sources report that Cuba is changing back
+# to standard time on 2012-11-04:
+# http://www.radioreloj.cu/index.php/noticias-radio-reloj/36-nacionales/9961-regira-horario-normal-en-cuba-desde-el-domingo-cuatro-de-noviembre
+# From Paul Eggert (2012-11-03):
+# For now, assume the future rule is first Sunday in November.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Cuba 1928 only - Jun 10 0:00 1:00 D
Rule Cuba 1928 only - Oct 10 0:00 0 S
@@ -2858,7 +2864,7 @@ Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
Rule Cuba 2011 only - Nov 13 0:00s 0 S
Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
-Rule Cuba 2012 max - Oct lastSun 0:00s 0 S
+Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
diff --git a/jdk/make/sun/javazic/tzdata/pacificnew b/jdk/make/sun/javazic/tzdata/pacificnew
index 1a6794f..7738a48 100755
--- a/jdk/make/sun/javazic/tzdata/pacificnew
+++ b/jdk/make/sun/javazic/tzdata/pacificnew
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)pacificnew 8.2
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
diff --git a/jdk/make/sun/javazic/tzdata/solar87 b/jdk/make/sun/javazic/tzdata/solar87
index 62924a7..46b1d56 100755
--- a/jdk/make/sun/javazic/tzdata/solar87
+++ b/jdk/make/sun/javazic/tzdata/solar87
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)solar87 8.2
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
diff --git a/jdk/make/sun/javazic/tzdata/solar88 b/jdk/make/sun/javazic/tzdata/solar88
index 6526ad6..71b60d5 100755
--- a/jdk/make/sun/javazic/tzdata/solar88
+++ b/jdk/make/sun/javazic/tzdata/solar88
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)solar88 8.2
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
diff --git a/jdk/make/sun/javazic/tzdata/solar89 b/jdk/make/sun/javazic/tzdata/solar89
index 8befdb0..ae2bea8 100755
--- a/jdk/make/sun/javazic/tzdata/solar89
+++ b/jdk/make/sun/javazic/tzdata/solar89
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)solar89 8.2
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
diff --git a/jdk/make/sun/javazic/tzdata/southamerica b/jdk/make/sun/javazic/tzdata/southamerica
index b65de7f..0d6797e 100755
--- a/jdk/make/sun/javazic/tzdata/southamerica
+++ b/jdk/make/sun/javazic/tzdata/southamerica
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)southamerica 8.53
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -255,7 +254,7 @@ Rule Arg 2000 only - Mar 3 0:00 0 -
Rule Arg 2007 only - Dec 30 0:00 1:00 S
Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S
-
+
# From Mariano Absatz (2004-05-21):
# Today it was officially published that the Province of Mendoza is changing
# its timezone this winter... starting tomorrow night....
@@ -345,9 +344,9 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S
# confirms what Alex Krivenyshev has earlier sent to the tz
# emailing list about that San Luis plans to return to standard
# time much earlier than the rest of the country. It also
-# confirms that upon request the provinces San Juan and Mendoza
-# refused to follow San Luis in this change.
-#
+# confirms that upon request the provinces San Juan and Mendoza
+# refused to follow San Luis in this change.
+#
# The change is supposed to take place Monday the 21.st at 0:00
# hours. As far as I understand it if this goes ahead, we need
# a new timezone for San Luis (although there are also documented
@@ -409,7 +408,7 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S
#
# http://www.lanacion.com.ar/nota.asp?nota_id=1107912
#
-#
+#
# The press release says:
# (...) anunció que el próximo domingo a las 00:00 los puntanos deberán
# atrasar una hora sus relojes.
@@ -823,8 +822,8 @@ Zone America/La_Paz -4:32:36 - LMT 1890
#
# From Alexander Krivenyshev (2011-10-04):
# State Bahia will return to Daylight savings time this year after 8 years off.
-# The announcement was made by Governor Jaques Wagner in an interview to a
-# television station in Salvador.
+# The announcement was made by Governor Jaques Wagner in an interview to a
+# television station in Salvador.
# In Portuguese:
#
@@ -853,6 +852,15 @@ Zone America/La_Paz -4:32:36 - LMT 1890
# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
#
+# From Kelley Cook (2012-10-16):
+# The governor of state of Bahia in Brazil announced on Thursday that
+# due to public pressure, he is reversing the DST policy they implemented
+# last year and will not be going to Summer Time on October 21st....
+# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia
+
+# From Rodrigo Severo (2012-10-16):
+# Tocantins state will have DST.
+# http://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# Decree 20,466 (1931-10-01)
@@ -1072,7 +1080,8 @@ Zone America/Araguaina -3:12:48 - LMT 1914
-3:00 Brazil BR%sT 1990 Sep 17
-3:00 - BRT 1995 Sep 14
-3:00 Brazil BR%sT 2003 Sep 24
- -3:00 - BRT
+ -3:00 - BRT 2012 Oct 21
+ -3:00 Brazil BR%sT
#
# Alagoas (AL), Sergipe (SE)
Zone America/Maceio -2:22:52 - LMT 1914
@@ -1091,7 +1100,8 @@ Zone America/Maceio -2:22:52 - LMT 1914
Zone America/Bahia -2:34:04 - LMT 1914
-3:00 Brazil BR%sT 2003 Sep 24
-3:00 - BRT 2011 Oct 16
- -3:00 Brazil BR%sT
+ -3:00 Brazil BR%sT 2012 Oct 21
+ -3:00 - BRT
#
# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
@@ -1183,7 +1193,7 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
# Due to drought, Chile extends Daylight Time in three weeks. This
# is one-time change (Saturday 3/29 at 24:00 for America/Santiago
# and Saturday 3/29 at 22:00 for Pacific/Easter)
-# The Supreme Decree is located at
+# The Supreme Decree is located at
#
# http://www.shoa.cl/servicios/supremo316.pdf
#
@@ -1194,7 +1204,7 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
# From Jose Miguel Garrido (2008-03-05):
# ...
-# You could see the announces of the change on
+# You could see the announces of the change on
#
# http://www.shoa.cl/noticias/2008/04hora/hora.htm
# .
diff --git a/jdk/make/sun/javazic/tzdata/systemv b/jdk/make/sun/javazic/tzdata/systemv
index 16b01ba..0b0a266 100755
--- a/jdk/make/sun/javazic/tzdata/systemv
+++ b/jdk/make/sun/javazic/tzdata/systemv
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)systemv 8.2
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
diff --git a/jdk/make/sun/javazic/tzdata/zone.tab b/jdk/make/sun/javazic/tzdata/zone.tab
index 4def41b..ef380cd 100755
--- a/jdk/make/sun/javazic/tzdata/zone.tab
+++ b/jdk/make/sun/javazic/tzdata/zone.tab
@@ -22,7 +22,6 @@
# questions.
#
#
-# @(#)zone.tab 8.55
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
#
diff --git a/jdk/make/sun/jawt/Makefile b/jdk/make/sun/jawt/Makefile
index 3497200..5937877 100755
--- a/jdk/make/sun/jawt/Makefile
+++ b/jdk/make/sun/jawt/Makefile
@@ -94,8 +94,7 @@ else # PLATFORM
#
# Other extra flags needed for compiling.
#
-CPPFLAGS += -I$(OPENWIN_HOME)/include \
- -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
+CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
-I$(SHARE_SRC)/native/$(PKGDIR)/image \
-I$(SHARE_SRC)/native/$(PKGDIR)/image/cvutils \
-I$(SHARE_SRC)/native/$(PKGDIR)/alphacomposite \
@@ -109,6 +108,7 @@ CPPFLAGS += -I$(OPENWIN_HOME)/include \
-I$(SHARE_SRC)/native/$(PKGDIR)/../dc/doe \
-I$(SHARE_SRC)/native/$(PKGDIR)/../dc/path \
-I$(PLATFORM_SRC)/native/$(PKGDIR)/../jdga \
+ -I$(OPENWIN_HOME)/include \
$(EVENT_MODEL)
#
@@ -122,7 +122,7 @@ ifeq ($(PLATFORM), solaris)
endif
endif # PLATFORM
-ifeq ($(PLATFORM), linux)
+ifneq (,$(findstring $(PLATFORM), linux bsd))
ifndef BUILD_HEADLESS_ONLY
OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -lawt -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt
else
diff --git a/jdk/make/sun/rmi/rmi/Makefile b/jdk/make/sun/rmi/rmi/Makefile
index 1277772..f113cb6 100755
--- a/jdk/make/sun/rmi/rmi/Makefile
+++ b/jdk/make/sun/rmi/rmi/Makefile
@@ -97,6 +97,9 @@ ifeq ($(PLATFORM), solaris)
BUILD_TARGETS += bin
endif
endif
+ifeq ($(PLATFORM), bsd)
+ BUILD_TARGETS += bin
+endif
build: $(BUILD_TARGETS)
diff --git a/jdk/make/sun/security/ec/Makefile b/jdk/make/sun/security/ec/Makefile
index 4dc6be3..bf1c08b 100755
--- a/jdk/make/sun/security/ec/Makefile
+++ b/jdk/make/sun/security/ec/Makefile
@@ -245,9 +245,9 @@ build-jar: $(UNSIGNED_DIR)/sunec.jar
#
# Build sunec.jar.
#
-$(UNSIGNED_DIR)/sunec.jar: build
+$(UNSIGNED_DIR)/sunec.jar: build $(JCE_MANIFEST_FILE)
$(prep-target)
- $(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
+ $(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
diff --git a/jdk/make/sun/security/mscapi/Makefile b/jdk/make/sun/security/mscapi/Makefile
index 7f8974a..41800fb 100755
--- a/jdk/make/sun/security/mscapi/Makefile
+++ b/jdk/make/sun/security/mscapi/Makefile
@@ -210,9 +210,9 @@ build-jar: $(UNSIGNED_DIR)/sunmscapi.jar
#
# Build sunmscapi.jar.
#
-$(UNSIGNED_DIR)/sunmscapi.jar: build
+$(UNSIGNED_DIR)/sunmscapi.jar: build $(JCE_MANIFEST_FILE)
$(prep-target)
- $(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
+ $(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
diff --git a/jdk/make/sun/security/pkcs11/Makefile b/jdk/make/sun/security/pkcs11/Makefile
index 7f65261..f928a37 100755
--- a/jdk/make/sun/security/pkcs11/Makefile
+++ b/jdk/make/sun/security/pkcs11/Makefile
@@ -224,9 +224,9 @@ build-jar: $(UNSIGNED_DIR)/sunpkcs11.jar
#
# Build sunpkcs11.jar.
#
-$(UNSIGNED_DIR)/sunpkcs11.jar: build
+$(UNSIGNED_DIR)/sunpkcs11.jar: build $(JCE_MANIFEST_FILE)
$(prep-target)
- $(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
+ $(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
diff --git a/jdk/make/sun/splashscreen/Makefile b/jdk/make/sun/splashscreen/Makefile
index 5b0e18a..9e4adcc 100755
--- a/jdk/make/sun/splashscreen/Makefile
+++ b/jdk/make/sun/splashscreen/Makefile
@@ -83,15 +83,16 @@ ifeq ($(PLATFORM), macosx)
-framework JavaNativeFoundation
else ifneq ($(PLATFORM), windows)
CFLAGS += -DWITH_X11
- ifeq ($(PLATFORM), macosx))
- OTHER_LDLIBS += -liconv
- CPPFLAGS += -I$(OPENWIN_HOME)/include \
- -I$(OPENWIN_HOME)/include/X11/extensions
- OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -pthread
- else
- CPPFLAGS += -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
- OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -lpthread
+ ifeq ($(PLATFORM), bsd))
+ ifeq ($(OS_NAME), netbsd)
+ OTHER_LDLIBS += -Wl,-R$(OPENWIN_LIB)
+ else
+ CPPFLAGS += -I$(PACKAGE_PATH)/include
+ OTHER_LDLIBS += -L$(PACKAGE_PATH)/lib -liconv
+ endif
endif
+ CPPFLAGS += -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
+ OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -lpthread
else # PLATFORM
CFLAGS += -DWITH_WIN32
OTHER_LDLIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib /DELAYLOAD:user32.dll
diff --git a/jdk/make/sun/xawt/Makefile b/jdk/make/sun/xawt/Makefile
index 15fc221..bd7ad45 100755
--- a/jdk/make/sun/xawt/Makefile
+++ b/jdk/make/sun/xawt/Makefile
@@ -52,6 +52,9 @@ AUTO_FILES_JAVA_DIRS = sun/awt/X11
AUTO_JAVA_PRUNE = WrapperGenerator.java
LDFLAGS += -L$(OPENWIN_LIB)
+ifeq ($(OS_NAME), netbsd)
+LDFLAGS += -Wl,-R$(OPENWIN_LIB)
+endif
# For Xrender extension.
ifeq ($(PLATFORM), solaris)
@@ -63,6 +66,11 @@ LDFLAGS += -lpthread
dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
endif
+ifeq ($(PLATFORM), bsd)
+LDFLAGS += -pthread
+dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
+endif
+
ifeq ($(PLATFORM), macosx))
LDFLAGS += -pthread
dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
@@ -110,8 +118,6 @@ CPPFLAGS += -DFUNCPROTO=15
dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
endif
-CPPFLAGS += -I$(CUPS_HEADERS_PATH)
-
CPPFLAGS += -DXAWT -DXAWT_HACK \
-I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders \
-I$(PLATFORM_SRC)/native/sun/awt \
@@ -138,6 +144,8 @@ CPPFLAGS += -DXAWT -DXAWT_HACK \
-I$(SHARE_SRC)/native/sun/awt \
-I$(PLATFORM_SRC)/native/sun/awt
+CPPFLAGS += -I$(CUPS_HEADERS_PATH)
+
ifeq ($(PLATFORM), linux)
ifndef CROSS_COMPILE_ARCH
# Allows for builds on Debian GNU Linux, X11 is in a different place
@@ -173,6 +181,11 @@ ifeq ($(PLATFORM), solaris)
endif
endif
+ifeq ($(PLATFORM), bsd)
+ CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions -I$(OPENWIN_HOME)/include
+ CPPFLAGS += -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
+endif
+
ifeq ($(PLATFORM), macosx)
CPPFLAGS += -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
endif
diff --git a/jdk/make/tools/freetypecheck/Makefile b/jdk/make/tools/freetypecheck/Makefile
index a789fa1..f54d12b 100755
--- a/jdk/make/tools/freetypecheck/Makefile
+++ b/jdk/make/tools/freetypecheck/Makefile
@@ -52,8 +52,15 @@ else
else
ifeq ($(PLATFORM), macosx)
FT_LD_OPTIONS += -lfreetype -lz
- else # linux
- FT_LD_OPTIONS += -Wl,-rpath -Wl,$(FREETYPE_LIB_PATH) -lfreetype
+ else
+ ifeq ($(PLATFORM), bsd)
+ ifeq ($(OS_NAME), netbsd)
+ FT_LD_OPTIONS += -Wl,-R$(FREETYPE_LIB_PATH)
+ endif
+ FT_LD_OPTIONS += -lfreetype -lz
+ else # linux
+ FT_LD_OPTIONS += -Wl,-rpath -Wl,$(FREETYPE_LIB_PATH) -lfreetype
+ endif
endif
endif
endif
diff --git a/jdk/make/tools/sharing/classlist.bsd b/jdk/make/tools/sharing/classlist.bsd
new file mode 100644
index 0000000..3d73d7f
--- /dev/null
+++ b/jdk/make/tools/sharing/classlist.bsd
@@ -0,0 +1,2327 @@
+java/lang/Object
+java/lang/String
+java/io/Serializable
+java/lang/Comparable
+java/lang/CharSequence
+java/lang/Class
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/Type
+java/lang/reflect/AnnotatedElement
+java/lang/Cloneable
+java/lang/ClassLoader
+java/lang/System
+java/lang/Throwable
+java/lang/Error
+java/lang/ThreadDeath
+java/lang/Exception
+java/lang/RuntimeException
+java/security/ProtectionDomain
+java/security/AccessControlContext
+java/lang/ClassNotFoundException
+java/lang/NoClassDefFoundError
+java/lang/LinkageError
+java/lang/ClassCastException
+java/lang/ArrayStoreException
+java/lang/VirtualMachineError
+java/lang/OutOfMemoryError
+java/lang/StackOverflowError
+java/lang/IllegalMonitorStateException
+java/lang/ref/Reference
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/ref/FinalReference
+java/lang/ref/PhantomReference
+java/lang/ref/Finalizer
+java/lang/Thread
+java/lang/Runnable
+java/lang/ThreadGroup
+java/lang/Thread$UncaughtExceptionHandler
+java/util/Properties
+java/util/Hashtable
+java/util/Map
+java/util/Dictionary
+java/lang/reflect/AccessibleObject
+java/lang/reflect/Field
+java/lang/reflect/Member
+java/lang/reflect/Method
+java/lang/reflect/Constructor
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/ConstructorAccessor
+sun/reflect/DelegatingClassLoader
+sun/reflect/ConstantPool
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/FieldAccessorImpl
+sun/reflect/FieldAccessor
+java/util/Vector
+java/util/List
+java/util/Collection
+java/lang/Iterable
+java/util/RandomAccess
+java/util/AbstractList
+java/util/AbstractCollection
+java/lang/StringBuffer
+java/lang/AbstractStringBuilder
+java/lang/Appendable
+java/lang/StackTraceElement
+java/nio/Buffer
+java/lang/Boolean
+java/lang/Character
+java/lang/Float
+java/lang/Number
+java/lang/Double
+java/lang/Byte
+java/lang/Short
+java/lang/Integer
+java/lang/Long
+java/lang/NullPointerException
+java/lang/ArithmeticException
+java/io/ObjectStreamField
+java/lang/String$CaseInsensitiveComparator
+java/util/Comparator
+java/lang/RuntimePermission
+java/security/BasicPermission
+java/security/Permission
+java/security/Guard
+sun/misc/SoftCache
+java/util/AbstractMap
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/ReferenceQueue$Lock
+java/util/HashMap
+java/lang/annotation/Annotation
+java/util/HashMap$Entry
+java/util/Map$Entry
+java/security/AccessController
+java/lang/reflect/ReflectPermission
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+java/security/PrivilegedAction
+java/util/Stack
+sun/reflect/ReflectionFactory
+java/lang/ref/Reference$Lock
+java/lang/ref/Reference$ReferenceHandler
+java/lang/ref/Finalizer$FinalizerThread
+java/util/Enumeration
+java/util/Iterator
+java/util/Hashtable$Entry
+java/nio/charset/Charset
+sun/nio/cs/StandardCharsets
+sun/nio/cs/FastCharsetProvider
+java/nio/charset/spi/CharsetProvider
+sun/nio/cs/StandardCharsets$Aliases
+sun/util/PreHashedMap
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StandardCharsets$Cache
+java/lang/ThreadLocal
+java/util/concurrent/atomic/AtomicInteger
+sun/misc/Unsafe
+java/lang/NoSuchMethodError
+java/lang/IncompatibleClassChangeError
+sun/reflect/Reflection
+java/util/Collections
+java/util/Collections$EmptySet
+java/util/AbstractSet
+java/util/Set
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$ReverseComparator
+java/util/Collections$SynchronizedMap
+java/lang/Class$3
+java/lang/reflect/Modifier
+java/lang/reflect/ReflectAccess
+sun/reflect/LangReflectAccess
+java/util/Arrays
+java/lang/Math
+sun/nio/cs/US_ASCII
+sun/nio/cs/HistoricallyNamedCharset
+sun/misc/VM
+java/lang/StringCoding
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/StringCoding$StringDecoder
+sun/nio/cs/US_ASCII$Decoder
+java/nio/charset/CharsetDecoder
+java/nio/charset/CodingErrorAction
+java/nio/ByteBuffer
+java/nio/HeapByteBuffer
+java/nio/Bits
+java/nio/ByteOrder
+java/nio/CharBuffer
+java/lang/Readable
+java/nio/HeapCharBuffer
+java/nio/charset/CoderResult
+java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$Cache
+java/nio/charset/CoderResult$2
+sun/misc/Version
+java/io/FileInputStream
+java/io/InputStream
+java/io/Closeable
+java/io/FileDescriptor
+java/io/FileOutputStream
+java/io/OutputStream
+java/io/Flushable
+java/io/BufferedInputStream
+java/io/FilterInputStream
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+sun/reflect/misc/ReflectUtil
+java/io/PrintStream
+java/io/FilterOutputStream
+java/io/BufferedOutputStream
+java/io/OutputStreamWriter
+java/io/Writer
+sun/nio/cs/StreamEncoder
+sun/security/action/GetPropertyAction
+sun/nio/cs/US_ASCII$Encoder
+java/nio/charset/CharsetEncoder
+sun/nio/cs/Surrogate$Parser
+sun/nio/cs/Surrogate
+java/io/BufferedWriter
+java/lang/Runtime
+java/io/File
+java/io/FileSystem
+java/io/UnixFileSystem
+java/io/ExpiringCache
+java/io/ExpiringCache$1
+java/util/LinkedHashMap
+java/util/LinkedHashMap$Entry
+java/lang/StringBuilder
+sun/misc/SharedSecrets
+java/lang/ClassLoader$3
+java/lang/StringCoding$StringEncoder
+java/io/ExpiringCache$Entry
+java/lang/ClassLoader$NativeLibrary
+java/lang/Terminator
+java/lang/Terminator$1
+sun/misc/SignalHandler
+sun/misc/Signal
+sun/misc/NativeSignalHandler
+java/io/Console
+java/io/Console$1
+sun/misc/JavaIOAccess
+java/lang/Shutdown
+java/util/ArrayList
+java/lang/Shutdown$Lock
+java/lang/ApplicationShutdownHooks
+java/util/IdentityHashMap
+sun/misc/OSEnvironment
+java/lang/System$2
+sun/misc/JavaLangAccess
+java/lang/Compiler
+java/lang/Compiler$1
+sun/misc/Launcher
+sun/misc/Launcher$Factory
+java/net/URLStreamHandlerFactory
+sun/misc/Launcher$ExtClassLoader
+java/net/URLClassLoader
+java/security/SecureClassLoader
+sun/security/util/Debug
+java/net/URLClassLoader$7
+sun/misc/JavaNetAccess
+java/util/StringTokenizer
+sun/misc/Launcher$ExtClassLoader$1
+java/security/PrivilegedExceptionAction
+sun/misc/MetaIndex
+java/io/BufferedReader
+java/io/Reader
+java/io/FileReader
+java/io/InputStreamReader
+sun/nio/cs/StreamDecoder
+java/lang/reflect/Array
+sun/net/www/ParseUtil
+java/util/BitSet
+java/io/ObjectStreamClass
+java/net/URL
+java/util/Locale
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/Lock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/concurrent/locks/AbstractQueuedSynchronizer
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
+java/util/concurrent/ConcurrentHashMap$HashEntry
+java/lang/CharacterDataLatin1
+java/net/Parts
+sun/net/www/protocol/file/Handler
+java/net/URLStreamHandler
+java/lang/Class$1
+sun/reflect/ReflectionFactory$1
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/DelegatingConstructorAccessorImpl
+java/util/HashSet
+sun/misc/URLClassPath
+sun/net/www/protocol/jar/Handler
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+java/lang/SystemClassLoaderAction
+java/net/URLClassLoader$1
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$Loader
+java/security/PrivilegedActionException
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$FileLoader$1
+sun/misc/Resource
+sun/nio/ByteBuffered
+java/security/CodeSource
+java/security/Permissions
+java/security/PermissionCollection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/URLConnection
+java/net/URLConnection
+java/net/UnknownContentHandler
+java/net/ContentHandler
+sun/net/www/MessageHeader
+java/io/FilePermission
+java/io/FilePermission$1
+sun/security/provider/PolicyFile
+java/security/Policy
+java/security/Policy$UnsupportedEmptyCollection
+java/io/FilePermissionCollection
+java/security/AllPermission
+java/security/UnresolvedPermission
+java/security/BasicPermissionCollection
+java/security/Principal
+java/security/cert/Certificate
+java/util/AbstractList$Itr
+java/util/IdentityHashMap$KeySet
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/io/DeleteOnExitHook
+java/util/LinkedHashSet
+java/util/HashMap$KeySet
+java/util/LinkedHashMap$KeyIterator
+java/util/LinkedHashMap$LinkedHashIterator
+java/awt/Frame
+java/awt/MenuContainer
+java/awt/Window
+javax/accessibility/Accessible
+java/awt/Container
+java/awt/Component
+java/awt/image/ImageObserver
+java/lang/InterruptedException
+java/awt/Label
+java/util/logging/Logger
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/beans/PropertyChangeSupport
+java/util/logging/LogManager$LogNode
+java/util/logging/LoggingPermission
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$2
+java/util/Properties$LineReader
+java/util/Hashtable$Enumerator
+java/beans/PropertyChangeEvent
+java/util/EventObject
+java/awt/Component$AWTTreeLock
+sun/awt/NativeLibLoader
+sun/security/action/LoadLibraryAction
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/lang/ProcessEnvironment
+java/lang/ProcessEnvironment$Variable
+java/lang/ProcessEnvironment$ExternalData
+java/lang/ProcessEnvironment$Value
+java/lang/ProcessEnvironment$StringEnvironment
+java/util/Collections$UnmodifiableMap
+java/awt/Toolkit
+java/awt/Toolkit$3
+sun/util/CoreResourceBundleControl
+java/util/ResourceBundle$Control
+java/util/Arrays$ArrayList
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableCollection
+java/util/ResourceBundle
+java/util/ResourceBundle$1
+java/util/ResourceBundle$RBClassLoader
+java/util/ResourceBundle$RBClassLoader$1
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$LoaderReference
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$SingleFormatControl
+sun/awt/resources/awt
+java/util/ListResourceBundle
+java/awt/Toolkit$1
+java/io/FileNotFoundException
+java/io/IOException
+java/awt/event/KeyEvent
+java/awt/event/InputEvent
+java/awt/event/ComponentEvent
+java/awt/AWTEvent
+java/awt/event/NativeLibLoader
+java/util/WeakHashMap
+java/util/WeakHashMap$Entry
+java/awt/Component$DummyRequestFocusController
+sun/awt/RequestFocusController
+java/awt/LayoutManager
+java/awt/LightweightDispatcher
+java/awt/event/AWTEventListener
+java/util/EventListener
+java/awt/Dimension
+java/awt/geom/Dimension2D
+java/util/concurrent/atomic/AtomicBoolean
+java/awt/ComponentOrientation
+java/awt/Component$2
+java/lang/NoSuchMethodException
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/MostRecentKeyValue
+java/awt/Cursor
+sun/awt/X11GraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/FontSupport
+sun/awt/DisplayChangedListener
+java/io/FilenameFilter
+sun/awt/X11GraphicsEnvironment$1
+sun/awt/SunToolkit
+sun/awt/WindowClosingSupport
+sun/awt/WindowClosingListener
+sun/awt/ComponentFactory
+sun/awt/InputMethodSupport
+java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/Condition
+sun/awt/AWTAutoShutdown
+sun/awt/SunToolkit$6
+java/awt/Dialog$ModalExclusionType
+java/lang/Enum
+java/awt/Dialog
+java/awt/Dialog$ModalityType
+java/awt/ModalEventFilter
+java/awt/EventFilter
+sun/reflect/UnsafeFieldAccessorFactory
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/awt/SunDisplayChanger
+sun/java2d/SunGraphicsEnvironment$1
+java/io/StreamTokenizer
+sun/font/FontManager
+sun/font/FileFont
+sun/font/PhysicalFont
+sun/font/Font2D
+sun/font/CompositeFont
+java/util/HashMap$Values
+java/util/HashMap$ValueIterator
+java/util/HashMap$HashIterator
+java/awt/Font
+java/awt/geom/AffineTransform
+sun/font/AttributeValues
+sun/font/EAttribute
+java/text/AttributedCharacterIterator$Attribute
+java/lang/Class$4
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+java/awt/font/TextAttribute
+java/lang/Integer$IntegerCache
+sun/font/TrueTypeFont
+java/awt/font/FontRenderContext
+java/awt/RenderingHints
+sun/awt/SunHints
+sun/awt/SunHints$Key
+java/awt/RenderingHints$Key
+sun/awt/SunHints$Value
+sun/awt/SunHints$LCDContrastKey
+sun/font/Type1Font
+java/awt/geom/Point2D$Float
+java/awt/geom/Point2D
+sun/font/StrikeMetrics
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/Rectangle2D
+java/awt/geom/RectangularShape
+java/awt/Shape
+java/awt/geom/GeneralPath
+java/awt/geom/Path2D$Float
+java/awt/geom/Path2D
+sun/font/CharToGlyphMapper
+sun/font/PhysicalStrike
+sun/font/FontStrike
+sun/font/GlyphList
+sun/font/StrikeCache
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/font/StrikeCache$1
+sun/awt/motif/MFontConfiguration
+sun/awt/FontConfiguration
+sun/awt/FontDescriptor
+java/util/Scanner
+java/util/regex/Pattern
+java/util/regex/Pattern$Node
+java/util/regex/Pattern$LastNode
+java/util/regex/Pattern$GroupHead
+java/util/regex/Pattern$CharPropertyNames
+java/util/regex/Pattern$CharPropertyNames$1
+java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory
+java/util/regex/Pattern$CharPropertyNames$2
+java/util/regex/Pattern$CharPropertyNames$5
+java/util/regex/Pattern$CharPropertyNames$3
+java/util/regex/Pattern$CharPropertyNames$6
+java/util/regex/Pattern$CharPropertyNames$CloneableProperty
+java/util/regex/Pattern$CharProperty
+java/util/regex/Pattern$CharPropertyNames$4
+java/util/regex/Pattern$CharPropertyNames$7
+java/util/regex/Pattern$CharPropertyNames$8
+java/util/regex/Pattern$CharPropertyNames$9
+java/util/regex/Pattern$CharPropertyNames$10
+java/util/regex/Pattern$CharPropertyNames$11
+java/util/regex/Pattern$CharPropertyNames$12
+java/util/regex/Pattern$CharPropertyNames$13
+java/util/regex/Pattern$CharPropertyNames$14
+java/util/regex/Pattern$CharPropertyNames$15
+java/util/regex/Pattern$CharPropertyNames$16
+java/util/regex/Pattern$CharPropertyNames$17
+java/util/regex/Pattern$CharPropertyNames$18
+java/util/regex/Pattern$CharPropertyNames$19
+java/util/regex/Pattern$CharPropertyNames$20
+java/util/regex/Pattern$CharPropertyNames$21
+java/util/regex/Pattern$Curly
+java/util/regex/Pattern$Slice
+java/util/regex/Pattern$Begin
+java/util/regex/Pattern$First
+java/util/regex/Pattern$Start
+java/util/regex/Pattern$TreeInfo
+java/util/regex/Pattern$All
+java/util/regex/Pattern$BitClass
+java/util/regex/Pattern$BmpCharProperty
+java/util/regex/Pattern$6
+java/util/regex/Pattern$CharProperty$1
+sun/nio/ch/FileChannelImpl
+java/nio/channels/FileChannel
+java/nio/channels/ByteChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/Channel
+java/nio/channels/WritableByteChannel
+java/nio/channels/GatheringByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/InterruptibleChannel
+sun/nio/ch/Util
+sun/nio/ch/IOUtil
+sun/nio/ch/FileDispatcher
+sun/nio/ch/NativeDispatcher
+sun/nio/ch/Reflect
+java/nio/MappedByteBuffer
+sun/nio/ch/Reflect$1
+sun/nio/ch/NativeThreadSet
+java/nio/channels/Channels
+java/util/Scanner$1
+sun/misc/LRUCache
+java/util/regex/Matcher
+java/util/regex/MatchResult
+java/text/NumberFormat
+java/text/Format
+java/text/spi/NumberFormatProvider
+java/util/spi/LocaleServiceProvider
+sun/util/LocaleServiceProviderPool
+sun/util/LocaleServiceProviderPool$1
+java/util/ServiceLoader
+java/util/ServiceLoader$LazyIterator
+java/util/ServiceLoader$1
+java/util/HashMap$EntrySet
+java/util/LinkedHashMap$EntryIterator
+sun/misc/Launcher$1
+sun/misc/URLClassPath$2
+java/lang/ClassLoader$2
+sun/misc/URLClassPath$1
+java/net/URLClassLoader$3
+sun/misc/CompoundEnumeration
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/FileURLMapper
+java/net/URLClassLoader$3$1
+sun/util/resources/LocaleData
+sun/util/resources/LocaleData$1
+sun/util/resources/LocaleData$LocaleDataResourceBundleControl
+sun/util/LocaleDataMetaInfo
+sun/text/resources/FormatData
+java/util/ResourceBundle$BundleReference
+sun/text/resources/FormatData_en
+sun/text/resources/FormatData_en_US
+java/text/DecimalFormatSymbols
+java/text/spi/DecimalFormatSymbolsProvider
+java/util/Currency
+java/util/Currency$1
+java/util/spi/CurrencyNameProvider
+sun/util/resources/CurrencyNames
+sun/util/resources/LocaleNamesBundle
+sun/util/resources/OpenListResourceBundle
+sun/util/resources/CurrencyNames_en_US
+java/text/DecimalFormat
+java/text/FieldPosition
+java/text/DigitList
+java/math/RoundingMode
+java/util/regex/Pattern$GroupTail
+java/util/regex/Pattern$Ctype
+java/util/regex/Pattern$Ques
+java/util/regex/Pattern$GroupCurly
+java/util/regex/Pattern$5
+java/util/regex/Pattern$Loop
+java/util/regex/Pattern$Prolog
+java/util/regex/Pattern$BranchConn
+java/util/regex/Pattern$Branch
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+sun/nio/ch/Interruptible
+sun/nio/ch/NativeThread
+sun/nio/ch/DirectBuffer
+java/nio/DirectByteBuffer
+java/nio/DirectByteBuffer$Deallocator
+sun/misc/Cleaner
+sun/nio/ch/IOStatus
+java/util/regex/ASCII
+java/io/DataInputStream
+java/io/DataInput
+java/lang/Short$ShortCache
+java/util/HashMap$KeyIterator
+sun/font/CompositeFontDescriptor
+sun/font/Font2DHandle
+sun/font/FontFamily
+java/awt/GraphicsDevice
+sun/awt/X11GraphicsDevice
+sun/awt/X11GraphicsConfig
+java/awt/GraphicsConfiguration
+java/awt/ImageCapabilities
+sun/java2d/x11/X11SurfaceData
+sun/java2d/SurfaceData
+java/awt/Transparency
+sun/java2d/DisposerTarget
+sun/java2d/InvalidPipeException
+java/lang/IllegalStateException
+sun/java2d/NullSurfaceData
+sun/java2d/loops/SurfaceType
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ArgbBm
+java/awt/image/ColorModel
+java/awt/image/DirectColorModel
+java/awt/image/PackedColorModel
+java/awt/color/ColorSpace
+java/awt/color/ICC_Profile
+java/awt/color/ICC_ProfileRGB
+java/awt/color/ICC_Profile$1
+java/awt/color/ICC_ColorSpace
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/DrawImagePipe
+java/awt/image/IndexColorModel
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/Region
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/java2d/loops/XORComposite
+java/awt/Composite
+sun/font/X11TextRenderer
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/x11/X11PMBlitLoops
+sun/java2d/loops/Blit
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/CompositeType
+sun/java2d/SunGraphics2D
+sun/awt/ConstrainableGraphics
+java/awt/Graphics2D
+java/awt/Graphics
+java/awt/Color
+java/awt/Paint
+java/awt/AlphaComposite
+sun/java2d/loops/BlitBg
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawRect
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawPath
+sun/java2d/loops/FillPath
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/TransformHelper
+java/awt/BasicStroke
+java/awt/Stroke
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/java2d/pipe/ValidatePipe
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop
+sun/java2d/x11/X11PMBlitBgLoops
+sun/java2d/x11/X11SurfaceData$LazyPipe
+sun/awt/X11GraphicsConfig$X11GCDisposerRecord
+sun/java2d/DisposerRecord
+java/awt/BorderLayout
+java/awt/LayoutManager2
+java/awt/Rectangle
+java/awt/Toolkit$2
+sun/awt/X11/XToolkit
+sun/awt/X11/XConstants
+sun/awt/UNIXToolkit
+java/util/TreeMap
+java/util/NavigableMap
+java/util/SortedMap
+sun/awt/X11/XlibWrapper
+sun/awt/X11/XUtilConstants
+sun/awt/X11/XProtocolConstants
+sun/awt/X11/XCursorFontConstants
+sun/awt/X11/XlibWrapper$1
+sun/awt/X11/XToolkit$4
+sun/awt/X11/XModifierKeymap
+sun/awt/X11/XWrapperBase
+sun/awt/X11/Native
+sun/awt/X11/Native$1
+java/awt/EventQueue
+java/util/EmptyStackException
+java/lang/reflect/InvocationTargetException
+java/awt/EventDispatchThread
+java/awt/event/PaintEvent
+java/awt/event/MouseEvent
+sun/awt/PeerEvent
+java/awt/event/InvocationEvent
+java/awt/ActiveEvent
+sun/awt/X11/XToolkit$1
+sun/awt/X11/XEventDispatcher
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/ModalityListener
+sun/awt/SunToolkit$1
+java/util/MissingResourceException
+java/awt/Queue
+sun/awt/PostEventQueue
+java/util/LinkedList
+java/util/Deque
+java/util/Queue
+java/util/AbstractSequentialList
+sun/awt/X11/AwtScreenData
+sun/awt/X11/XWM
+sun/awt/X11/MWMConstants
+sun/awt/X11/XAtom
+java/awt/Insets
+sun/awt/X11/XWM$1
+sun/awt/X11/XSetWindowAttributes
+sun/awt/X11/XErrorEvent
+sun/awt/X11/XNETProtocol
+sun/awt/X11/XStateProtocol
+sun/awt/X11/XLayerProtocol
+sun/awt/X11/XProtocol
+sun/awt/X11/WindowPropertyGetter
+sun/awt/X11/UnsafeXDisposerRecord
+sun/awt/X11/XPropertyCache
+sun/awt/X11/XWINProtocol
+sun/awt/X11/XAtomList
+sun/awt/X11/XToolkit$3
+sun/awt/X11/XAnyEvent
+java/awt/Window$WindowDisposerRecord
+java/awt/KeyboardFocusManager
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultFocusTraversalPolicy
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/FocusTraversalPolicy
+java/util/Collections$UnmodifiableSet
+sun/awt/HeadlessToolkit
+sun/awt/X11/XKeyboardFocusManagerPeer
+java/awt/peer/KeyboardFocusManagerPeer
+sun/awt/X11/XKeyboardFocusManagerPeer$1
+sun/awt/X11/XFramePeer
+java/awt/peer/FramePeer
+java/awt/peer/WindowPeer
+java/awt/peer/ContainerPeer
+java/awt/peer/ComponentPeer
+sun/awt/X11/XDecoratedPeer
+sun/awt/X11/XWindowPeer
+sun/awt/X11/XPanelPeer
+java/awt/peer/PanelPeer
+sun/awt/X11/XCanvasPeer
+java/awt/peer/CanvasPeer
+sun/awt/X11/XComponentPeer
+java/awt/dnd/peer/DropTargetPeer
+sun/awt/X11/XWindow
+sun/awt/X11ComponentPeer
+sun/awt/X11/XBaseWindow
+sun/awt/X11/XCreateWindowParams
+java/lang/Long$LongCache
+sun/awt/X11/XBaseWindow$InitialiseState
+sun/awt/X11/XBaseWindow$StateLock
+sun/awt/X11/AwtGraphicsConfigData
+sun/awt/X11/XVisualInfo
+java/awt/SystemColor
+sun/awt/X11/MotifColorUtilities
+java/lang/StrictMath
+sun/awt/X11/XRepaintArea
+sun/awt/RepaintArea
+sun/awt/X11/XWindowAttributesData
+java/util/concurrent/locks/LockSupport
+sun/awt/X11/WindowDimensions
+java/awt/Point
+java/util/TreeMap$Entry
+sun/nio/cs/UTF_8
+sun/nio/cs/Unicode
+sun/nio/cs/UTF_8$Encoder
+sun/nio/cs/UTF_8$Decoder
+sun/nio/cs/Surrogate$Generator
+sun/awt/X11/XPropertyEvent
+sun/awt/X11/XDropTargetEventProcessor
+sun/awt/X11/XDragSourceContextPeer
+sun/awt/X11/XDragSourceProtocolListener
+sun/awt/dnd/SunDragSourceContextPeer
+java/awt/dnd/peer/DragSourceContextPeer
+sun/awt/X11/XAwtState
+sun/awt/X11/XBaseWindow$1
+sun/awt/X11/XRootWindow
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/ISO_8859_1$Encoder
+sun/nio/cs/ISO_8859_1$Decoder
+sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
+sun/java2d/loops/RenderLoops
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/java2d/DefaultDisposerRecord
+sun/java2d/x11/X11Renderer
+sun/awt/X11/XGlobalCursorManager
+sun/awt/GlobalCursorManager
+java/awt/Cursor$CursorDisposer
+java/awt/AWTException
+java/awt/HeadlessException
+java/lang/UnsupportedOperationException
+sun/reflect/UnsafeLongFieldAccessorImpl
+sun/reflect/UnsafeIntegerFieldAccessorImpl
+sun/awt/X11/XClientMessageEvent
+sun/awt/X11/XIconInfo
+sun/awt/X11/XAWTIcon32_java_icon16_png
+sun/awt/X11/XAWTIcon32_java_icon24_png
+sun/awt/X11/XAWTIcon32_java_icon32_png
+sun/awt/X11/XAWTIcon32_java_icon48_png
+sun/awt/X11/XSizeHints
+sun/awt/X11/XContentWindow
+sun/awt/X11/XFocusProxyWindow
+sun/awt/X11/XWMHints
+java/util/LinkedList$ListItr
+java/util/ListIterator
+sun/awt/SunToolkit$2
+java/awt/image/BufferStrategy
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetListener
+java/awt/event/ComponentListener
+java/awt/event/FocusListener
+java/awt/event/HierarchyListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/KeyListener
+java/awt/event/MouseListener
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelListener
+java/awt/event/InputMethodListener
+java/awt/event/ContainerListener
+javax/accessibility/AccessibleContext
+sun/reflect/UnsafeObjectFieldAccessorImpl
+java/awt/peer/LightweightPeer
+sun/awt/X11/XLabelPeer
+java/awt/peer/LabelPeer
+sun/awt/X11/XMapEvent
+sun/awt/X11/XQueryTree
+sun/awt/X11/XConfigureEvent
+sun/awt/X11/PropMwmHints
+sun/awt/GlobalCursorManager$NativeUpdater
+javax/swing/JFrame
+javax/swing/WindowConstants
+javax/swing/RootPaneContainer
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/JLabel
+javax/swing/SwingConstants
+javax/swing/JComponent
+javax/swing/JComponent$1
+javax/swing/SwingUtilities
+javax/swing/JRootPane
+sun/security/action/GetBooleanAction
+javax/swing/event/EventListenerList
+javax/swing/JPanel
+java/awt/FlowLayout
+javax/swing/UIManager
+javax/swing/UIManager$LookAndFeelInfo
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$LSBCacheEntry
+javax/swing/UIManager$LAFState
+javax/swing/UIDefaults
+javax/swing/MultiUIDefaults
+javax/swing/UIManager$1
+javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/LookAndFeel
+sun/swing/DefaultLookup
+javax/swing/plaf/metal/OceanTheme
+javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/MetalTheme
+javax/swing/plaf/ColorUIResource
+javax/swing/plaf/UIResource
+sun/swing/PrintColorUIResource
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/FontUIResource
+sun/swing/SwingLazyValue
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$ActiveValue
+javax/swing/plaf/InsetsUIResource
+sun/swing/SwingUtilities2$2
+javax/swing/plaf/basic/BasicLookAndFeel$2
+javax/swing/plaf/DimensionUIResource
+javax/swing/UIDefaults$LazyInputMap
+java/lang/Character$CharacterCache
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
+java/awt/print/PrinterJob
+sun/swing/SwingUtilities2$AATextInfo
+sun/awt/X11/XAWTXSettings
+sun/awt/X11/XMSelectionListener
+sun/awt/XSettings
+sun/awt/X11/XMSelection
+sun/awt/X11/XMSelection$1
+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
+java/beans/PropertyChangeListener
+java/beans/PropertyChangeListenerProxy
+java/util/EventListenerProxy
+sun/awt/EventListenerAggregate
+javax/swing/UIDefaults$ProxyLazyValue
+javax/swing/plaf/metal/OceanTheme$1
+javax/swing/plaf/metal/OceanTheme$2
+javax/swing/plaf/metal/OceanTheme$3
+javax/swing/plaf/metal/OceanTheme$4
+javax/swing/plaf/metal/OceanTheme$5
+javax/swing/plaf/metal/OceanTheme$6
+javax/swing/RepaintManager
+javax/swing/RepaintManager$DisplayChangedHandler
+javax/swing/SwingPaintEventDispatcher
+sun/awt/PaintEventDispatcher
+javax/swing/UIManager$2
+java/awt/PopupMenu
+java/awt/Menu
+java/awt/MenuItem
+java/awt/MenuComponent
+java/io/ObjectOutputStream
+java/io/ObjectOutput
+java/io/DataOutput
+java/io/ObjectStreamConstants
+java/io/PrintWriter
+java/io/ObjectInputStream
+java/io/ObjectInput
+java/awt/Event
+java/awt/im/InputContext
+java/awt/event/MouseWheelEvent
+java/awt/BufferCapabilities
+sun/awt/CausedFocusEvent$Cause
+java/awt/PointerInfo
+java/awt/Component$BaselineResizeBehavior
+java/awt/FontMetrics
+java/awt/Image
+java/awt/image/ImageProducer
+java/awt/image/VolatileImage
+java/awt/im/InputMethodRequests
+java/awt/event/FocusEvent
+java/awt/event/InputMethodEvent
+java/awt/event/HierarchyEvent
+javax/accessibility/AccessibleStateSet
+com/sun/swing/internal/plaf/metal/resources/metal
+sun/util/ResourceBundleEnumeration
+com/sun/swing/internal/plaf/basic/resources/basic
+javax/swing/plaf/basic/BasicPanelUI
+javax/swing/plaf/PanelUI
+javax/swing/plaf/ComponentUI
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+java/util/jar/JarFile
+java/util/zip/ZipFile
+java/util/zip/ZipConstants
+java/util/jar/JavaUtilJarAccessImpl
+sun/misc/JavaUtilJarAccess
+sun/misc/JarIndex
+java/util/zip/ZipEntry
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarEntry
+sun/misc/URLClassPath$JarLoader$2
+sun/net/www/protocol/jar/JarURLConnection
+java/net/JarURLConnection
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+java/net/HttpURLConnection
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/security/AllPermissionCollection
+java/lang/IllegalAccessException
+javax/swing/JPasswordField
+javax/swing/JTextField
+javax/swing/text/JTextComponent
+javax/swing/Scrollable
+javax/swing/JLayeredPane
+javax/swing/JRootPane$1
+javax/swing/ArrayTable
+javax/swing/JInternalFrame
+javax/swing/JRootPane$RootLayout
+javax/swing/BufferStrategyPaintManager
+javax/swing/RepaintManager$PaintManager
+javax/swing/plaf/metal/MetalRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/ComponentInputMap
+javax/swing/InputMap
+javax/swing/plaf/InputMapUIResource
+javax/swing/KeyStroke
+java/awt/VKCollection
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
+javax/swing/plaf/basic/LazyActionMap
+javax/swing/plaf/ActionMapUIResource
+javax/swing/ActionMap
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/SortingFocusTraversalPolicy
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/SwingContainerOrderFocusTraversalPolicy
+javax/swing/SwingDefaultFocusTraversalPolicy
+javax/swing/LayoutComparator
+javax/swing/plaf/metal/MetalLabelUI
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/LabelUI
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+javax/swing/plaf/basic/BasicHTML
+sun/awt/NullComponentPeer
+java/awt/event/WindowEvent
+java/awt/EventQueue$1
+java/awt/EventDispatchThread$1
+java/awt/Conditional
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter$FilterAction
+sun/awt/dnd/SunDropTargetEvent
+java/awt/event/ActionEvent
+java/util/jar/Manifest
+java/io/ByteArrayInputStream
+java/util/jar/Attributes
+java/util/jar/Manifest$FastInputStream
+java/util/jar/Attributes$Name
+sun/misc/ASCIICaseInsensitiveComparator
+java/util/jar/JarVerifier
+java/io/ByteArrayOutputStream
+sun/misc/ExtensionDependency
+java/lang/Package
+sun/security/util/ManifestEntryVerifier
+java/security/Provider
+java/security/Provider$ServiceKey
+java/security/Provider$EngineDescription
+java/security/Security
+java/security/Security$1
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+sun/security/provider/NativePRNG
+java/security/SecureRandomSpi
+sun/security/provider/NativePRNG$1
+sun/security/provider/NativePRNG$RandomIO
+sun/misc/BASE64Decoder
+sun/misc/CharacterDecoder
+sun/security/util/SignatureFileVerifier
+java/awt/event/KeyAdapter
+java/lang/NumberFormatException
+java/lang/IllegalArgumentException
+java/io/FileWriter
+java/net/Authenticator
+java/net/MalformedURLException
+javax/swing/text/Element
+javax/swing/text/Document
+javax/swing/text/PlainDocument
+javax/swing/text/AbstractDocument
+javax/swing/text/GapContent
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/GapVector
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$MarkData
+javax/swing/text/StyleContext
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/StyleConstants
+javax/swing/text/StyleConstants$CharacterConstants
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/StyleConstants$FontConstants
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/StyleConstants$ColorConstants
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/StyleConstants$ParagraphConstants
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/StyleContext$FontKey
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/MutableAttributeSet
+javax/swing/text/AttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/StyleContext$NamedStyle
+javax/swing/text/Style
+javax/swing/text/StyleContext$SmallAttributeSet
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/tree/TreeNode
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/Position
+javax/swing/text/StyleContext$KeyEnumeration
+javax/swing/text/GapContent$InsertUndo
+javax/swing/undo/AbstractUndoableEdit
+javax/swing/undo/UndoableEdit
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/event/DocumentEvent
+javax/swing/undo/CompoundEdit
+javax/swing/event/DocumentEvent$EventType
+javax/swing/text/Segment
+java/text/CharacterIterator
+javax/swing/text/Utilities
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/event/UndoableEditEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/event/DocumentEvent$ElementChange
+java/net/Socket
+java/net/InetAddress
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddressImplFactory
+java/net/Inet4AddressImpl
+java/net/InetAddressImpl
+java/net/InetAddress$1
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+java/util/RandomAccessSubList
+java/util/SubList
+java/util/SubList$1
+java/util/AbstractList$ListItr
+java/net/Inet4Address
+java/net/InetSocketAddress
+java/net/SocketAddress
+java/net/SocksSocketImpl
+java/net/SocksConsts
+java/net/PlainSocketImpl
+java/net/SocketImpl
+java/net/SocketOptions
+java/net/SocketException
+java/net/SocksSocketImpl$5
+java/net/ProxySelector
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+java/net/Inet6Address
+java/net/URI
+java/net/URI$Parser
+java/net/Proxy
+java/net/Proxy$Type
+java/net/ConnectException
+javax/swing/JMenu
+javax/swing/MenuElement
+javax/swing/JMenuItem
+javax/swing/AbstractButton
+java/awt/ItemSelectable
+javax/swing/event/MenuListener
+javax/swing/JCheckBoxMenuItem
+javax/swing/Icon
+javax/swing/JButton
+java/awt/event/WindowListener
+java/net/URLClassLoader$2
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+java/awt/MediaTracker
+sun/misc/SoftCache$ValueCell
+sun/awt/image/URLImageSource
+sun/awt/image/InputStreamImageSource
+sun/awt/image/ImageFetchable
+sun/awt/image/ToolkitImage
+java/awt/Image$1
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager
+sun/awt/image/NativeLibLoader
+java/awt/ImageMediaEntry
+java/awt/MediaEntry
+sun/awt/image/ImageRepresentation
+java/awt/image/ImageConsumer
+sun/awt/image/ImageWatched
+sun/awt/image/ImageWatched$Link
+sun/awt/image/ImageWatched$WeakLink
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageFetcher
+sun/awt/image/FetcherInfo
+sun/awt/image/ImageFetcher$1
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageDecoder
+sun/awt/image/GifFrame
+java/awt/image/Raster
+java/awt/image/DataBufferByte
+java/awt/image/DataBuffer
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/ComponentSampleModel
+java/awt/image/SampleModel
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/ByteComponentRaster
+sun/awt/image/SunWritableRaster
+java/awt/image/WritableRaster
+java/awt/image/BufferedImage
+java/awt/image/WritableRenderedImage
+java/awt/image/RenderedImage
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/BytePackedRaster
+java/awt/Canvas
+sun/font/FontDesignMetrics
+sun/font/FontStrikeDesc
+sun/font/CompositeStrike
+sun/font/FontStrikeDisposer
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeCache$DisposableStrike
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/TrueTypeFont$1
+java/io/RandomAccessFile
+java/nio/ByteBufferAsIntBufferB
+java/nio/IntBuffer
+sun/font/TrueTypeFont$DirectoryEntry
+java/nio/ByteBufferAsShortBufferB
+java/nio/ShortBuffer
+sun/nio/cs/UTF_16
+sun/nio/cs/UTF_16$Decoder
+sun/nio/cs/UnicodeDecoder
+sun/font/FileFontStrike
+sun/font/TrueTypeGlyphMapper
+sun/font/CMap
+sun/font/CMap$NullCMapClass
+sun/font/CMap$CMapFormat4
+java/nio/ByteBufferAsCharBufferB
+sun/font/FontDesignMetrics$KeyReference
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PNGFilterInputStream
+java/util/zip/InflaterInputStream
+java/util/zip/Inflater
+sun/awt/EventQueueItem
+sun/awt/SunToolkit$3
+sun/awt/X11/XExposeEvent
+sun/reflect/UnsafeBooleanFieldAccessorImpl
+sun/awt/event/IgnorePaintEvent
+java/awt/image/DataBufferInt
+java/awt/image/SinglePixelPackedSampleModel
+sun/awt/image/IntegerInterleavedRaster
+sun/awt/image/OffScreenImage
+sun/awt/image/BufImgSurfaceData
+sun/java2d/opengl/GLXGraphicsConfig
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData
+sun/awt/image/WritableRasterNative
+sun/awt/image/DataBufferNative
+sun/java2d/SurfaceManagerFactory
+sun/java2d/opengl/GLXSurfaceData
+sun/java2d/opengl/OGLSurfaceData
+sun/font/CompositeGlyphMapper
+sun/java2d/loops/FontInfo
+java/util/Date
+sun/util/calendar/CalendarSystem
+sun/util/calendar/Gregorian
+sun/util/calendar/BaseCalendar
+sun/util/calendar/AbstractCalendar
+java/util/TimeZone
+java/lang/InheritableThreadLocal
+sun/util/calendar/ZoneInfo
+sun/util/calendar/ZoneInfoFile
+sun/util/calendar/ZoneInfoFile$1
+java/util/TimeZone$1
+sun/util/calendar/Gregorian$Date
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
+sun/util/calendar/CalendarUtils
+java/util/TimeZone$DisplayNames
+sun/util/TimeZoneNameUtility
+sun/util/resources/TimeZoneNames
+sun/util/resources/TimeZoneNamesBundle
+sun/util/resources/TimeZoneNames_en
+java/util/spi/TimeZoneNameProvider
+java/lang/ProcessBuilder
+java/lang/ProcessImpl
+java/lang/UNIXProcess
+java/lang/Process
+java/lang/UNIXProcess$1
+java/net/ServerSocket
+java/util/Random
+java/util/concurrent/atomic/AtomicLong
+java/lang/InternalError
+java/io/StringReader
+java/lang/SecurityException
+java/io/FilterReader
+java/lang/reflect/Proxy
+java/lang/reflect/InvocationHandler
+java/lang/NoSuchFieldException
+java/lang/InstantiationException
+java/lang/ArrayIndexOutOfBoundsException
+java/lang/IndexOutOfBoundsException
+javax/swing/JDialog
+sun/awt/X11/XClipboard
+sun/awt/datatransfer/SunClipboard
+java/awt/datatransfer/Clipboard
+java/awt/datatransfer/SystemFlavorMap
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/SystemFlavorMap$1
+sun/net/ProgressMonitor
+sun/net/DefaultProgressMeteringPolicy
+sun/net/ProgressMeteringPolicy
+java/awt/datatransfer/SystemFlavorMap$2
+java/awt/datatransfer/MimeType
+java/io/Externalizable
+java/awt/datatransfer/MimeTypeParameterList
+sun/awt/datatransfer/DataTransferer
+java/util/Collections$SynchronizedSet
+java/util/Collections$SynchronizedCollection
+java/awt/datatransfer/DataFlavor
+java/awt/datatransfer/DataFlavor$1
+sun/awt/datatransfer/DataTransferer$CharsetComparator
+sun/awt/datatransfer/DataTransferer$IndexedComparator
+sun/nio/cs/UTF_16LE
+sun/nio/cs/UTF_16BE
+sun/awt/datatransfer/DataTransferer$DataFlavorComparator
+java/rmi/Remote
+sun/awt/datatransfer/DataTransferer$1
+sun/awt/X11/XDataTransferer
+sun/awt/datatransfer/ToolkitThreadBlockedHandler
+javax/imageio/ImageTypeSpecifier
+sun/awt/X11/XSelection
+sun/security/action/GetIntegerAction
+sun/awt/X11/XSelection$IncrementalTransferHandler
+sun/awt/X11/XSelection$SelectionEventHandler
+java/awt/datatransfer/Transferable
+java/io/EOFException
+java/util/Vector$1
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$2
+java/util/jar/JarFile$1
+java/util/PropertyResourceBundle
+java/util/ResourceBundle$Control$1
+java/util/Hashtable$EntrySet
+java/lang/IllegalAccessError
+java/text/MessageFormat
+java/text/MessageFormat$Field
+java/text/Format$Field
+java/lang/CloneNotSupportedException
+sun/reflect/MethodAccessorGenerator
+sun/reflect/AccessorGenerator
+sun/reflect/ClassFileConstants
+java/lang/Void
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/ByteVector
+sun/reflect/ClassFileAssembler
+sun/reflect/UTF8
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/BootstrapConstructorAccessorImpl
+java/awt/event/ActionListener
+javax/swing/Timer
+javax/swing/Timer$DoPostEvent
+javax/swing/TimerQueue
+javax/swing/TimerQueue$1
+javax/swing/ToolTipManager
+java/awt/event/MouseAdapter
+javax/swing/ToolTipManager$insideTimerAction
+javax/swing/ToolTipManager$outsideTimerAction
+javax/swing/ToolTipManager$stillInsideTimerAction
+sun/swing/UIAction
+javax/swing/Action
+javax/swing/ToolTipManager$MoveBeforeEnterListener
+java/awt/event/MouseMotionAdapter
+java/util/Hashtable$ValueCollection
+javax/swing/event/CaretListener
+javax/swing/JToolBar
+javax/swing/JSplitPane
+javax/swing/border/Border
+javax/swing/JToggleButton
+javax/swing/border/EmptyBorder
+javax/swing/border/AbstractBorder
+javax/swing/DefaultButtonModel
+javax/swing/ButtonModel
+javax/swing/AbstractButton$Handler
+javax/swing/event/ChangeListener
+java/awt/event/ItemListener
+javax/swing/plaf/metal/MetalButtonUI
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/ButtonUI
+javax/swing/plaf/metal/MetalBorders
+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/border/CompoundBorder
+javax/swing/plaf/metal/MetalBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicButtonListener
+java/awt/AWTEventMulticaster
+java/awt/event/WindowFocusListener
+java/awt/event/WindowStateListener
+java/awt/event/AdjustmentListener
+java/awt/event/TextListener
+javax/swing/event/AncestorListener
+java/beans/VetoableChangeListener
+javax/swing/ButtonGroup
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/plaf/metal/MetalToggleButtonUI
+javax/swing/plaf/basic/BasicToggleButtonUI
+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
+java/awt/CardLayout
+javax/swing/Box
+javax/swing/plaf/metal/MetalBorders$TextFieldBorder
+javax/swing/plaf/metal/MetalBorders$Flush3DBorder
+javax/swing/BoxLayout
+javax/swing/JMenuBar
+javax/swing/DefaultSingleSelectionModel
+javax/swing/SingleSelectionModel
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/MenuBarUI
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/metal/MetalBorders$MenuBarBorder
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/KeyboardManager
+javax/swing/event/MenuEvent
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenuItem$MenuItemFocusListener
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuItemUI
+javax/swing/plaf/MenuItemUI
+javax/swing/plaf/metal/MetalBorders$MenuItemBorder
+javax/swing/plaf/metal/MetalIconFactory
+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/event/MenuKeyListener
+javax/swing/plaf/basic/BasicMenuItemUI$Handler
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MouseInputListener
+javax/swing/event/ChangeEvent
+java/awt/event/ContainerEvent
+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
+javax/swing/JPopupMenu
+javax/swing/plaf/basic/BasicPopupMenuUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+java/awt/event/AWTEventListenerProxy
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+javax/swing/plaf/basic/BasicLookAndFeel$1
+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
+javax/swing/event/PopupMenuListener
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/MenuSelectionManager
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
+java/awt/event/FocusAdapter
+javax/swing/JMenu$WinListener
+java/awt/event/WindowAdapter
+javax/swing/JPopupMenu$Separator
+javax/swing/JSeparator
+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
+javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/basic/BasicSeparatorUI
+javax/swing/plaf/SeparatorUI
+javax/swing/JComboBox
+javax/swing/event/ListDataListener
+javax/swing/event/CaretEvent
+javax/swing/text/TabExpander
+javax/swing/JScrollBar
+java/awt/Adjustable
+javax/swing/event/MouseInputAdapter
+javax/swing/JScrollBar$ModelListener
+javax/swing/DefaultBoundedRangeModel
+javax/swing/BoundedRangeModel
+javax/swing/plaf/metal/MetalScrollBarUI
+javax/swing/plaf/basic/BasicScrollBarUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/metal/MetalBumps
+javax/swing/plaf/metal/MetalScrollButton
+javax/swing/plaf/basic/BasicArrowButton
+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicScrollBarUI$Handler
+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
+javax/swing/CellRendererPane
+java/util/HashMap$EntryIterator
+javax/swing/border/MatteBorder
+sun/font/StandardGlyphVector
+java/awt/font/GlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/CoreMetrics
+sun/font/FontLineMetrics
+java/awt/font/LineMetrics
+javax/swing/ComboBoxModel
+javax/swing/ListModel
+javax/swing/ListCellRenderer
+javax/swing/DefaultComboBoxModel
+javax/swing/MutableComboBoxModel
+javax/swing/AbstractListModel
+javax/swing/JComboBox$1
+javax/swing/AncestorNotifier
+javax/swing/plaf/metal/MetalComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/border/LineBorder
+javax/swing/plaf/basic/BasicComboPopup$1
+javax/swing/JList
+javax/swing/DropMode
+javax/swing/DefaultListSelectionModel
+javax/swing/ListSelectionModel
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/ListUI
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
+javax/swing/TransferHandler
+javax/swing/TransferHandler$TransferAction
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListCellRenderer
+javax/swing/TransferHandler$SwingDropTarget
+java/awt/dnd/DropTargetContext
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$TransferSupport
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/event/ListSelectionListener
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/JScrollPane
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout$UIResource
+javax/swing/ScrollPaneLayout
+javax/swing/JViewport
+javax/swing/ViewportLayout
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/ViewportUI
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JViewport$ViewListener
+java/awt/event/ComponentAdapter
+javax/swing/plaf/metal/MetalScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/metal/MetalScrollPaneUI$1
+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
+javax/swing/plaf/basic/BasicComboBoxRenderer
+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
+javax/swing/plaf/metal/MetalComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/ComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/text/TextAction
+javax/swing/AbstractAction
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/plaf/metal/MetalTextFieldUI
+javax/swing/plaf/basic/BasicTextFieldUI
+javax/swing/plaf/basic/BasicTextUI
+javax/swing/text/ViewFactory
+javax/swing/plaf/TextUI
+javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/text/DefaultEditorKit
+javax/swing/text/EditorKit
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$DeleteNextCharAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$DeleteWordAction
+javax/swing/text/DefaultEditorKit$WritableAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$PasteAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$PageAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$PreviousWordAction
+javax/swing/text/DefaultEditorKit$NextWordAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$SelectLineAction
+javax/swing/text/DefaultEditorKit$SelectParagraphAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/text/Position$Bias
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/text/View
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/event/DocumentListener
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicTextUI$BasicCaret
+javax/swing/text/DefaultCaret
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret$Handler
+java/awt/datatransfer/ClipboardOwner
+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/text/DefaultHighlighter
+javax/swing/text/LayeredHighlighter
+javax/swing/text/Highlighter
+javax/swing/text/Highlighter$Highlight
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/Highlighter$HighlightPainter
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/FieldView
+javax/swing/text/PlainView
+javax/swing/text/JTextComponent$DefaultKeymap
+javax/swing/text/Keymap
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$KeymapActionMap
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/JTextArea
+javax/swing/JEditorPane
+javax/swing/JTextField$ScrollRepainter
+javax/swing/plaf/metal/MetalComboBoxEditor$1
+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/metal/MetalComboBoxButton
+javax/swing/plaf/metal/MetalComboBoxIcon
+javax/swing/plaf/metal/MetalComboBoxButton$1
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/JComboBox$KeySelectionManager
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/plaf/metal/MetalToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/metal/MetalBorders$ToolBarBorder
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
+javax/swing/plaf/basic/BasicToolBarUI$DockingListener
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/border/EtchedBorder
+javax/swing/JToolBar$Separator
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+java/applet/Applet
+java/awt/Panel
+com/sun/awt/AWTUtilities
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+sun/awt/EmbeddedFrame
+sun/awt/im/InputMethodContext
+java/awt/im/spi/InputMethodContext
+sun/awt/im/InputContext
+sun/awt/im/InputMethodManager
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/X11/XInputMethodDescriptor
+sun/awt/X11InputMethodDescriptor
+java/awt/im/spi/InputMethodDescriptor
+sun/awt/im/InputMethodLocator
+sun/awt/im/ExecutableInputMethodManager$2
+sun/misc/Service
+sun/misc/Service$LazyIterator
+java/util/TreeSet
+java/util/NavigableSet
+java/util/SortedSet
+javax/swing/SizeRequirements
+javax/swing/plaf/basic/BasicGraphicsUtils
+java/awt/event/AdjustmentEvent
+java/awt/MenuBar
+sun/awt/X11/XComponentPeer$2
+java/awt/SequencedEvent
+java/beans/PropertyVetoException
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+sun/awt/KeyboardFocusManagerPeerImpl
+sun/awt/SunToolkit$7
+java/awt/Window$1DisposeAction
+java/awt/LightweightDispatcher$2
+sun/awt/X11/XReparentEvent
+sun/awt/X11/XWindowAttributes
+sun/awt/X11/XFocusChangeEvent
+sun/awt/X11/XComponentPeer$1
+sun/awt/X11/XUnmapEvent
+java/io/StringWriter
+javax/swing/JWindow
+java/io/UnsupportedEncodingException
+java/net/UnknownHostException
+java/nio/channels/SocketChannel
+java/nio/channels/spi/AbstractSelectableChannel
+java/nio/channels/SelectableChannel
+java/net/SocketImplFactory
+javax/swing/UnsupportedLookAndFeelException
+java/lang/UnsatisfiedLinkError
+javax/swing/Box$Filler
+javax/swing/JComponent$2
+sun/net/www/MimeTable
+java/net/FileNameMap
+sun/net/www/MimeTable$1
+sun/net/www/MimeEntry
+java/net/URLConnection$1
+java/text/SimpleDateFormat
+java/text/DateFormat
+java/text/DateFormat$Field
+java/util/Calendar
+java/util/GregorianCalendar
+sun/util/resources/CalendarData
+sun/util/resources/CalendarData_en
+java/text/DateFormatSymbols
+java/text/spi/DateFormatSymbolsProvider
+java/text/DontCareFieldPosition
+java/text/DontCareFieldPosition$1
+java/text/Format$FieldDelegate
+javax/swing/plaf/BorderUIResource
+javax/swing/BorderFactory
+javax/swing/border/BevelBorder
+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
+java/util/zip/ZipInputStream
+java/io/PushbackInputStream
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/lang/Thread$State
+javax/swing/SwingUtilities$SharedOwnerFrame
+javax/swing/JTable
+javax/swing/event/TableModelListener
+javax/swing/event/TableColumnModelListener
+javax/swing/event/CellEditorListener
+javax/swing/event/RowSorterListener
+javax/swing/BufferStrategyPaintManager$BufferInfo
+java/awt/Component$BltSubRegionBufferStrategy
+sun/awt/SubRegionShowable
+java/awt/Component$BltBufferStrategy
+sun/awt/image/SunVolatileImage
+sun/awt/image/BufferedImageGraphicsConfig
+sun/print/PrinterGraphicsConfig
+sun/java2d/x11/X11VolatileSurfaceManager
+sun/awt/image/VolatileSurfaceManager
+java/awt/print/PrinterGraphics
+java/awt/PrintGraphics
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsCallback
+sun/awt/SunGraphicsCallback
+javax/swing/JRadioButton
+java/lang/ClassFormatError
+javax/swing/JTabbedPane
+javax/swing/JTabbedPane$ModelListener
+javax/swing/plaf/metal/MetalTabbedPaneUI
+javax/swing/plaf/basic/BasicTabbedPaneUI
+javax/swing/plaf/TabbedPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
+sun/swing/ImageIconUIResource
+javax/swing/GrayFilter
+java/awt/image/RGBImageFilter
+java/awt/image/ImageFilter
+java/awt/image/FilteredImageSource
+org/w3c/dom/Node
+org/xml/sax/SAXException
+javax/xml/parsers/ParserConfigurationException
+org/xml/sax/EntityResolver
+java/security/NoSuchAlgorithmException
+java/security/GeneralSecurityException
+java/util/zip/GZIPInputStream
+java/util/zip/DeflaterOutputStream
+org/xml/sax/InputSource
+javax/xml/parsers/DocumentBuilderFactory
+javax/xml/parsers/FactoryFinder
+javax/xml/parsers/SecuritySupport
+javax/xml/parsers/SecuritySupport$2
+javax/xml/parsers/SecuritySupport$5
+javax/xml/parsers/SecuritySupport$1
+javax/xml/parsers/SecuritySupport$4
+javax/xml/parsers/DocumentBuilder
+org/w3c/dom/Document
+org/xml/sax/helpers/DefaultHandler
+org/xml/sax/DTDHandler
+org/xml/sax/ContentHandler
+org/xml/sax/ErrorHandler
+org/xml/sax/SAXNotSupportedException
+org/xml/sax/Locator
+org/xml/sax/SAXNotRecognizedException
+org/xml/sax/SAXParseException
+org/w3c/dom/NodeList
+org/w3c/dom/events/EventTarget
+org/w3c/dom/traversal/DocumentTraversal
+org/w3c/dom/events/DocumentEvent
+org/w3c/dom/ranges/DocumentRange
+org/w3c/dom/Entity
+org/w3c/dom/Element
+org/w3c/dom/CharacterData
+org/w3c/dom/CDATASection
+org/w3c/dom/Text
+org/xml/sax/AttributeList
+org/w3c/dom/DOMException
+org/w3c/dom/Notation
+org/w3c/dom/DocumentType
+org/w3c/dom/Attr
+org/w3c/dom/EntityReference
+org/w3c/dom/ProcessingInstruction
+org/w3c/dom/Comment
+org/w3c/dom/DocumentFragment
+org/w3c/dom/events/Event
+org/w3c/dom/events/MutationEvent
+org/w3c/dom/traversal/TreeWalker
+org/w3c/dom/ranges/Range
+org/w3c/dom/traversal/NodeIterator
+org/w3c/dom/events/EventException
+org/w3c/dom/NamedNodeMap
+java/lang/StringIndexOutOfBoundsException
+java/awt/GridLayout
+javax/swing/plaf/metal/MetalRadioButtonUI
+javax/swing/plaf/basic/BasicRadioButtonUI
+javax/swing/plaf/basic/BasicBorders
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
+java/awt/event/ItemEvent
+java/awt/CardLayout$Card
+javax/swing/JCheckBox
+javax/swing/event/ListSelectionEvent
+javax/swing/plaf/metal/MetalCheckBoxUI
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
+java/lang/ExceptionInInitializerError
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
+javax/swing/JProgressBar
+javax/swing/JProgressBar$ModelListener
+javax/swing/plaf/metal/MetalProgressBarUI
+javax/swing/plaf/basic/BasicProgressBarUI
+javax/swing/plaf/ProgressBarUI
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/basic/BasicProgressBarUI$Handler
+javax/swing/tree/TreeModel
+javax/swing/table/TableCellRenderer
+javax/swing/table/JTableHeader
+javax/swing/event/TreeExpansionListener
+javax/swing/table/AbstractTableModel
+javax/swing/table/TableModel
+javax/swing/table/DefaultTableCellRenderer
+javax/swing/JTree
+javax/swing/tree/TreeSelectionModel
+javax/swing/tree/DefaultTreeCellRenderer
+javax/swing/tree/TreeCellRenderer
+javax/swing/table/TableCellEditor
+javax/swing/CellEditor
+javax/swing/JToolTip
+javax/swing/table/TableColumn
+javax/swing/table/DefaultTableColumnModel
+javax/swing/table/TableColumnModel
+javax/swing/table/DefaultTableModel
+javax/swing/event/TableModelEvent
+sun/swing/table/DefaultTableCellHeaderRenderer
+javax/swing/plaf/basic/BasicTableHeaderUI
+javax/swing/plaf/TableHeaderUI
+javax/swing/plaf/basic/BasicTableHeaderUI$1
+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
+javax/swing/DefaultCellEditor
+javax/swing/tree/TreeCellEditor
+javax/swing/AbstractCellEditor
+javax/swing/plaf/basic/BasicTableUI
+javax/swing/plaf/TableUI
+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
+javax/swing/plaf/basic/BasicTableUI$Handler
+javax/swing/tree/DefaultTreeSelectionModel
+javax/swing/tree/TreePath
+javax/swing/plaf/metal/MetalTreeUI
+javax/swing/plaf/basic/BasicTreeUI
+javax/swing/plaf/TreeUI
+javax/swing/plaf/basic/BasicTreeUI$Actions
+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
+javax/swing/plaf/metal/MetalTreeUI$LineListener
+javax/swing/plaf/basic/BasicTreeUI$Handler
+javax/swing/event/TreeModelListener
+javax/swing/event/TreeSelectionListener
+javax/swing/event/SwingPropertyChangeSupport
+javax/swing/tree/VariableHeightLayoutCache
+javax/swing/tree/AbstractLayoutCache
+javax/swing/tree/RowMapper
+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
+javax/swing/tree/AbstractLayoutCache$NodeDimensions
+javax/swing/JTree$TreeModelHandler
+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
+javax/swing/tree/DefaultMutableTreeNode
+javax/swing/tree/MutableTreeNode
+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
+javax/swing/event/TableColumnModelEvent
+java/text/ParseException
+java/text/NumberFormat$Field
+javax/swing/event/UndoableEditListener
+javax/swing/filechooser/FileFilter
+javax/swing/tree/DefaultTreeModel
+javax/swing/tree/DefaultTreeCellEditor
+javax/swing/tree/DefaultTreeCellEditor$1
+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
+javax/swing/DefaultCellEditor$1
+javax/swing/DefaultCellEditor$EditorDelegate
+javax/swing/tree/DefaultTreeCellEditor$EditorContainer
+javax/swing/JTree$TreeSelectionRedirector
+javax/swing/event/TreeModelEvent
+javax/swing/plaf/metal/MetalSplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneUI
+javax/swing/plaf/SplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneDivider
+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
+javax/swing/plaf/metal/MetalSplitPaneDivider
+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
+javax/swing/plaf/basic/BasicSplitPaneUI$1
+javax/swing/plaf/basic/BasicSplitPaneUI$Handler
+javax/swing/plaf/metal/MetalSplitPaneDivider$1
+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
+javax/swing/plaf/metal/MetalSplitPaneDivider$2
+javax/swing/border/TitledBorder
+javax/swing/plaf/basic/BasicTextAreaUI
+java/util/Collections$UnmodifiableCollection$1
+java/io/InterruptedIOException
+java/net/NoRouteToHostException
+java/net/BindException
+javax/swing/tree/PathPlaceHolder
+javax/swing/event/TreeSelectionEvent
+javax/swing/JList$3
+javax/swing/JList$ListSelectionHandler
+javax/swing/JSlider
+javax/swing/JSlider$ModelListener
+javax/swing/plaf/metal/MetalSliderUI
+javax/swing/plaf/basic/BasicSliderUI
+javax/swing/plaf/SliderUI
+javax/swing/plaf/basic/BasicSliderUI$Actions
+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
+javax/swing/plaf/basic/BasicSliderUI$TrackListener
+javax/swing/plaf/basic/BasicSliderUI$Handler
+javax/swing/plaf/basic/BasicSliderUI$ScrollListener
+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
+sun/java2d/HeadlessGraphicsEnvironment
+java/util/Hashtable$KeySet
+java/awt/FontFormatException
+sun/font/Type1Font$1
+java/nio/channels/FileChannel$MapMode
+sun/nio/ch/FileChannelImpl$Unmapper
+sun/nio/ch/Util$3
+java/nio/DirectByteBufferR
+java/nio/charset/Charset$3
+sun/nio/cs/AbstractCharsetProvider
+sun/nio/cs/SingleByteDecoder
+java/lang/CharacterData00
+javax/swing/DefaultListModel
+javax/swing/event/ListDataEvent
+javax/sound/sampled/DataLine
+javax/sound/sampled/Line
+javax/sound/sampled/Line$Info
+javax/sound/sampled/DataLine$Info
+javax/sound/sampled/Control$Type
+javax/sound/sampled/FloatControl$Type
+javax/sound/sampled/LineUnavailableException
+javax/sound/sampled/UnsupportedAudioFileException
+javax/swing/JRadioButtonMenuItem
+javax/swing/JMenuItem$AccessibleJMenuItem
+javax/swing/AbstractButton$AccessibleAbstractButton
+javax/accessibility/AccessibleAction
+javax/accessibility/AccessibleValue
+javax/accessibility/AccessibleText
+javax/accessibility/AccessibleExtendedComponent
+javax/accessibility/AccessibleComponent
+javax/swing/JComponent$AccessibleJComponent
+java/awt/Container$AccessibleAWTContainer
+java/awt/Component$AccessibleAWTComponent
+javax/accessibility/AccessibleRelationSet
+javax/accessibility/AccessibleState
+javax/accessibility/AccessibleBundle
+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
+sun/awt/image/ImageDecoder$1
+javax/swing/JTabbedPane$Page
+java/net/DatagramSocket
+java/net/MulticastSocket
+java/net/DatagramPacket
+sun/net/InetAddressCachePolicy
+sun/net/InetAddressCachePolicy$1
+sun/net/InetAddressCachePolicy$2
+java/net/InetAddress$CacheEntry
+java/net/PlainDatagramSocketImpl
+java/net/DatagramSocketImpl
+java/net/NetworkInterface
+java/net/InterfaceAddress
+java/text/Collator
+java/text/spi/CollatorProvider
+sun/text/resources/CollationData
+sun/text/resources/CollationData_en
+sun/util/EmptyListResourceBundle
+java/text/RuleBasedCollator
+java/text/CollationRules
+java/text/RBCollationTables
+java/text/RBTableBuilder
+java/text/RBCollationTables$BuildAPI
+sun/text/IntHashtable
+sun/text/UCompactIntArray
+sun/text/normalizer/NormalizerImpl
+sun/text/normalizer/ICUData
+sun/text/normalizer/NormalizerDataReader
+sun/text/normalizer/ICUBinary$Authenticate
+sun/text/normalizer/ICUBinary
+sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+sun/text/normalizer/Trie$DataManipulate
+sun/text/normalizer/NormalizerImpl$NormTrieImpl
+sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+sun/text/normalizer/IntTrie
+sun/text/normalizer/Trie
+sun/text/normalizer/CharTrie
+sun/text/normalizer/CharTrie$FriendAgent
+sun/text/normalizer/UnicodeSet
+sun/text/normalizer/UnicodeMatcher
+sun/text/normalizer/NormalizerImpl$DecomposeArgs
+java/text/MergeCollation
+java/text/PatternEntry$Parser
+java/text/PatternEntry
+java/text/EntryPair
+sun/text/ComposedCharIter
+sun/text/normalizer/UTF16
+sun/net/www/protocol/http/Handler
+java/io/ObjectInputStream$BlockDataInputStream
+java/io/ObjectInputStream$PeekInputStream
+java/io/ObjectInputStream$HandleTable
+java/io/ObjectInputStream$ValidationList
+java/io/Bits
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$2
+sun/reflect/SerializationConstructorAccessorImpl
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$1
+java/io/DataOutputStream
+java/io/ObjectStreamClass$MemberSignature
+java/io/ObjectStreamClass$3
+java/io/ObjectStreamClass$4
+java/io/ObjectStreamClass$5
+java/security/MessageDigest
+java/security/MessageDigestSpi
+sun/security/jca/GetInstance
+sun/security/jca/Providers
+sun/security/jca/ProviderList
+sun/security/jca/ProviderConfig
+sun/security/jca/ProviderList$3
+sun/security/jca/ProviderList$1
+sun/security/jca/ProviderList$2
+sun/security/jca/ProviderConfig$1
+sun/security/jca/ProviderConfig$3
+java/security/Provider$Service
+java/security/Provider$UString
+sun/security/provider/SHA
+sun/security/provider/DigestBase
+sun/security/jca/GetInstance$Instance
+java/security/MessageDigest$Delegate
+sun/security/provider/ByteArrayAccess
+java/io/ObjectStreamClass$ClassDataSlot
+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
+java/security/SignatureException
+java/security/InvalidKeyException
+java/security/KeyException
+java/security/Signature
+java/security/SignatureSpi
+java/io/ObjectOutputStream$BlockDataOutputStream
+sun/security/provider/DSAPublicKey
+java/security/interfaces/DSAPublicKey
+java/security/interfaces/DSAKey
+java/security/PublicKey
+java/security/Key
+sun/security/x509/X509Key
+java/io/ObjectOutputStream$HandleTable
+java/io/ObjectOutputStream$ReplaceTable
+sun/security/x509/AlgorithmId
+sun/security/util/DerEncoder
+sun/security/util/BitArray
+sun/security/util/DerOutputStream
+sun/security/util/DerValue
+java/math/BigInteger
+java/security/interfaces/DSAParams
+sun/security/util/DerInputStream
+sun/security/util/DerInputBuffer
+sun/security/util/ObjectIdentifier
+java/security/AlgorithmParameters
+java/security/AlgorithmParametersSpi
+sun/security/provider/DSAParameters
+sun/security/util/ByteArrayLexOrder
+sun/security/util/ByteArrayTagOrder
+sun/security/util/DerIndefLenConverter
+java/io/InvalidClassException
+java/io/ObjectStreamException
+java/io/ObjectInputStream$GetFieldImpl
+java/io/ObjectInputStream$GetField
+sun/security/jca/ServiceId
+sun/security/jca/ProviderList$ServiceList
+sun/security/jca/ProviderList$ServiceList$1
+java/security/Signature$Delegate
+java/security/interfaces/DSAPrivateKey
+java/security/PrivateKey
+sun/security/provider/DSA$SHA1withDSA
+sun/security/provider/DSA
+java/security/spec/DSAParameterSpec
+java/security/spec/AlgorithmParameterSpec
+java/math/MutableBigInteger
+java/math/SignedMutableBigInteger
+java/awt/EventQueue$1AWTInvocationLock
+java/awt/Component$FlipBufferStrategy
+java/awt/SentEvent
+sun/awt/X11/XDestroyWindowEvent
+sun/awt/X11/XDropTargetRegistry
+sun/awt/X11/XEmbeddedFramePeer
+sun/awt/X11/XDragAndDropProtocols
+sun/awt/X11/XDropTargetContextPeer
+sun/awt/dnd/SunDropTargetContextPeer
+java/awt/dnd/peer/DropTargetContextPeer
+sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
+sun/awt/X11/XDropTargetProtocolListener
+sun/awt/X11/XDnDDragSourceProtocol
+sun/awt/X11/XDragSourceProtocol
+sun/awt/X11/MotifDnDDragSourceProtocol
+sun/awt/X11/XDnDDropTargetProtocol
+sun/awt/X11/XDropTargetProtocol
+sun/awt/X11/MotifDnDDropTargetProtocol
+sun/awt/X11/XDnDConstants
+sun/awt/X11/MotifDnDConstants
+javax/swing/JTable$2
+javax/swing/JTable$Resizable3
+javax/swing/JTable$Resizable2
+javax/swing/JTable$5
+javax/swing/event/AncestorEvent
+sun/font/FontDesignMetrics$MetricsKey
+java/awt/geom/Line2D$Float
+java/awt/geom/Line2D
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel
+javax/swing/plaf/synth/SynthLookAndFeel
+javax/swing/plaf/synth/DefaultSynthStyleFactory
+javax/swing/plaf/synth/SynthStyleFactory
+sun/swing/BakedArrayList
+javax/swing/plaf/synth/SynthLookAndFeel$Handler
+javax/swing/plaf/synth/SynthDefaultLookup
+com/sun/java/swing/plaf/gtk/GTKEngine
+com/sun/java/swing/plaf/gtk/GTKEngine$Settings
+com/sun/java/swing/plaf/gtk/GTKStyleFactory
+com/sun/java/swing/plaf/gtk/PangoFonts
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL
+javax/swing/plaf/synth/Region
+javax/swing/plaf/synth/SynthLookAndFeel$AATextListener
+com/sun/java/swing/plaf/gtk/GTKRegion
+com/sun/java/swing/plaf/gtk/GTKStyle
+com/sun/java/swing/plaf/gtk/GTKConstants
+javax/swing/plaf/synth/SynthStyle
+javax/swing/plaf/synth/SynthGraphicsUtils
+com/sun/java/swing/plaf/gtk/GTKGraphicsUtils
+com/sun/java/swing/plaf/gtk/GTKStyle$GTKStockIcon
+sun/swing/plaf/synth/SynthIcon
+com/sun/java/swing/plaf/gtk/GTKColorType
+javax/swing/plaf/synth/ColorType
+com/sun/java/swing/plaf/gtk/resources/gtk
+com/sun/swing/internal/plaf/synth/resources/synth
+com/sun/java/swing/plaf/gtk/GTKStyle$GTKLazyValue
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
+javax/swing/plaf/synth/SynthPanelUI
+javax/swing/plaf/synth/SynthConstants
+javax/swing/plaf/synth/SynthContext
+javax/swing/plaf/synth/SynthBorder
+javax/swing/plaf/synth/SynthRootPaneUI
+javax/swing/plaf/synth/SynthLabelUI
+javax/swing/plaf/synth/SynthButtonUI
+javax/swing/plaf/synth/SynthToggleButtonUI
+javax/swing/plaf/basic/BasicBorders$FieldBorder
+javax/swing/plaf/synth/SynthMenuBarUI
+javax/swing/plaf/synth/SynthMenuUI
+javax/swing/plaf/synth/SynthUI
+com/sun/java/swing/plaf/gtk/GTKIconFactory
+com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
+com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
+com/sun/java/swing/plaf/gtk/GTKConstants$ArrowType
+javax/swing/plaf/basic/BasicIconFactory
+javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
+javax/swing/plaf/synth/SynthMenuItemUI
+javax/swing/plaf/synth/SynthPopupMenuUI
+javax/swing/plaf/synth/SynthSeparatorUI
+javax/swing/plaf/synth/SynthScrollBarUI
+javax/swing/plaf/synth/SynthArrowButton
+javax/swing/plaf/synth/SynthArrowButton$SynthArrowButtonUI
+javax/swing/plaf/synth/SynthComboBoxUI
+javax/swing/plaf/synth/SynthComboPopup
+javax/swing/plaf/synth/SynthListUI
+javax/swing/plaf/synth/SynthListUI$SynthListCellRenderer
+javax/swing/plaf/synth/SynthViewportUI
+javax/swing/plaf/synth/SynthScrollPaneUI
+javax/swing/plaf/synth/SynthScrollPaneUI$ViewportBorder
+javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxRenderer
+javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxEditor
+javax/swing/plaf/synth/SynthTextFieldUI
+javax/swing/plaf/synth/SynthToolBarUI
+javax/swing/plaf/synth/SynthToolBarUI$SynthToolBarLayoutManager
+com/sun/java/swing/plaf/gtk/GTKIconFactory$ToolBarHandleIcon
+com/sun/java/swing/plaf/gtk/GTKConstants$Orientation
+sun/awt/X11/XTranslateCoordinates
+com/sun/java/swing/plaf/gtk/GTKPainter
+javax/swing/plaf/synth/SynthPainter
+javax/swing/plaf/synth/SynthPainter$1
+com/sun/java/swing/plaf/gtk/GTKConstants$PositionType
+com/sun/java/swing/plaf/gtk/GTKConstants$ShadowType
+java/io/ObjectInputStream$HandleTable$HandleList
+sun/java2d/pipe/ShapeSpanIterator
+sun/java2d/pipe/SpanIterator
+sun/dc/path/PathConsumer
+sun/dc/pr/PathStroker
+sun/dc/pr/PathDasher
+java/awt/geom/LineIterator
+java/awt/geom/PathIterator
+sun/applet/Main
+sun/applet/AppletMessageHandler
+sun/applet/resources/MsgAppletViewer
+sun/applet/AppletSecurity
+sun/awt/AWTSecurityManager
+java/lang/SecurityManager
+java/security/DomainCombiner
+sun/applet/AppletSecurity$1
+java/lang/SecurityManager$1
+java/security/SecurityPermission
+java/util/PropertyPermission
+sun/applet/AppletViewer
+java/applet/AppletContext
+java/awt/print/Printable
+sun/security/util/SecurityConstants
+java/awt/AWTPermission
+java/net/NetPermission
+java/net/SocketPermission
+javax/security/auth/AuthPermission
+java/lang/Thread$1
+java/util/logging/LogManager$5
+sun/applet/StdAppletViewerFactory
+sun/applet/AppletViewerFactory
+sun/applet/AppletViewer$UserActionListener
+sun/applet/AppletViewerPanel
+sun/applet/AppletPanel
+java/applet/AppletStub
+sun/misc/MessageUtils
+sun/applet/AppletPanel$10
+java/security/Policy$1
+sun/security/provider/PolicyFile$1
+sun/security/provider/PolicyFile$3
+sun/security/util/PropertyExpander
+sun/security/provider/PolicyParser
+sun/security/util/PolicyUtil
+sun/security/provider/PolicyParser$GrantEntry
+sun/security/provider/PolicyParser$PermissionEntry
+sun/security/provider/PolicyFile$PolicyEntry
+sun/security/provider/PolicyFile$6
+sun/security/provider/PolicyFile$7
+java/net/SocketPermissionCollection
+java/util/PropertyPermissionCollection
+sun/applet/AppletPanel$9
+sun/applet/AppletClassLoader
+sun/applet/AppletThreadGroup
+sun/applet/AppContextCreator
+sun/applet/AppletPanel$1
+sun/awt/X11/XMenuBarPeer
+java/awt/peer/MenuBarPeer
+java/awt/peer/MenuComponentPeer
+sun/awt/X11/XBaseMenuWindow
+sun/awt/X11/XMenuPeer
+java/awt/peer/MenuPeer
+java/awt/peer/MenuItemPeer
+sun/awt/X11/XMenuItemPeer
+java/awt/MenuShortcut
+sun/awt/X11/XMenuWindow
+sun/awt/X11/XMenuItemPeer$TextMetrics
+sun/awt/AppContext$3
+sun/awt/X11/XMenuBarPeer$MappingData
+sun/awt/X11/XBaseMenuWindow$MappingData
+sun/applet/AppletViewer$1
+sun/applet/AppletViewer$1AppletEventListener
+sun/applet/AppletListener
+sun/applet/AppletEventMulticaster
+sun/misc/Queue
+sun/misc/QueueElement
+sun/applet/AppletEvent
+sun/applet/AppletClassLoader$1
+sun/awt/X11/XBaseMenuWindow$3
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+sun/awt/CausedFocusEvent
+sun/awt/X11/XWindow$1
+java/net/URLClassLoader$4
+sun/applet/AppletClassLoader$2
+javax/swing/JApplet
+java/lang/ClassLoader$1
+sun/security/provider/PolicyFile$5
+java/security/PermissionsEnumerator
+java/util/Collections$1
+sun/applet/AppletPanel$11
+sun/applet/AppletPanel$8
+sun/applet/AppletPanel$2
+sun/applet/AppletPanel$3
+sun/applet/AppletPanel$6
+javax/swing/BufferStrategyPaintManager$1
+# f3ac8b467e7f8c49
diff --git a/jdk/src/bsd/doc/man/appletviewer.1 b/jdk/src/bsd/doc/man/appletviewer.1
index 3f6cd51..b0a147c 100755
--- a/jdk/src/bsd/doc/man/appletviewer.1
+++ b/jdk/src/bsd/doc/man/appletviewer.1
@@ -19,7 +19,7 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH appletviewer 1 "10 May 2011"
+.TH appletviewer 1 "16 Mar 2012"
.LP
.SH "Name"
@@ -36,11 +36,14 @@ The \f3appletviewer\fP command allows you to run applets outside of a web browse
.SH "DESCRIPTION"
.LP
.LP
-The \f3appletviewer\fP command connects to the documents or resources designated by \f2urls\fP and displays each applet referenced by the documents in its own window. Note: if the documents referred to by \f2urls\fP do not reference any applets with the \f2OBJECT\fP, \f2EMBED\fP, or \f2APPLET\fP tag, then \f3appletviewer\fP does nothing. For details on the HTML tags that \f3appletviewer\fP supports, see
+The \f3appletviewer\fP command connects to the documents or resources designated by \f2urls\fP and displays each applet referenced by the documents in its own window. Note: if the documents referred to by \f2urls\fP do not reference any applets with the \f2OBJECT\fP, \f2EMBED\fP, or \f2APPLET\fP tag, then \f3appletviewer\fP does nothing. For details on the HTML tags that \f3appletviewer\fP supports, see
.na
\f2AppletViewer Tags\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/tools/appletviewertags.html.
+http://docs.oracle.com/javase/7/docs/technotes/tools/appletviewertags.html.
+.LP
+.LP
+\f3Note:\fP The \f3appletviewer\fP is intended for development purposes only. See About Sample / Test Applications and Code for more information.
.LP
.LP
\f3Note:\fP The \f3appletviewer\fP requires encoded URLs according to the escaping mechanism defined in RFC2396. Only encoded URLs are supported. However, file names must be unencoded, as specified in RFC2396.
@@ -49,18 +52,18 @@ http://download.oracle.com/javase/7/docs/technotes/tools/appletviewertags.html.
.LP
.RS 3
.TP 3
-\-debug
-Starts the applet viewer in the Java debugger, jdb(1), thus allowing you to debug the applets in the document.
+\-debug
+Starts the applet viewer in the Java debugger, jdb(1), thus allowing you to debug the applets in the document.
.TP 3
-\-encoding \ \ encoding name
-Specify the input HTML file encoding name.
+\-encoding \ \ encoding name
+Specify the input HTML file encoding name.
.TP 3
-\-Jjavaoption
-Passes through the string \f2javaoption\fP as a single argument to the Java interpreter which runs the appletviewer. The argument should not contain spaces. Multiple argument words must all begin with the prefix \f3\-J\fP, which is stripped. This is useful for adjusting the compiler's execution environment or memory usage.
+\-Jjavaoption
+Passes through the string \f2javaoption\fP as a single argument to the Java interpreter which runs the appletviewer. The argument should not contain spaces. Multiple argument words must all begin with the prefix \f3\-J\fP, which is stripped. This is useful for adjusting the compiler's execution environment or memory usage.
.RE
.LP
.LP
.LP
-
+
diff --git a/jdk/src/bsd/doc/man/apt.1 b/jdk/src/bsd/doc/man/apt.1
index 1037a3b..da839c2 100755
--- a/jdk/src/bsd/doc/man/apt.1
+++ b/jdk/src/bsd/doc/man/apt.1
@@ -19,7 +19,7 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH apt 1 "10 May 2011"
+.TH apt 1 "16 Mar 2012"
.LP
.SH "NAME"
@@ -39,11 +39,11 @@ Options may be in any order. For a discussion of parameters which apply to a spe
.LP
.RS 3
.TP 3
-sourcefiles
-Zero or more source files to be processed.
+sourcefiles
+Zero or more source files to be processed.
.TP 3
-@files
-One or more files that list source files or other options
+@files
+One or more files that list source files or other options
.RE
.LP
@@ -56,80 +56,80 @@ One or more files that list source files or other options
The tool \f2apt\fP, annotation processing tool, includes reflective APIs and supporting infrastructure to process program annotations. The \f2apt\fP reflective APIs provide a build\-time, source\-based, read\-only view of program structure. These reflective APIs are designed to cleanly model the Java(TM) programming language's type system after the addition of generics. First, \f2apt\fP runs annotation processors that can produce new source code and other files. Next, \f2apt\fP can cause compilation of both original and generated source files, easing development. The reflective APIs and other APIs used to interact with the tool are subpackages of \f2com.sun.mirror\fP.
.LP
.LP
-A fuller discussion of how the tool operates as well as instructions for developing with \f2apt\fP are in
+A fuller discussion of how the tool operates as well as instructions for developing with \f2apt\fP are in
.na
\f4Getting Started with \fP\f4apt\fP. @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/apt/GettingStarted.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/apt/GettingStarted.html
.LP
.SH "OPTIONS"
.LP
-.SS
+.SS
apt specific options
.LP
.RS 3
.TP 3
-\-s dir
-Specify the directory root under which processor\-generated source files will be placed; files are placed in subdirectories based on package namespace.
+\-s dir
+Specify the directory root under which processor\-generated source files will be placed; files are placed in subdirectories based on package namespace.
.TP 3
-\-nocompile
-Do not compile source files to class files.
+\-nocompile
+Do not compile source files to class files.
.TP 3
-\-print
-Print out textual representation of specified types; perform no annotation processing or compilation.
+\-print
+Print out textual representation of specified types; perform no annotation processing or compilation.
.TP 3
-\-A[key[=val]]
-Options to pass to annotation processors \-\- these are not interpreted by \f2apt\fP directly, but are made available for use by individual processors
+\-A[key[=val]]
+Options to pass to annotation processors \-\- these are not interpreted by \f2apt\fP directly, but are made available for use by individual processors
.TP 3
-\-factorypath path
-Specify where to find annotation processor factories; if this option is used, the classpath is \f2not\fP searched for factories.
+\-factorypath path
+Specify where to find annotation processor factories; if this option is used, the classpath is \f2not\fP searched for factories.
.TP 3
-\-factory classname
-Name of annotation processor factory to use; bypasses default discovery process
+\-factory classname
+Name of annotation processor factory to use; bypasses default discovery process
.TP 3
-\-version
-Print version information.
+\-version
+Print version information.
.TP 3
-\-X
-Display information about non\-standard options.
+\-X
+Display information about non\-standard options.
.RE
.LP
-.SS
+.SS
Options shared with javac
.LP
.RS 3
.TP 3
-\-d dir
-Specify where to place processor and javac generated class files
+\-d dir
+Specify where to place processor and javac generated class files
.TP 3
-\-cp path or \-classpath path
-Specify where to find user class files and annotation processor factories. If \f2\-factorypath\fP is given, the classpath is not searched for factories.
+\-cp path or \-classpath path
+Specify where to find user class files and annotation processor factories. If \f2\-factorypath\fP is given, the classpath is not searched for factories.
.RE
.LP
.LP
Consult the javac(1) man page for information on \f2javac\fP options.
.LP
-.SS
+.SS
Non\-Standard Options
.LP
.RS 3
.TP 3
-\-XListAnnotationTypes
-List found annotation types.
+\-XListAnnotationTypes
+List found annotation types.
.TP 3
-\-XListDeclarations
-List specified and included declarations.
+\-XListDeclarations
+List specified and included declarations.
.TP 3
-\-XPrintAptRounds
-Print information about initial and recursive \f2apt\fP rounds.
+\-XPrintAptRounds
+Print information about initial and recursive \f2apt\fP rounds.
.TP 3
-\-XPrintFactoryInfo
-Print information about which annotations a factory is asked to process.
+\-XPrintFactoryInfo
+Print information about which annotations a factory is asked to process.
.TP 3
-\-XclassesAsDecls
-Treat both class and source files as declarations to process.
+\-XclassesAsDecls
+Treat both class and source files as declarations to process.
.RE
.LP
@@ -146,8 +146,8 @@ The \f2apt\fP tool and its associated API contained in the package \f2com.sun.mi
.RS 3
.TP 2
o
-javac(1), java(1)
+javac(1), java(1)
.RE
.LP
-
+
diff --git a/jdk/src/bsd/doc/man/extcheck.1 b/jdk/src/bsd/doc/man/extcheck.1
index 750a8e2..6c6894d 100755
--- a/jdk/src/bsd/doc/man/extcheck.1
+++ b/jdk/src/bsd/doc/man/extcheck.1
@@ -19,7 +19,7 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH extcheck 1 "10 May 2011"
+.TH extcheck 1 "16 Mar 2012"
.LP
.SH "Name"
@@ -57,11 +57,11 @@ If the manifest of any jar file in the extensions directory has the same \f2Spec
.LP
.RS 3
.TP 3
-\-verbose
-Lists Jar files in the extension directory as they are checked. Additionally, manifest attributes of the target jar file and any conflicting jar files are also reported.
+\-verbose
+Lists Jar files in the extension directory as they are checked. Additionally, manifest attributes of the target jar file and any conflicting jar files are also reported.
.TP 3
-\-Joption
-Pass \f2option\fP to the Java virtual machine, where \f2option\fP is one of the options described on the reference page for the java(1). For example, \f3\-J\-Xms48m\fP sets the startup memory to 48 megabytes.
+\-Joption
+Pass \f2option\fP to the Java virtual machine, where \f2option\fP is one of the options described on the reference page for the java(1). For example, \f3\-J\-Xms48m\fP sets the startup memory to 48 megabytes.
.RE
.LP
@@ -70,4 +70,4 @@ Pass \f2option\fP to the Java virtual machine, where \f2option\fP is one of the
.LP
jar(1)
.LP
-
+
diff --git a/jdk/src/bsd/doc/man/idlj.1 b/jdk/src/bsd/doc/man/idlj.1
index d73b62a..95b7990 100755
--- a/jdk/src/bsd/doc/man/idlj.1
+++ b/jdk/src/bsd/doc/man/idlj.1
@@ -19,13 +19,13 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH idlj 1 "10 May 2011"
+.TH idlj 1 "16 Mar 2012"
.LP
.SH "Name"
idlj \- The IDL\-to\-Java Compiler
.LP
-\f3idlj\fP generates Java bindings from a given IDL file.
+\f3idlj\fP generates Java bindings from a given IDL file.
.SH "Synopsis"
.LP
.nf
@@ -43,13 +43,13 @@ where \f2idl\-file\fP is the name of a file containing Interface Definition Lang
.SH "Description"
.LP
.LP
-The IDL\-to\-Java Compiler generates the Java bindings for a given IDL file.\ For binding details, see the
+The IDL\-to\-Java Compiler generates the Java bindings for a given IDL file.\ For binding details, see the
.na
\f2OMG IDL to Java Language Language Mapping Specification\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/idl/mapping/jidlMapping.html. Some previous releases of the IDL\-to\-Java compiler were named \f2idltojava\fP.
+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/mapping/jidlMapping.html. Some previous releases of the IDL\-to\-Java compiler were named \f2idltojava\fP.
.LP
-.SS
+.SS
Emitting Client and Server Bindings
.LP
.LP
@@ -106,18 +106,18 @@ There are two possible server\-side models: the Inheritance Model and the Tie De
The default server\-side model is the \f2Portable Servant Inheritance Model\fP. Given an interface \f2My\fP defined in \f2My.idl\fP, the file \f2MyPOA.java\fP is generated. You must provide the implementation for \f2My\fP and it must inherit from \f2MyPOA\fP.
.LP
.LP
-\f2MyPOA.java\fP is a stream\-based skeleton that extends
+\f2MyPOA.java\fP is a stream\-based skeleton that extends
.na
\f2org.omg.PortableServer.Servant\fP @
.fi
-http://download.oracle.com/javase/7/docs/api/org/omg/PortableServer/Servant.html and implements the \f2InvokeHandler\fP interface and the operations interface associated with the IDL interface the skeleton implements.
+http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/Servant.html and implements the \f2InvokeHandler\fP interface and the operations interface associated with the IDL interface the skeleton implements.
.LP
.LP
-The \f2PortableServer\fP module for the
+The \f2PortableServer\fP module for the
.na
\f2Portable Object Adapter (POA)\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/idl/POA.html defines the native \f2Servant\fP type. In the Java programming language, the \f2Servant\fP type is mapped to the Java \f2org.omg.PortableServer.Servant\fP class. It serves as the base class for all POA servant implementations and provides a number of methods that may be invoked by the application programmer, as well as methods which are invoked by the POA itself and may be overridden by the user to control aspects of servant behavior.
+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/POA.html defines the native \f2Servant\fP type. In the Java programming language, the \f2Servant\fP type is mapped to the Java \f2org.omg.PortableServer.Servant\fP class. It serves as the base class for all POA servant implementations and provides a number of methods that may be invoked by the application programmer, as well as methods which are invoked by the POA itself and may be overridden by the user to control aspects of servant behavior.
.LP
.LP
Another option for the Inheritance Model is to use the \f2\-oldImplBase\fP flag in order to generate server\-side bindings that are compatible with versions of the Java programming language prior to J2SE 1.4. Note that using the \f2\-oldImplBase\fP flag is non\-standard: these APIs are being deprecated. You would use this flag ONLY for compatibility with existing servers written in J2SE 1.3. In that case, you would need to modify an existing MAKEFILE to add the \f2\-oldImplBase\fP flag to the \f2idlj\fP compiler, otherwise POA\-based server\-side mappings will be generated. To generate server\-side bindings that are backwards compatible:
@@ -170,7 +170,7 @@ For the interface \f2My\fP, the second command generates \f2MyPOATie.java\fP. Th
.fl
MyServant myDelegate = new MyServant();
.fl
- myDelegate.setORB(orb);
+ myDelegate.setORB(orb);
.fl
.fl
@@ -218,7 +218,7 @@ For the interface \f2My\fP, this will generate \f2My_Tie.java\fP. The constructo
.fl
MyServant myDelegate = new MyServant();
.fl
- myDelegate.setORB(orb);
+ myDelegate.setORB(orb);
.fl
.fl
@@ -236,7 +236,7 @@ For the interface \f2My\fP, this will generate \f2My_Tie.java\fP. The constructo
.fi
.LP
-.SS
+.SS
Specifying Alternate Locations for Emitted Files
.LP
.LP
@@ -253,7 +253,7 @@ idlj \fP\f3\-td /altdir\fP My.idl
.LP
For the interface \f2My\fP, the bindings will be emitted to \f2/altdir/My.java\fP, etc., instead of \f2./My.java\fP.
.LP
-.SS
+.SS
Specifying Alternate Locations for Include Files
.LP
.LP
@@ -291,13 +291,13 @@ includes=/includes;/moreIncludes
.LP
.LP
-The compiler will find this file and read in the includes list. Note that in this example the separator character between the two directories is a semicolon (;). This separator character is platform dependent. On the Windows platform, use a semicolon, on the Unix platform, use a colon, etc. For more information on \f2includes\fP, see the
+The compiler will find this file and read in the includes list. Note that in this example the separator character between the two directories is a semicolon (;). This separator character is platform dependent. On the Windows platform, use a semicolon, on the Unix platform, use a colon, etc. For more information on \f2includes\fP, see the
.na
\f2Setting the Classpath\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/tools/index.html#general.
+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#general.
.LP
-.SS
+.SS
Emitting Bindings for Include Files
.LP
.LP
@@ -469,7 +469,7 @@ Notice that \f2MyOther.java\fP was not generated because it is defined in an imp
.LP
If the \f2\-emitAll\fP flag had been used in the previous example, then all types in all included files would be emitted.
.LP
-.SS
+.SS
Inserting Package Prefixes
.LP
.LP
@@ -525,7 +525,7 @@ PkgPrefix.=
.fi
.LP
-So the line for the above example would be:
+So the line for the above example would be:
.nf
\f3
.fl
@@ -538,7 +538,7 @@ PkgPrefix.Widgets=com.abc
.LP
The use of this option does not affect the Repository ID.
.LP
-.SS
+.SS
Defining Symbols Before Compilation
.LP
.LP
@@ -555,7 +555,7 @@ idlj \fP\f3\-d\fP MYDEF My.idl
.LP
is the equivalent of putting the line \f2#define MYDEF\fP inside \f2My.idl\fP.
.LP
-.SS
+.SS
Preserving Pre\-Existing Bindings
.LP
.LP
@@ -572,7 +572,7 @@ idlj \fP\f3\-keep\fP My.idl
.LP
emits all client\-side bindings that do not already exist.
.LP
-.SS
+.SS
Viewing Progress of Compilation
.LP
.LP
@@ -589,7 +589,7 @@ idlj \fP\f3\-v\fP My.idl
.LP
By default the compiler does not operate in verbose mode.
.LP
-.SS
+.SS
Displaying Version Information
.LP
.LP
@@ -611,8 +611,8 @@ Version information also appears within the bindings generated by the compiler.
.LP
.RS 3
.TP 3
-\-d symbol
-This is equivalent to the following line in an IDL file:
+\-d symbol
+This is equivalent to the following line in an IDL file:
.nf
\f3
.fl
@@ -621,32 +621,32 @@ This is equivalent to the following line in an IDL file:
\fP
.fi
.TP 3
-\-emitAll
-Emit all types, including those found in \f2#include\fP files.
+\-emitAll
+Emit all types, including those found in \f2#include\fP files.
.TP 3
-\-fside
-Defines what bindings to emit. \f2side\fP is one of \f2client\fP, \f2server\fP, \f2serverTIE\fP, \f2all\fP, or \f2allTIE\fP. The \f2\-fserverTIE\fP and \f2\-fallTIE\fP options cause delegate model skeletons to be emitted. Assumes \f2\-fclient\fP if the flag is not specified.
+\-fside
+Defines what bindings to emit. \f2side\fP is one of \f2client\fP, \f2server\fP, \f2serverTIE\fP, \f2all\fP, or \f2allTIE\fP. The \f2\-fserverTIE\fP and \f2\-fallTIE\fP options cause delegate model skeletons to be emitted. Assumes \f2\-fclient\fP if the flag is not specified.
.TP 3
-\-i include\-path
-By default, the current directory is scanned for included files. This option adds another directory.
+\-i include\-path
+By default, the current directory is scanned for included files. This option adds another directory.
.TP 3
-\-keep
-If a file to be generated already exists, do not overwrite it. By default it is overwritten.
+\-keep
+If a file to be generated already exists, do not overwrite it. By default it is overwritten.
.TP 3
-\-noWarn
-Suppresses warning messages.
+\-noWarn
+Suppresses warning messages.
.TP 3
-\-oldImplBase
-Generates skeletons compatible with pre\-1.4 JDK ORBs. By default, the POA Inheritance Model server\-side bindings are generated. This option provides backward\-compatibility with older versions of the Java programming language by generating server\-side bindings that are \f2ImplBase\fP Inheritance Model classes.
+\-oldImplBase
+Generates skeletons compatible with pre\-1.4 JDK ORBs. By default, the POA Inheritance Model server\-side bindings are generated. This option provides backward\-compatibility with older versions of the Java programming language by generating server\-side bindings that are \f2ImplBase\fP Inheritance Model classes.
.TP 3
-\-pkgPrefix type prefix
-Wherever \f2type\fP is encountered at file scope, prefix the generated Java package name with \f2prefix\fP for all files generated for that type. The \f2type\fP is the simple name of either a top\-level module, or an IDL type defined outside of any module.
+\-pkgPrefix type prefix
+Wherever \f2type\fP is encountered at file scope, prefix the generated Java package name with \f2prefix\fP for all files generated for that type. The \f2type\fP is the simple name of either a top\-level module, or an IDL type defined outside of any module.
.TP 3
-\-pkgTranslate type package
+\-pkgTranslate type package
Whenever the module name \f2type\fP is encountered in an identifier, replace it in the identifier with \f2package\fP for all files in the generated Java package. Note that \f2pkgPrefix\fP changes are made first. \f2type\fP is the simple name of either a top\-level module, or an IDL type defined outside of any module, and must match the full package name exactly.
.br
.br
-If more than one translation matches an identifier, the longest match is chosen. For example, if the arguments include:
+If more than one translation matches an identifier, the longest match is chosen. For example, if the arguments include:
.nf
\f3
.fl
@@ -654,7 +654,7 @@ If more than one translation matches an identifier, the longest match is chosen.
.fl
\fP
.fi
-The following translations would occur:
+The following translations would occur:
.nf
\f3
.fl
@@ -668,47 +668,47 @@ foo.baz.bar => buzz.fizz.bar
.fl
\fP
.fi
-The following package names cannot be translated:
+The following package names cannot be translated:
.RS 3
.TP 2
o
-\f2org\fP
+\f2org\fP
.TP 2
o
-\f2org.omg\fP or any subpackages of \f2org.omg\fP
+\f2org.omg\fP or any subpackages of \f2org.omg\fP
.RE
-Any attempt to translate these packages will result in uncompilable code, and the use of these packages as the first argument after \f2\-pkgTranslate\fP will be treated as an error.
+Any attempt to translate these packages will result in uncompilable code, and the use of these packages as the first argument after \f2\-pkgTranslate\fP will be treated as an error.
.TP 3
-\-skeletonName xxx%yyy
-Use \f2xxx%yyy\fP as the pattern for naming the skeleton. The defaults are:
+\-skeletonName xxx%yyy
+Use \f2xxx%yyy\fP as the pattern for naming the skeleton. The defaults are:
.RS 3
.TP 2
o
-%POA for the \f2POA\fP base class (\f2\-fserver\fP or \f2\-fall\fP)
+%POA for the \f2POA\fP base class (\f2\-fserver\fP or \f2\-fall\fP)
.TP 2
o
-_%ImplBase for the \f2oldImplBase\fP class (\f2\-oldImplBase\fP and (\f2\-fserver\fP or \f2\-fall\fP))
+_%ImplBase for the \f2oldImplBase\fP class (\f2\-oldImplBase\fP and (\f2\-fserver\fP or \f2\-fall\fP))
.RE
.TP 3
-\-td dir
-Use \f2dir\fP for the output directory instead of the current directory.
+\-td dir
+Use \f2dir\fP for the output directory instead of the current directory.
.TP 3
-\-tieName xxx%yyy
-Name the tie according to the pattern. The defaults are:
+\-tieName xxx%yyy
+Name the tie according to the pattern. The defaults are:
.RS 3
.TP 2
o
-%POATie for the \f2POA\fP tie base class (\f2\-fserverTie\fP or \f2\-fallTie\fP)
+%POATie for the \f2POA\fP tie base class (\f2\-fserverTie\fP or \f2\-fallTie\fP)
.TP 2
o
-%_Tie for the \f2oldImplBase\fP tie class (\f2\-oldImplBase\fP and (\f2\-fserverTie\fP or \f2\-fallTie\fP))
+%_Tie for the \f2oldImplBase\fP tie class (\f2\-oldImplBase\fP and (\f2\-fserverTie\fP or \f2\-fallTie\fP))
.RE
.TP 3
-\-nowarn, \-verbose
-Verbose mode.
+\-nowarn, \-verbose
+Verbose mode.
.TP 3
-\-version
-Display version information and terminate.
+\-version
+Display version information and terminate.
.RE
.LP
@@ -720,10 +720,10 @@ See the Description section for more option information.
.RS 3
.TP 2
o
-Escaped identifiers in the global scope may not have the same spelling as IDL primitive types, \f2Object\fP, or \f2ValueBase\fP. This is because the symbol table is pre\-loaded with these identifiers; allowing them to be redefined would overwrite their original definitions. (Possible permanent restriction).
+Escaped identifiers in the global scope may not have the same spelling as IDL primitive types, \f2Object\fP, or \f2ValueBase\fP. This is because the symbol table is pre\-loaded with these identifiers; allowing them to be redefined would overwrite their original definitions. (Possible permanent restriction).
.TP 2
o
-The \f2fixed\fP IDL type is not supported.
+The \f2fixed\fP IDL type is not supported.
.RE
.LP
@@ -732,8 +732,8 @@ The \f2fixed\fP IDL type is not supported.
.RS 3
.TP 2
o
-No import generated for global identifiers. If you invoke on an unexported local impl, you do get an exception, but it seems to be due to a \f2NullPointerException\fP in the \f2ServerDelegate\fP DSI code.
+No import generated for global identifiers. If you invoke on an unexported local impl, you do get an exception, but it seems to be due to a \f2NullPointerException\fP in the \f2ServerDelegate\fP DSI code.
.RE
.LP
-
+
diff --git a/jdk/src/bsd/doc/man/jar.1 b/jdk/src/bsd/doc/man/jar.1
index c358280..86977de 100755
--- a/jdk/src/bsd/doc/man/jar.1
+++ b/jdk/src/bsd/doc/man/jar.1
@@ -19,31 +19,31 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH jar 1 "10 May 2011"
+.TH jar 1 "16 Mar 2012"
.LP
.SH "Name"
jar\-The Java Archive Tool
.LP
-\f3jar\fP combines multiple files into a single JAR archive file.
+\f3jar\fP combines multiple files into a single JAR archive file.
.SH "SYNOPSIS"
.LP
.RS 3
.TP 3
-Create jar file
-\f4jar c\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP
+Create jar file
+\f4jar c\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP
.TP 3
-Update jar file
-\f4jar u\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP
+Update jar file
+\f4jar u\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP
.TP 3
-Extract jar file
-\f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP
+Extract jar file
+\f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP
.TP 3
-List table of contents of jar file
-\f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP
+List table of contents of jar file
+\f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP
.TP 3
-Add index to jar file
-\f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP
+Add index to jar file
+\f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP
.RE
.LP
@@ -52,36 +52,36 @@ where:
.LP
.RS 3
.TP 3
-cuxtiv0Mmfe
-Options that control the \f2jar\fP command.
+cuxtiv0Mmfe
+Options that control the \f2jar\fP command.
.TP 3
-jarfile
-Jar file to be created (\f2c\fP), updated (\f2u\fP), extracted (\f2x\fP), or have its table of contents viewed (\f2t\fP). The \f2\-f\fP option and filename \f2jarfile\fP are a pair \-\- if either is present, they must both appear. Note that omitting \f2f\fP and \f2jarfile\fP accepts a "jar file" from standard input (for x and t) or sends the "jar file" to standard output (for c and u).
+jarfile
+Jar file to be created (\f2c\fP), updated (\f2u\fP), extracted (\f2x\fP), or have its table of contents viewed (\f2t\fP). The \f2\-f\fP option and filename \f2jarfile\fP are a pair \-\- if either is present, they must both appear. Note that omitting \f2f\fP and \f2jarfile\fP accepts a "jar file" from standard input (for x and t) or sends the "jar file" to standard output (for c and u).
.TP 3
-inputfiles
-Files or directories, separated by spaces, to be combined into \f2jarfile\fP (for c and u), or to be extracted (for x) or listed (for t) from \f2jarfile\fP. All directories are processed recursively. The files are compressed unless option \f20\fP (zero) is used.
+inputfiles
+Files or directories, separated by spaces, to be combined into \f2jarfile\fP (for c and u), or to be extracted (for x) or listed (for t) from \f2jarfile\fP. All directories are processed recursively. The files are compressed unless option \f20\fP (zero) is used.
.TP 3
-manifest
-Pre\-existing manifest file whose \f2name\fP\f2:\fP \f2value\fP pairs are to be included in MANIFEST.MF in the jar file. The \f2\-m\fP option and filename \f2manifest\fP are a pair \-\- if either is present, they must both appear. The letters \f3m\fP, \f3f\fP and \f3e\fP must appear in the same order that \f2manifest\fP, \f2jarfile\fP, \f2entrypoint\fP appear.
+manifest
+Pre\-existing manifest file whose \f2name\fP\f2:\fP \f2value\fP pairs are to be included in MANIFEST.MF in the jar file. The \f2\-m\fP option and filename \f2manifest\fP are a pair \-\- if either is present, they must both appear. The letters \f3m\fP, \f3f\fP and \f3e\fP must appear in the same order that \f2manifest\fP, \f2jarfile\fP, \f2entrypoint\fP appear.
.TP 3
-entrypoint
-The name of the class that set as the application entry point for stand\-alone applications bundled into executable jar file. The \f2\-e\fP option and entrypoint are a pair \-\- if either is present, they must both appear. The letters \f3m\fP, \f3f\fP and \f3e\fP must appear in the same order that \f2manifest\fP, \f2jarfile\fP, \f2entrypoint\fP appear.
+entrypoint
+The name of the class that set as the application entry point for stand\-alone applications bundled into executable jar file. The \f2\-e\fP option and entrypoint are a pair \-\- if either is present, they must both appear. The letters \f3m\fP, \f3f\fP and \f3e\fP must appear in the same order that \f2manifest\fP, \f2jarfile\fP, \f2entrypoint\fP appear.
.TP 3
-\-C\ dir
-Temporarily changes directories to \f2dir\fP while processing the following \f2inputfiles\fP argument. Multiple \f2\-C\ \fP\f2dir\fP \f2inputfiles\fP sets are allowed.
+\-C\ dir
+Temporarily changes directories to \f2dir\fP while processing the following \f2inputfiles\fP argument. Multiple \f2\-C\ \fP\f2dir\fP \f2inputfiles\fP sets are allowed.
.TP 3
-\-Joption
-Option to be passed into the Java runtime environment. (There must be no space between \f2\-J\fP and \f2option\fP).
+\-Joption
+Option to be passed into the Java runtime environment. (There must be no space between \f2\-J\fP and \f2option\fP).
.RE
.LP
.SH "DESCRIPTION"
.LP
-The \f3jar\fP tool combines multiple files into a single JAR archive file. \f3jar\fP is a general\-purpose archiving and compression tool, based on ZIP and the
+The \f3jar\fP tool combines multiple files into a single JAR archive file. \f3jar\fP is a general\-purpose archiving and compression tool, based on ZIP and the
.na
\f2ZLIB\fP @
.fi
-http://www.gzip.org/zlib/ compression format. However, \f3jar\fP was designed mainly package java applets or applications into a single archive. When the components of an applet or application (files, images and sounds) are combined into a single archive, they can be downloaded by a java agent (like a browser) in a single HTTP transaction, rather than requiring a new connection for each piece. This dramatically improves download times. \f3jar\fP also compresses files and so further improves download time. In addition, it allows individual entries in a file to be signed by the applet author so that their origin can be authenticated. The syntax for the jar tool is almost identical to the syntax for the \f2tar\fP command. A \f3jar\fP archive can be used as a class path entry, whether or not it is compressed.
+http://www.gzip.org/zlib/ compression format. However, \f3jar\fP was designed mainly package java applets or applications into a single archive. When the components of an applet or application (files, images and sounds) are combined into a single archive, they can be downloaded by a java agent (like a browser) in a single HTTP transaction, rather than requiring a new connection for each piece. This dramatically improves download times. \f3jar\fP also compresses files and so further improves download time. In addition, it allows individual entries in a file to be signed by the applet author so that their origin can be authenticated. The syntax for the jar tool is almost identical to the syntax for the \f2tar\fP command. A \f3jar\fP archive can be used as a class path entry, whether or not it is compressed.
.LP
Typical usage to combine files into a jar file is:
.LP
@@ -94,11 +94,11 @@ Typical usage to combine files into a jar file is:
.fi
.LP
-In this example, all the class files in the current directory are placed into the file named \f2myFile.jar\fP. The jar tool automatically generates a manifest file entry named \f2META\-INF/MANIFEST.MF\fP. It is always the first entry in the jar file. The manifest file declares meta\-information about the archive, and stores that data as \f2name\ :\ value\fP pairs. Refer to the
+In this example, all the class files in the current directory are placed into the file named \f2myFile.jar\fP. The jar tool automatically generates a manifest file entry named \f2META\-INF/MANIFEST.MF\fP. It is always the first entry in the jar file. The manifest file declares meta\-information about the archive, and stores that data as \f2name\ :\ value\fP pairs. Refer to the
.na
\f2JAR file specification\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR%20Manifest for details explaining how the jar tool stores meta\-information in the manifest file.
+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR%20Manifest for details explaining how the jar tool stores meta\-information in the manifest file.
.LP
If a jar file should include \f2name\ :\ value\fP pairs contained in an existing manifest file, specify that file using the \f2\-m\fP option:
.LP
@@ -118,7 +118,7 @@ An existing manifest file must end with a new line character.\ \f3jar\fP does n
.br
.LP
-\f3Note:\ \fP A jar command that specifies \f2cfm\fP on the command line instead of \f2cmf\fP (the order of the m and \-f options are reversed), the \f3jar\fP command line must specify the name of the jar archive first, followed by the name of the manifest file:
+\f3Note:\ \fP A jar command that specifies \f2cfm\fP on the command line instead of \f2cmf\fP (the order of the m and \-f options are reversed), the \f3jar\fP command line must specify the name of the jar archive first, followed by the name of the manifest file:
.nf
\f3
.fl
@@ -128,7 +128,7 @@ An existing manifest file must end with a new line character.\ \f3jar\fP does n
.fi
.LP
-The manifest is in a text format inspired by RFC822 ASCII format, so it is easy to view and process manifest\-file contents.
+The manifest is in a text format inspired by RFC822 ASCII format, so it is easy to view and process manifest\-file contents.
.LP
To extract the files from a jar file, use \f2x\fP:
.LP
@@ -154,11 +154,11 @@ To extract individual files from a jar file, supply their filenames:
.LP
.LP
-Beginning with version 1.3 of the JDK, the \f2jar\fP utility supports
+Beginning with version 1.3 of the JDK, the \f2jar\fP utility supports
.na
\f2JarIndex\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Index, which allows application class loaders to load classes more efficiently from jar files. If an application or applet is bundled into multiple jar files,\ only the necessary jar files will be downloaded and opened to load classes. This performance optimization is enabled by running \f2jar\fP with the \f2\-i\fPoption. It will generate package location information for the specified main jar file and all the jar files it depends on, which need to be specified in the \f2Class\-Path\fP attribute of the main jar file's manifest.
+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Index, which allows application class loaders to load classes more efficiently from jar files. If an application or applet is bundled into multiple jar files,\ only the necessary jar files will be downloaded and opened to load classes. This performance optimization is enabled by running \f2jar\fP with the \f2\-i\fPoption. It will generate package location information for the specified main jar file and all the jar files it depends on, which need to be specified in the \f2Class\-Path\fP attribute of the main jar file's manifest.
.LP
.nf
\f3
@@ -188,21 +188,21 @@ To copy directories, first compress files in \f2dir1\fP to \f2stdout\fP, then ex
.LP
.LP
-To review command samples which use \f2jar\fP to opeate on jar files and jar file manifests, see Examples, below. Also refer to the jar trail of the
+To review command samples which use \f2jar\fP to opeate on jar files and jar file manifests, see Examples, below. Also refer to the jar trail of the
.na
\f2Java Tutorial\fP @
.fi
-http://download.oracle.com/javase/tutorial/deployment/jar.
+http://docs.oracle.com/javase/tutorial/deployment/jar.
.LP
.SH "OPTIONS"
.LP
.RS 3
.TP 3
-c
-Creates a new archive file named \f2jarfile\fP (if \f2f\fP is specified) or to standard output (if \f2f\fP and \f2jarfile\fP are omitted). Add to it the files and directories specified by \f2inputfiles\fP.
+c
+Creates a new archive file named \f2jarfile\fP (if \f2f\fP is specified) or to standard output (if \f2f\fP and \f2jarfile\fP are omitted). Add to it the files and directories specified by \f2inputfiles\fP.
.TP 3
-u
-Updates an existing file \f2jarfile\fP (when \f2f\fP is specified) by adding to it files and directories specified by \f2inputfiles\fP. For example:
+u
+Updates an existing file \f2jarfile\fP (when \f2f\fP is specified) by adding to it files and directories specified by \f2inputfiles\fP. For example:
.nf
\f3
.fl
@@ -210,7 +210,7 @@ jar uf foo.jar foo.class
.fl
\fP
.fi
-would add the file \f2foo.class\fP to the existing jar file \f2foo.jar\fP. The \f2\-u\fP option can also update the manifest entry, as given by this example:
+would add the file \f2foo.class\fP to the existing jar file \f2foo.jar\fP. The \f2\-u\fP option can also update the manifest entry, as given by this example:
.nf
\f3
.fl
@@ -218,16 +218,16 @@ jar umf manifest foo.jar
.fl
\fP
.fi
-updates the \f2foo.jar\fP manifest with the \f2name : value\fP pairs in \f2manifest\fP.
+updates the \f2foo.jar\fP manifest with the \f2name : value\fP pairs in \f2manifest\fP.
.TP 3
-x
-Extracts files and directories from \f2jarfile\fP (if \f2f\fP is specified) or standard input (if \f2f\fP and \f2jarfile\fP are omitted). If \f2inputfiles\fP is specified, only those specified files and directories are extracted. Otherwise, all files and directories are extracted. The time and date of the extracted files are those given in the archive.
+x
+Extracts files and directories from \f2jarfile\fP (if \f2f\fP is specified) or standard input (if \f2f\fP and \f2jarfile\fP are omitted). If \f2inputfiles\fP is specified, only those specified files and directories are extracted. Otherwise, all files and directories are extracted. The time and date of the extracted files are those given in the archive.
.TP 3
-t
-Lists the table of contents from \f2jarfile\fP (if \f2f\fP is specified) or standard input (if \f2f\fP and \f2jarfile\fP are omitted). If \f2inputfiles\fP is specified, only those specified files and directories are listed. Otherwise, all files and directories are listed.
+t
+Lists the table of contents from \f2jarfile\fP (if \f2f\fP is specified) or standard input (if \f2f\fP and \f2jarfile\fP are omitted). If \f2inputfiles\fP is specified, only those specified files and directories are listed. Otherwise, all files and directories are listed.
.TP 3
-i
-Generate index information for the specified \f2jarfile\fP and its dependent jar files. For example:
+i
+Generate index information for the specified \f2jarfile\fP and its dependent jar files. For example:
.nf
\f3
.fl
@@ -236,25 +236,25 @@ jar i foo.jar
\fP
.fi
.LP
-would generate an \f2INDEX.LIST\fP file in \f2foo.jar\fP which contains location information for each package in \f2foo.jar\fP and all the jar files specified in the \f2Class\-Path\fP attribute of \f2foo.jar\fP. See the index example.
+would generate an \f2INDEX.LIST\fP file in \f2foo.jar\fP which contains location information for each package in \f2foo.jar\fP and all the jar files specified in the \f2Class\-Path\fP attribute of \f2foo.jar\fP. See the index example.
.TP 3
-f
-Specifies the file \f2jarfile\fP to be created (\f2c\fP), updated (\f2u\fP), extracted (\f2x\fP), indexed (\f2i\fP), or viewed (\f2t\fP). The \f2\-f\fP option and filename \f2jarfile\fP are a pair \-\- if present, they must both appear. Omitting \f2f\fP and \f2jarfile\fP accepts a jar file name from \f2stdin\fP(for x and t) or sends jar file to \f2stdout\fP (for c and u).
+f
+Specifies the file \f2jarfile\fP to be created (\f2c\fP), updated (\f2u\fP), extracted (\f2x\fP), indexed (\f2i\fP), or viewed (\f2t\fP). The \f2\-f\fP option and filename \f2jarfile\fP are a pair \-\- if present, they must both appear. Omitting \f2f\fP and \f2jarfile\fP accepts a jar file name from \f2stdin\fP(for x and t) or sends jar file to \f2stdout\fP (for c and u).
.TP 3
-v
-Generates verbose output to standard output. Examples shown below.
+v
+Generates verbose output to standard output. Examples shown below.
.TP 3
-0
-(zero) Store without using ZIP compression.
+0
+(zero) Store without using ZIP compression.
.TP 3
-M
-Do not create a manifest file entry (for c and u), or delete a manifest file entry if one exists (for u).
+M
+Do not create a manifest file entry (for c and u), or delete a manifest file entry if one exists (for u).
.TP 3
-m
+m
Includes \f2name : value\fP attribute pairs from the specified manifest file \f2manifest\fP in the file at \f2META\-INF/MANIFEST.MF\fP. \f2jar\fP adds a \f2name\ :\ value\fP pair unless an entry already exists with the same name, in which case \f2jar\fP updates its value.
.br
.br
-On the command line, the letters \f3m\fP and \f3f\fP must appear in the same order that \f2manifest\fP and \f2jarfile\fP appear. Example use:
+On the command line, the letters \f3m\fP and \f3f\fP must appear in the same order that \f2manifest\fP and \f2jarfile\fP appear. Example use:
.nf
\f3
.fl
@@ -262,18 +262,18 @@ jar cmf myManifestFile myFile.jar *.class
.fl
\fP
.fi
-You can add special\-purpose \f2name\ :\ value\fP attribute pairs to the manifest that aren't contained in the default manifest. For example, you can add attributes specifying vendor information, version information, package sealing, or to make JAR\-bundled applications executable. See the
+You can add special\-purpose \f2name\ :\ value\fP attribute pairs to the manifest that aren't contained in the default manifest. For example, you can add attributes specifying vendor information, version information, package sealing, or to make JAR\-bundled applications executable. See the
.na
\f2JAR Files\fP @
.fi
-http://download.oracle.com/javase/tutorial/deployment/jar/ trail in the Java Tutorial for examples of using the \f4\-m\fP option.
+http://docs.oracle.com/javase/tutorial/deployment/jar/ trail in the Java Tutorial for examples of using the \f4\-m\fP option.
.TP 3
-e
+e
Sets \f2entrypoint\fP as the application entry point for stand\-alone applications bundled into executable jar file. The use of this option creates or overrides the \f2Main\-Class\fP attribute value in the manifest file. This option can be used during creation of jar file or while updating the jar file. This option specifies the application entry point without editing or creating the manifest file.
.br
.br
.br
-For example, this command creates \f2Main.jar\fP where the \f2Main\-Class\fP attribute value in the manifest is set to \f2Main\fP:
+For example, this command creates \f2Main.jar\fP where the \f2Main\-Class\fP attribute value in the manifest is set to \f2Main\fP:
.nf
\f3
.fl
@@ -281,7 +281,7 @@ jar cfe Main.jar Main Main.class
.fl
\fP
.fi
-The java runtime can directly invoke this application by running the following command:
+The java runtime can directly invoke this application by running the following command:
.nf
\f3
.fl
@@ -289,7 +289,7 @@ java \-jar Main.jar
.fl
\fP
.fi
-If the entrypoint class name is in a package it may use either a dot (".") or slash ("/") character as the delimiter. For example, if \f2Main.class\fP is in a package called \f2foo\fP the entry point can be specified in the following ways:
+If the entrypoint class name is in a package it may use either a dot (".") or slash ("/") character as the delimiter. For example, if \f2Main.class\fP is in a package called \f2foo\fP the entry point can be specified in the following ways:
.nf
\f3
.fl
@@ -297,7 +297,7 @@ jar \-cfe Main.jar foo/Main foo/Main.class
.fl
\fP
.fi
-or
+or
.nf
\f3
.fl
@@ -305,13 +305,13 @@ jar \-cfe Main.jar foo.Main foo/Main.class
.fl
\fP
.fi
-\f3Note:\ \fP specifying both \f2\-m\fP and \f2\-e\fP options together when the given manifest also contains the \f2Main\-Class\fP attribute results in an ambigous \f2Main.class\fP specification, leading to an error and the jar creation or update operation is aborted.
+\f3Note:\ \fP specifying both \f2\-m\fP and \f2\-e\fP options together when the given manifest also contains the \f2Main\-Class\fP attribute results in an ambigous \f2Main.class\fP specification, leading to an error and the jar creation or update operation is aborted.
.TP 3
-\-C\ dir
+\-C\ dir
Temporarily changes directories (\f2cd\fP\ \f2dir\fP) during execution of the \f2jar\fP command while processing the following \f2inputfiles\fP argument. Its operation is intended to be similar to the \f2\-C\fP option of the UNIX \f2tar\fP utility.
.br
.br
-For example, this command changes to the \f2classes\fP directory and adds the \f2bar.class\fP from that directory to \f2foo.jar\fP:
+For example, this command changes to the \f2classes\fP directory and adds the \f2bar.class\fP from that directory to \f2foo.jar\fP:
.nf
\f3
.fl
@@ -319,7 +319,7 @@ jar uf foo.jar \-C classes bar.class
.fl
\fP
.fi
-This command changes to the \f2classes\fP directory and adds to \f2foo.jar\fP all files within the \f2classes\fP directory (without creating a classes directory in the jar file), then changes back to the original directory before changing to the \f2bin\fP directory to add \f2xyz.class\fP to \f2foo.jar\fP.
+This command changes to the \f2classes\fP directory and adds to \f2foo.jar\fP all files within the \f2classes\fP directory (without creating a classes directory in the jar file), then changes back to the original directory before changing to the \f2bin\fP directory to add \f2xyz.class\fP to \f2foo.jar\fP.
.nf
\f3
.fl
@@ -327,7 +327,7 @@ jar uf foo.jar \-C classes . \-C bin xyz.class
.fl
\fP
.fi
-If \f2classes\fP holds files \f2bar1\fP and \f2bar2\fP, then here's what the jar file will contain using \f2jar tf foo.jar\fP:
+If \f2classes\fP holds files \f2bar1\fP and \f2bar2\fP, then here's what the jar file will contain using \f2jar tf foo.jar\fP:
.nf
\f3
.fl
@@ -345,14 +345,14 @@ xyz.class
.fi
.LP
.TP 3
-\-Joption
-Pass \f2option\fP to the Java runtime environment, where \f2option\fP is one of the options described on the reference page for the java application launcher. For example, \f4\-J\-Xmx48M\fP sets the maximum memory to 48 megabytes. It is a common convention for \f2\-J\fP to pass options to the underlying runtime environment.
+\-Joption
+Pass \f2option\fP to the Java runtime environment, where \f2option\fP is one of the options described on the reference page for the java application launcher. For example, \f4\-J\-Xmx48M\fP sets the maximum memory to 48 megabytes. It is a common convention for \f2\-J\fP to pass options to the underlying runtime environment.
.RE
.LP
.SH "COMMAND LINE ARGUMENT FILES"
.LP
-To shorten or simplify the jar command line, you can specify one or more files that themselves contain arguments to the \f2jar\fP command (except \f2\-J\fP options). This enables you to create jar commands of any length, overcoming command line limits imposed by the operating system.
+To shorten or simplify the jar command line, you can specify one or more files that themselves contain arguments to the \f2jar\fP command (except \f2\-J\fP options). This enables you to create jar commands of any length, overcoming command line limits imposed by the operating system.
.LP
An argument file can include options and filenames. The arguments within a file can be space\-separated or newline\-separated. Filenames within an argument file are relative to the current directory, not relative to the location of the argument file. Wildcards (*) that might otherwise be expanded by the operating system shell are not expanded. Use of the \f2@\fP character to recursively interpret files is not supported. The \f2\-J\fP options are not supported because they are passed to the launcher, which does not support argument files.
.LP
@@ -360,7 +360,7 @@ An argument file can include options and filenames. The arguments within a file
When executing \f2jar\fP, pass in the path and name of each argument file with the \f2@\fP leading character. When \f2jar\fP encounters an argument beginning with the character \f2@\fP, it expands the contents of that file into the argument list.
.br
.br
-The example below, \f2classes.list\fP holds the names of files output by a \f2find\fP command:
+The example below, \f2classes.list\fP holds the names of files output by a \f2find\fP command:
.LP
.nf
\f3
@@ -382,7 +382,7 @@ You can then execute the \f2jar\fP command on \f2Classes.list\fP by passing it t
.fi
.LP
-An argument file can specify a path, but any filenames inside the argument file that have relative paths are relative to the current working directory, not to the path passed in. Here is an example:
+An argument file can specify a path, but any filenames inside the argument file that have relative paths are relative to the current working directory, not to the path passed in. Here is an example:
.nf
\f3
.fl
@@ -397,7 +397,7 @@ An argument file can specify a path, but any filenames inside the argument file
.LP
.SH "EXAMPLES"
.LP
-To add all the files in a particular directory to an archive (overwriting contents if the archive already exists). Enumerating verbosely (with the \f2\-v\fP option) will tell you more information about the files in the archive, such as their size and last modified date.
+To add all the files in a particular directory to an archive (overwriting contents if the archive already exists). Enumerating verbosely (with the \f2\-v\fP option) will tell you more information about the files in the archive, such as their size and last modified date.
.nf
\f3
.fl
@@ -435,7 +435,7 @@ adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%)
.fi
.LP
-If you already have separate subdirectories for images, audio files and classes, you can combine them into a single jar file:
+If you already have separate subdirectories for images, audio files and classes, you can combine them into a single jar file:
.nf
\f3
.fl
@@ -481,7 +481,7 @@ audio/ bundle.jar classes/ images/
.fi
.LP
-To see the entry names in the jarfile, use the \f2t\fP option:
+To see the entry names in the jarfile, use the \f2t\fP option:
.nf
\f3
.fl
@@ -526,7 +526,7 @@ If you split the inter\-dependent classes for a stock trade application into thr
.br
.LP
-If you specify the \f2Class\-path\fP attribute in the \f2main.jar\fP manifest as:
+If you specify the \f2Class\-path\fP attribute in the \f2main.jar\fP manifest as:
.nf
\f3
.fl
@@ -536,7 +536,7 @@ Class\-Path: buy.jar sell.jar
.fi
.LP
-then you can use the \f2\-i\fP option to speed up the class loading time for your application:
+then you can use the \f2\-i\fP option to speed up the class loading time for your application:
.nf
\f3
.fl
@@ -546,34 +546,34 @@ then you can use the \f2\-i\fP option to speed up the class loading time for you
.fi
.LP
-An \f2INDEX.LIST\fP file is inserted to the \f2META\-INF\fP directory. This enables the application class loader to download the specified jar files when it is searching for classes or resources.
+An \f2INDEX.LIST\fP file is inserted to the \f2META\-INF\fP directory. This enables the application class loader to download the specified jar files when it is searching for classes or resources.
.SH "SEE ALSO"
.LP
.LP
.na
\f2The Jar Overview\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/jar/jarGuide.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jarGuide.html
.LP
.LP
.na
\f2The Jar File Specification\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/jar/jar.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html
.LP
.LP
.na
\f2The JarIndex Spec\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Index
+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Index
.LP
.LP
.na
\f2Jar Tutorial\fP @
.fi
-http://download.oracle.com/javase/tutorial/deployment/jar/index.html
+http://docs.oracle.com/javase/tutorial/deployment/jar/index.html
.LP
.LP
pack200(1)
.LP
-
+
diff --git a/jdk/src/bsd/doc/man/jarsigner.1 b/jdk/src/bsd/doc/man/jarsigner.1
index 57dd4ed..3e83f60 100755
--- a/jdk/src/bsd/doc/man/jarsigner.1
+++ b/jdk/src/bsd/doc/man/jarsigner.1
@@ -19,7 +19,7 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH jarsigner 1 "10 May 2011"
+.TH jarsigner 1 "16 Mar 2012"
.LP
.SH "Name"
@@ -51,10 +51,10 @@ The \f3jarsigner\fP tool is used for two purposes:
.RS 3
.TP 3
1.
-to sign Java ARchive (JAR) files, and
+to sign Java ARchive (JAR) files, and
.TP 3
2.
-to verify the signatures and integrity of signed JAR files.
+to verify the signatures and integrity of signed JAR files.
.RE
.LP
@@ -67,16 +67,16 @@ A \f2digital signature\fP is a string of bits that is computed from some data (t
.RS 3
.TP 2
o
-Its authenticity can be verified, via a computation that uses the public key corresponding to the private key used to generate the signature.
+Its authenticity can be verified, via a computation that uses the public key corresponding to the private key used to generate the signature.
.TP 2
o
-It cannot be forged, assuming the private key is kept secret.
+It cannot be forged, assuming the private key is kept secret.
.TP 2
o
-It is a function of the data signed and thus can't be claimed to be the signature for other data as well.
+It is a function of the data signed and thus can't be claimed to be the signature for other data as well.
.TP 2
o
-The signed data cannot be changed; if it is, the signature will no longer verify as being authentic.
+The signed data cannot be changed; if it is, the signature will no longer verify as being authentic.
.RE
.LP
@@ -98,7 +98,7 @@ At this time, \f3jarsigner\fP can only sign JAR files created by the SDK jar(1)
.LP
The default \f3jarsigner\fP behavior is to \f2sign\fP a JAR (or zip) file. Use the \f2\-verify\fP option to instead have it \f2verify\fP a signed JAR file.
.LP
-.SS
+.SS
Keystore Aliases
.LP
.LP
@@ -121,7 +121,7 @@ When using \f3jarsigner\fP to sign a JAR file, you must specify the alias for th
.LP
Keystores are protected with a password, so the store password must be specified. You will be prompted for it if you don't specify it on the command line. Similarly, private keys are protected in a keystore with a password, so the private key's password must be specified, and you will be prompted for it if you don't specify it on the command line and it isn't the same as the store password.
.LP
-.SS
+.SS
Keystore Location
.LP
.LP
@@ -130,7 +130,7 @@ Keystore Location
.LP
Note that the input stream from the \f2\-keystore\fP option is passed to the \f2KeyStore.load\fP method. If \f2NONE\fP is specified as the URL, then a null stream is passed to the \f2KeyStore.load\fP method. \f2NONE\fP should be specified if the \f2KeyStore\fP is not file\-based, for example, if it resides on a hardware token device.
.LP
-.SS
+.SS
Keystore Implementation
.LP
.LP
@@ -143,11 +143,11 @@ Currently, there are two command\-line tools that make use of keystore implement
There is a built\-in default implementation, provided by Sun Microsystems. It implements the keystore as a file, utilizing a proprietary keystore type (format) named "JKS". It protects each private key with its individual password, and also protects the integrity of the entire keystore with a (possibly different) password.
.LP
.LP
-Keystore implementations are provider\-based. More specifically, the application interfaces supplied by \f2KeyStore\fP are implemented in terms of a "Service Provider Interface" (SPI). That is, there is a corresponding abstract \f2KeystoreSpi\fP class, also in the \f2java.security\fP package, which defines the Service Provider Interface methods that "providers" must implement. (The term "provider" refers to a package or a set of packages that supply a concrete implementation of a subset of services that can be accessed by the Java Security API.) Thus, to provide a keystore implementation, clients must implement a provider and supply a KeystoreSpi subclass implementation, as described in
+Keystore implementations are provider\-based. More specifically, the application interfaces supplied by \f2KeyStore\fP are implemented in terms of a "Service Provider Interface" (SPI). That is, there is a corresponding abstract \f2KeystoreSpi\fP class, also in the \f2java.security\fP package, which defines the Service Provider Interface methods that "providers" must implement. (The term "provider" refers to a package or a set of packages that supply a concrete implementation of a subset of services that can be accessed by the Java Security API.) Thus, to provide a keystore implementation, clients must implement a provider and supply a KeystoreSpi subclass implementation, as described in
.na
\f2How to Implement a Provider for the Java Cryptography Architecture\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/security/crypto/HowToImplAProvider.html.
+http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/HowToImplAProvider.html.
.LP
.LP
Applications can choose different \f2types\fP of keystore implementations from different providers, using the "getInstance" factory method supplied in the \f2KeyStore\fP class. A keystore type defines the storage and data format of the keystore information, and the algorithms used to protect private keys in the keystore and the integrity of the keystore itself. Keystore implementations of different types are not compatible.
@@ -204,13 +204,13 @@ To have the tools utilize a keystore implementation other than the default, chan
.LP
.LP
-Note that if you us the PKCS#11 provider package, you should refer to the
+Note that if you us the PKCS#11 provider package, you should refer to the
.na
\f2KeyTool and JarSigner\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html#KeyToolJarSigner section of the Java PKCS#11 Reference Guide for details.
+http://docs.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html#KeyToolJarSigner section of the Java PKCS#11 Reference Guide for details.
.LP
-.SS
+.SS
Supported Algorithms
.LP
.LP
@@ -219,13 +219,13 @@ By default, \f3jarsigner\fP signs a JAR file using one of the following:
.RS 3
.TP 2
o
-DSA (Digital Signature Algorithm) with the SHA1 digest algorithm
+DSA (Digital Signature Algorithm) with the SHA1 digest algorithm
.TP 2
o
-RSA algorithm with the SHA256 digest algorithm.
+RSA algorithm with the SHA256 digest algorithm.
.TP 2
o
-EC (Elliptic Curve) cryptography algorithm with the SHA256 with ECDSA (Elliptic Curve Digital Signature Algorithm).
+EC (Elliptic Curve) cryptography algorithm with the SHA256 with ECDSA (Elliptic Curve Digital Signature Algorithm).
.RE
.LP
@@ -235,7 +235,7 @@ That is, if the signer's public and private keys are DSA keys, \f3jarsigner\fP w
.LP
These default signature algorithms can be overridden using the \f2\-sigalg\fP option.
.LP
-.SS
+.SS
The Signed JAR File
.LP
.LP
@@ -244,10 +244,10 @@ When \f3jarsigner\fP is used to sign a JAR file, the output signed JAR file is e
.RS 3
.TP 2
o
-a signature file, with a .SF extension, and
+a signature file, with a .SF extension, and
.TP 2
o
-a signature block file, with a .DSA, .RSA, or .EC extension.
+a signature block file, with a .DSA, .RSA, or .EC extension.
.RE
.LP
@@ -277,13 +277,13 @@ A signature file (the .SF file) looks similar to the manifest file that is alway
.RS 3
.TP 2
o
-the file name,
+the file name,
.TP 2
o
-the name of the digest algorithm used (SHA), and
+the name of the digest algorithm used (SHA), and
.TP 2
o
-a SHA digest value.
+a SHA digest value.
.RE
.LP
@@ -295,8 +295,8 @@ The signature file also, by default, includes a header containing a hash of the
.LP
\f3The Signature Block File\fP
.LP
-The .SF file is signed and the signature is placed in the signature block file. This file also contains, encoded inside it, the certificate or certificate chain from the keystore which authenticates the public key corresponding to the private key used for signing. The file has the extension .DSA, .RSA, or .EC depending on the digest algorithm used.
-.SS
+The .SF file is signed and the signature is placed in the signature block file. This file also contains, encoded inside it, the certificate or certificate chain from the keystore which authenticates the public key corresponding to the private key used for signing. The file has the extension .DSA, .RSA, or .EC depending on the digest algorithm used.
+.SS
Signature Timestamp
.LP
.LP
@@ -305,23 +305,23 @@ Signature Timestamp
.RS 3
.TP 2
o
-\f2\-tsa url\fP
+\f2\-tsa url\fP
.TP 2
o
-\f2\-tsacert alias\fP
+\f2\-tsacert alias\fP
.TP 2
o
-\f2\-altsigner class\fP
+\f2\-altsigner class\fP
.TP 2
o
-\f2\-altsignerpath classpathlist\fP
+\f2\-altsignerpath classpathlist\fP
.RE
.LP
.LP
Each of these options is detailed in the Options section below.
.LP
-.SS
+.SS
JAR File Verification
.LP
.LP
@@ -333,7 +333,7 @@ A successful JAR file verification occurs if the signature(s) are valid, and non
Verify the signature of the .SF file itself.
.br
.br
-That is, the verification ensures that the signature stored in each signature block (.DSA) file was in fact generated using the private key corresponding to the public key whose certificate (or certificate chain) also appears in the .DSA file. It also ensures that the signature is a valid signature of the corresponding signature (.SF) file, and thus the .SF file has not been tampered with.
+That is, the verification ensures that the signature stored in each signature block (.DSA) file was in fact generated using the private key corresponding to the public key whose certificate (or certificate chain) also appears in the .DSA file. It also ensures that the signature is a valid signature of the corresponding signature (.SF) file, and thus the .SF file has not been tampered with.
.TP 3
2.
Verify the digest listed in each entry in the .SF file with each corresponding section in the manifest.
@@ -345,17 +345,17 @@ The .SF file by default includes a header containing a hash of the entire manife
If that is not the case, a less optimized verification is required to ensure that the hash in each source file information section in the .SF file equals the hash of its corresponding section in the manifest file (see The Signature (.SF) File).
.br
.br
-One reason the hash of the manifest file that is stored in the .SF file header may not equal the hash of the current manifest file would be because one or more files were added to the JAR file (using the \f2jar\fP tool) after the signature (and thus the .SF file) was generated. When the \f2jar\fP tool is used to add files, the manifest file is changed (sections are added to it for the new files), but the .SF file is not. A verification is still considered successful if none of the files that were in the JAR file when the signature was generated have been changed since then, which is the case if the hashes in the non\-header sections of the .SF file equal the hashes of the corresponding sections in the manifest file.
+One reason the hash of the manifest file that is stored in the .SF file header may not equal the hash of the current manifest file would be because one or more files were added to the JAR file (using the \f2jar\fP tool) after the signature (and thus the .SF file) was generated. When the \f2jar\fP tool is used to add files, the manifest file is changed (sections are added to it for the new files), but the .SF file is not. A verification is still considered successful if none of the files that were in the JAR file when the signature was generated have been changed since then, which is the case if the hashes in the non\-header sections of the .SF file equal the hashes of the corresponding sections in the manifest file.
.TP 3
3.
-Read each file in the JAR file that has an entry in the .SF file. While reading, compute the file's digest, and then compare the result with the digest for this file in the manifest section. The digests should be the same, or verification fails.
+Read each file in the JAR file that has an entry in the .SF file. While reading, compute the file's digest, and then compare the result with the digest for this file in the manifest section. The digests should be the same, or verification fails.
.RE
.LP
.LP
If any serious verification failures occur during the verification process, the process is stopped and a security exception is thrown. It is caught and displayed by \f3jarsigner\fP.
.LP
-.SS
+.SS
Multiple Signatures for a JAR File
.LP
.LP
@@ -401,22 +401,22 @@ The various \f3jarsigner\fP options are listed and described below. Note:
.RS 3
.TP 2
o
-All option names are preceded by a minus sign (\-).
+All option names are preceded by a minus sign (\-).
.TP 2
o
-The options may be provided in any order.
+The options may be provided in any order.
.TP 2
o
-Items in italics (option values) represent the actual values that must be supplied.
+Items in italics (option values) represent the actual values that must be supplied.
.TP 2
o
-The \f2\-keystore\fP, \f2\-storepass\fP, \f2\-keypass\fP, \f2\-sigfile\fP, \f2\-sigalg\fP, \f2\-digestalg\fP, and \f2\-signedjar\fP options are only relevant when signing a JAR file, not when verifying a signed JAR file. Similarly, an alias is only specified on the command line when signing a JAR file.
+The \f2\-keystore\fP, \f2\-storepass\fP, \f2\-keypass\fP, \f2\-sigfile\fP, \f2\-sigalg\fP, \f2\-digestalg\fP, and \f2\-signedjar\fP options are only relevant when signing a JAR file, not when verifying a signed JAR file. Similarly, an alias is only specified on the command line when signing a JAR file.
.RE
.LP
.RS 3
.TP 3
-\-keystore url
+\-keystore url
Specifies the URL that tells the keystore location. This defaults to the file \f2.keystore\fP in the user's home directory, as determined by the "user.home" system property.
.br
.br
@@ -426,7 +426,7 @@ A keystore is required when signing, so you must explicitly specify one if the d
A keystore is \f2not\fP required when verifying, but if one is specified, or the default exists, and the \f2\-verbose\fP option was also specified, additional information is output regarding whether or not any of the certificates used to verify the JAR file are contained in that keystore.
.br
.br
-Note: the \f2\-keystore\fP argument can actually be a file name (and path) specification rather than a URL, in which case it will be treated the same as a "file:" URL. That is,
+Note: the \f2\-keystore\fP argument can actually be a file name (and path) specification rather than a URL, in which case it will be treated the same as a "file:" URL. That is,
.nf
\f3
.fl
@@ -434,7 +434,7 @@ Note: the \f2\-keystore\fP argument can actually be a file name (and path) speci
.fl
\fP
.fi
-is treated as equivalent to
+is treated as equivalent to
.nf
\f3
.fl
@@ -442,16 +442,16 @@ is treated as equivalent to
.fl
\fP
.fi
-If the Sun PKCS#11 provider has been configured in the \f2java.security\fP security properties file (located in the JRE's \f2$JAVA_HOME/lib/security\fP directory), then keytool and jarsigner can operate on the PKCS#11 token by specifying these options:
+If the Sun PKCS#11 provider has been configured in the \f2java.security\fP security properties file (located in the JRE's \f2$JAVA_HOME/lib/security\fP directory), then keytool and jarsigner can operate on the PKCS#11 token by specifying these options:
.RS 3
.TP 2
o
-\f2\-keystore NONE\fP
+\f2\-keystore NONE\fP
.TP 2
o
-\f2\-storetype PKCS11\fP
+\f2\-storetype PKCS11\fP
.RE
-For example, this command lists the contents of the configured PKCS#11 token:
+For example, this command lists the contents of the configured PKCS#11 token:
.nf
\f3
.fl
@@ -460,113 +460,113 @@ For example, this command lists the contents of the configured PKCS#11 token:
\fP
.fi
.TP 3
-\-storetype storetype
+\-storetype storetype
Specifies the type of keystore to be instantiated. The default keystore type is the one that is specified as the value of the "keystore.type" property in the security properties file, which is returned by the static \f2getDefaultType\fP method in \f2java.security.KeyStore\fP.
.br
.br
-The PIN for a PCKS#11 token can also be specified using the \f2\-storepass\fP option. If none has been specified, keytool and jarsigner will prompt for the token PIN. If the token has a protected authentication path (such as a dedicated PIN\-pad or a biometric reader), then the \f2\-protected\fP option must be specified and no password options can be specified.
+The PIN for a PCKS#11 token can also be specified using the \f2\-storepass\fP option. If none has been specified, keytool and jarsigner will prompt for the token PIN. If the token has a protected authentication path (such as a dedicated PIN\-pad or a biometric reader), then the \f2\-protected\fP option must be specified and no password options can be specified.
.TP 3
-\-storepass[:env | :file] argument
+\-storepass[:env | :file] argument
Specifies the password which is required to access the keystore. This is only needed when signing (not verifying) a JAR file. In that case, if a \f2\-storepass\fP option is not provided at the command line, the user is prompted for the password.
.br
.br
-If the modifier \f2env\fP or \f2file\fP is not specified, then the password has the value \f2argument\fP. Otherwise, the password is retrieved as follows:
+If the modifier \f2env\fP or \f2file\fP is not specified, then the password has the value \f2argument\fP. Otherwise, the password is retrieved as follows:
.RS 3
.TP 2
o
-\f2env\fP: Retrieve the password from the environment variable named \f2argument\fP
+\f2env\fP: Retrieve the password from the environment variable named \f2argument\fP
.TP 2
o
-\f2file\fP: Retrieve the password from the file named \f2argument\fP
+\f2file\fP: Retrieve the password from the file named \f2argument\fP
.RE
-Note: The password shouldn't be specified on the command line or in a script unless it is for testing purposes, or you are on a secure system.
+Note: The password shouldn't be specified on the command line or in a script unless it is for testing purposes, or you are on a secure system.
.TP 3
-\-keypass[:env | :file] argument
+\-keypass[:env | :file] argument
Specifies the password used to protect the private key of the keystore entry addressed by the alias specified on the command line. The password is required when using \f3jarsigner\fP to sign a JAR file. If no password is provided on the command line, and the required password is different from the store password, the user is prompted for it.
.br
.br
-If the modifier \f2env\fP or \f2file\fP is not specified, then the password has the value \f2argument\fP. Otherwise, the password is retrieved as follows:
+If the modifier \f2env\fP or \f2file\fP is not specified, then the password has the value \f2argument\fP. Otherwise, the password is retrieved as follows:
.RS 3
.TP 2
o
-\f2env\fP: Retrieve the password from the environment variable named \f2argument\fP
+\f2env\fP: Retrieve the password from the environment variable named \f2argument\fP
.TP 2
o
-\f2file\fP: Retrieve the password from the file named \f2argument\fP
+\f2file\fP: Retrieve the password from the file named \f2argument\fP
.RE
-Note: The password shouldn't be specified on the command line or in a script unless it is for testing purposes, or you are on a secure system.
+Note: The password shouldn't be specified on the command line or in a script unless it is for testing purposes, or you are on a secure system.
.TP 3
-\-sigfile file
+\-sigfile file
Specifies the base file name to be used for the generated .SF and .DSA files. For example, if \f2file\fP is "DUKESIGN", the generated .SF and .DSA files will be named "DUKESIGN.SF" and "DUKESIGN.DSA", and will be placed in the "META\-INF" directory of the signed JAR file.
.br
.br
The characters in \f2file\fP must come from the set "a\-zA\-Z0\-9_\-". That is, only letters, numbers, underscore, and hyphen characters are allowed. Note: All lowercase characters will be converted to uppercase for the .SF and .DSA file names.
.br
.br
-If no \f2\-sigfile\fP option appears on the command line, the base file name for the .SF and .DSA files will be the first 8 characters of the alias name specified on the command line, all converted to upper case. If the alias name has fewer than 8 characters, the full alias name is used. If the alias name contains any characters that are not legal in a signature file name, each such character is converted to an underscore ("_") character in forming the file name.
+If no \f2\-sigfile\fP option appears on the command line, the base file name for the .SF and .DSA files will be the first 8 characters of the alias name specified on the command line, all converted to upper case. If the alias name has fewer than 8 characters, the full alias name is used. If the alias name contains any characters that are not legal in a signature file name, each such character is converted to an underscore ("_") character in forming the file name.
.TP 3
-\-sigalg algorithm
+\-sigalg algorithm
Specifies the name of the signature algorithm to use to sign the JAR file.
.br
.br
-See
+See
.na
\f2Appendix A\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA of the Java Cryptography Architecture for a list of standard signature algorithm names. This algorithm must be compatible with the private key used to sign the JAR file. If this option is not specified, SHA1withDSA, SHA256withRSA, or SHA256withECDSA will be used depending on the type of private key. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the \f2\-providerClass\fP option, otherwise the command will not succeed.
+http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA of the Java Cryptography Architecture for a list of standard signature algorithm names. This algorithm must be compatible with the private key used to sign the JAR file. If this option is not specified, SHA1withDSA, SHA256withRSA, or SHA256withECDSA will be used depending on the type of private key. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the \f2\-providerClass\fP option, otherwise the command will not succeed.
.TP 3
-\-digestalg algorithm
+\-digestalg algorithm
Specifies the name of the message digest algorithm to use when digesting the entries of a jar file.
.br
.br
-See
+See
.na
\f2Appendix A\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA of the Java Cryptography Architecture for a list of standard message digest algorithm names. If this option is not specified, SHA256 will be used. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the \f2\-providerClass\fP option, otherwise the command will not succeed.
+http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA of the Java Cryptography Architecture for a list of standard message digest algorithm names. If this option is not specified, SHA256 will be used. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the \f2\-providerClass\fP option, otherwise the command will not succeed.
.TP 3
-\-signedjar file
+\-signedjar file
Specifies the name to be used for the signed JAR file.
.br
.br
-If no name is specified on the command line, the name used is the same as the input JAR file name (the name of the JAR file to be signed); in other words, that file is overwritten with the signed JAR file.
+If no name is specified on the command line, the name used is the same as the input JAR file name (the name of the JAR file to be signed); in other words, that file is overwritten with the signed JAR file.
.TP 3
-\-verify
+\-verify
If this appears on the command line, the specified JAR file will be verified, not signed. If the verification is successful, "jar verified" will be displayed. If you try to verify an unsigned JAR file, or a JAR file signed with an unsupported algorithm (e.g., RSA when you don't have an RSA provider installed), the following is displayed: "jar is unsigned. (signatures missing or not parsable)"
.br
.br
It is possible to verify JAR files signed using either \f3jarsigner\fP or the JDK 1.1 \f3javakey\fP tool, or both.
.br
.br
-For further information on verification, see JAR File Verification.
+For further information on verification, see JAR File Verification.
.TP 3
-\-certs
-If this appears on the command line, along with the \f2\-verify\fP and \f2\-verbose\fP options, the output includes certificate information for each signer of the JAR file. This information includes
+\-certs
+If this appears on the command line, along with the \f2\-verify\fP and \f2\-verbose\fP options, the output includes certificate information for each signer of the JAR file. This information includes
.RS 3
.TP 2
o
-the name of the type of certificate (stored in the .DSA file) that certifies the signer's public key
+the name of the type of certificate (stored in the .DSA file) that certifies the signer's public key
.TP 2
o
-if the certificate is an X.509 certificate (more specifically, an instance of \f2java.security.cert.X509Certificate\fP): the distinguished name of the signer
+if the certificate is an X.509 certificate (more specifically, an instance of \f2java.security.cert.X509Certificate\fP): the distinguished name of the signer
.RE
-The keystore is also examined. If no keystore value is specified on the command line, the default keystore file (if any) will be checked. If the public key certificate for a signer matches an entry in the keystore, then the following information will also be displayed:
+The keystore is also examined. If no keystore value is specified on the command line, the default keystore file (if any) will be checked. If the public key certificate for a signer matches an entry in the keystore, then the following information will also be displayed:
.RS 3
.TP 2
o
-in parentheses, the alias name for the keystore entry for that signer. If the signer actually comes from a JDK 1.1 identity database instead of from a keystore, the alias name will appear in brackets instead of parentheses.
+in parentheses, the alias name for the keystore entry for that signer. If the signer actually comes from a JDK 1.1 identity database instead of from a keystore, the alias name will appear in brackets instead of parentheses.
.RE
.TP 3
-\-certchain file
-Specifies the certificate chain to be used, if the certificate chain associated with the private key of the keystore entry, addressed by the alias specified on the command line, is not complete. This may happen if the keystore is located on a hardware token where there is not enough capacity to hold a complete certificate chain. The file can be a sequence of X.509 certificates concatenated together, or a single PKCS#7 formatted data block, either in binary encoding format or in printable encoding format (also known as BASE64 encoding) as defined by the Internet RFC 1421 standard.
+\-certchain file
+Specifies the certificate chain to be used, if the certificate chain associated with the private key of the keystore entry, addressed by the alias specified on the command line, is not complete. This may happen if the keystore is located on a hardware token where there is not enough capacity to hold a complete certificate chain. The file can be a sequence of X.509 certificates concatenated together, or a single PKCS#7 formatted data block, either in binary encoding format or in printable encoding format (also known as BASE64 encoding) as defined by the Internet RFC 1421 standard.
.TP 3
-\-verbose
-If this appears on the command line, it indicates "verbose" mode, which causes \f3jarsigner\fP to output extra information as to the progress of the JAR signing or verification.
+\-verbose
+If this appears on the command line, it indicates "verbose" mode, which causes \f3jarsigner\fP to output extra information as to the progress of the JAR signing or verification.
.TP 3
-\-internalsf
-In the past, the .DSA (signature block) file generated when a JAR file was signed used to include a complete encoded copy of the .SF file (signature file) also generated. This behavior has been changed. To reduce the overall size of the output JAR file, the .DSA file by default doesn't contain a copy of the .SF file anymore. But if \f2\-internalsf\fP appears on the command line, the old behavior is utilized. \f3This option is mainly useful for testing; in practice, it should not be used, since doing so eliminates a useful optimization.\fP
+\-internalsf
+In the past, the .DSA (signature block) file generated when a JAR file was signed used to include a complete encoded copy of the .SF file (signature file) also generated. This behavior has been changed. To reduce the overall size of the output JAR file, the .DSA file by default doesn't contain a copy of the .SF file anymore. But if \f2\-internalsf\fP appears on the command line, the old behavior is utilized. \f3This option is mainly useful for testing; in practice, it should not be used, since doing so eliminates a useful optimization.\fP
.TP 3
-\-sectionsonly
+\-sectionsonly
If this appears on the command line, the .SF file (signature file) generated when a JAR file is signed does \f2not\fP include a header containing a hash of the whole manifest file. It just contains information and hashes related to each individual source file included in the JAR file, as described in The Signature (.SF) File .
.br
.br
@@ -576,84 +576,84 @@ By default, this header is added, as an optimization. When the header is present
For further information, see JAR File Verification.
.br
.br
-\f3This option is mainly useful for testing; in practice, it should not be used, since doing so eliminates a useful optimization.\fP
+\f3This option is mainly useful for testing; in practice, it should not be used, since doing so eliminates a useful optimization.\fP
.TP 3
-\-protected
-Either \f2true\fP or \f2false\fP. This value should be specified as \f2true\fP if a password must be given via a protected authentication path such as a dedicated PIN reader.
+\-protected
+Either \f2true\fP or \f2false\fP. This value should be specified as \f2true\fP if a password must be given via a protected authentication path such as a dedicated PIN reader.
.TP 3
-\-providerClass provider\-class\-name
+\-providerClass provider\-class\-name
Used to specify the name of cryptographic service provider's master class file when the service provider is not listed in the security properties file, \f2java.security\fP.
.br
.br
-Used in conjunction with the \f2\-providerArg\fP \f2ConfigFilePath\fP option, keytool and jarsigner will install the provider dynamically (where \f2ConfigFilePath\fP is the path to the token configuration file). Here's an example of a command to list a PKCS#11 keystore when the Sun PKCS#11 provider has not been configured in the security properties file.
+Used in conjunction with the \f2\-providerArg\fP \f2ConfigFilePath\fP option, keytool and jarsigner will install the provider dynamically (where \f2ConfigFilePath\fP is the path to the token configuration file). Here's an example of a command to list a PKCS#11 keystore when the Sun PKCS#11 provider has not been configured in the security properties file.
.nf
\f3
.fl
-jarsigner \-keystore NONE \-storetype PKCS11 \\
+jarsigner \-keystore NONE \-storetype PKCS11 \\
.fl
- \-providerClass sun.security.pkcs11.SunPKCS11 \\
+ \-providerClass sun.security.pkcs11.SunPKCS11 \\
.fl
- \-providerArg /foo/bar/token.config \\
+ \-providerArg /foo/bar/token.config \\
.fl
\-list
.fl
\fP
.fi
.TP 3
-\-providerName providerName
+\-providerName providerName
If more than one provider has been configured in the \f2java.security\fP security properties file, you can use the \f2\-providerName\fP option to target a specific provider instance. The argument to this option is the name of the provider.
.br
.br
-For the Sun PKCS#11 provider, \f2providerName\fP is of the form \f2SunPKCS11\-\fP\f2TokenName\fP, where \f2TokenName\fP is the name suffix that the provider instance has been configured with, as detailed in the
+For the Sun PKCS#11 provider, \f2providerName\fP is of the form \f2SunPKCS11\-\fP\f2TokenName\fP, where \f2TokenName\fP is the name suffix that the provider instance has been configured with, as detailed in the
.na
\f2configuration attributes table\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html#ATTRS. For example, the following command lists the contents of the PKCS#11 keystore provider instance with name suffix \f2SmartCard\fP:
+http://docs.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html#ATTRS. For example, the following command lists the contents of the PKCS#11 keystore provider instance with name suffix \f2SmartCard\fP:
.nf
\f3
.fl
-jarsigner \-keystore NONE \-storetype PKCS11 \\
+jarsigner \-keystore NONE \-storetype PKCS11 \\
.fl
- \-providerName SunPKCS11\-SmartCard \\
+ \-providerName SunPKCS11\-SmartCard \\
.fl
\-list
.fl
\fP
.fi
.TP 3
-\-Jjavaoption
-Passes through the specified \f2javaoption\fP string directly to the Java interpreter. (\f3jarsigner\fP is actually a "wrapper" around the interpreter.) This option should not contain any spaces. It is useful for adjusting the execution environment or memory usage. For a list of possible interpreter options, type \f2java \-h\fP or \f2java \-X\fP at the command line.
+\-Jjavaoption
+Passes through the specified \f2javaoption\fP string directly to the Java interpreter. (\f3jarsigner\fP is actually a "wrapper" around the interpreter.) This option should not contain any spaces. It is useful for adjusting the execution environment or memory usage. For a list of possible interpreter options, type \f2java \-h\fP or \f2java \-X\fP at the command line.
.TP 3
-\-tsa url
+\-tsa url
If \f2"\-tsa http://example.tsa.url"\fP appears on the command line when signing a JAR file then a timestamp is generated for the signature. The URL, \f2http://example.tsa.url\fP, identifies the location of the Time Stamping Authority (TSA). It overrides any URL found via the \f2\-tsacert\fP option. The \f2\-tsa\fP option does not require the TSA's public key certificate to be present in the keystore.
.br
.br
-To generate the timestamp, \f2jarsigner\fP communicates with the TSA using the Time\-Stamp Protocol (TSP) defined in
+To generate the timestamp, \f2jarsigner\fP communicates with the TSA using the Time\-Stamp Protocol (TSP) defined in
.na
\f2RFC 3161\fP @
.fi
-http://www.ietf.org/rfc/rfc3161.txt. If successful, the timestamp token returned by the TSA is stored along with the signature in the signature block file.
+http://www.ietf.org/rfc/rfc3161.txt. If successful, the timestamp token returned by the TSA is stored along with the signature in the signature block file.
.TP 3
-\-tsacert alias
+\-tsacert alias
If \f2"\-tsacert alias"\fP appears on the command line when signing a JAR file then a timestamp is generated for the signature. The \f2alias\fP identifies the TSA's public key certificate in the keystore that is currently in effect. The entry's certificate is examined for a Subject Information Access extension that contains a URL identifying the location of the TSA.
.br
.br
-The TSA's public key certificate must be present in the keystore when using \f2\-tsacert\fP.
+The TSA's public key certificate must be present in the keystore when using \f2\-tsacert\fP.
.TP 3
-\-altsigner class
+\-altsigner class
Specifies that an alternative signing mechanism be used. The fully\-qualified class name identifies a class file that extends the \f2com.sun.jarsigner.ContentSigner abstract class\fP. The path to this class file is defined by the \f2\-altsignerpath\fP option. If the \f2\-altsigner\fP option is used, \f2jarsigner\fP uses the signing mechanism provided by the specified class. Otherwise, \f2jarsigner\fP uses its default signing mechanism.
.br
.br
-For example, to use the signing mechanism provided by a class named \f2com.sun.sun.jarsigner.AuthSigner\fP, use the \f2jarsigner\fP option \f2"\-altsigner com.sun.jarsigner.AuthSigner"\fP
+For example, to use the signing mechanism provided by a class named \f2com.sun.sun.jarsigner.AuthSigner\fP, use the \f2jarsigner\fP option \f2"\-altsigner com.sun.jarsigner.AuthSigner"\fP
.TP 3
-\-altsignerpath classpathlist
+\-altsignerpath classpathlist
Specifies the path to the class file (the class file name is specified with the \f2\-altsigner\fP option described above) and any JAR files it depends on. If the class file is in a JAR file, then this specifies the path to that JAR file, as shown in the example below.
.br
.br
An absolute path or a path relative to the current directory may be specified. If \f2classpathlist\fP contains multiple paths or JAR files, they should be separated with a colon (\f2:\fP) on Solaris and a semi\-colon (\f2;\fP) on Windows. This option is not necessary if the class is already in the search path.
.br
.br
-Example of specifying the path to a jar file that contains the class file:
+Example of specifying the path to a jar file that contains the class file:
.nf
\f3
.fl
@@ -664,7 +664,7 @@ Example of specifying the path to a jar file that contains the class file:
Note that the JAR file name is included.
.br
.br
-Example of specifying the path to the jar file that contains the class file:
+Example of specifying the path to the jar file that contains the class file:
.nf
\f3
.fl
@@ -672,19 +672,19 @@ Example of specifying the path to the jar file that contains the class file:
.fl
\fP
.fi
-Note that the JAR file name is omitted.
+Note that the JAR file name is omitted.
.TP 3
-\-strict
-During the signing or verifying process, some warning messages may be shown. If this option appears on the command line, the exit code of the tool will reflect the warning messages that are found. Read the "WARNINGS" section for details.
+\-strict
+During the signing or verifying process, some warning messages may be shown. If this option appears on the command line, the exit code of the tool will reflect the warning messages that are found. Read the "WARNINGS" section for details.
.TP 3
-\-verbose:sub\-options
-For the verifying process, the \f2\-verbose\fP option takes sub\-options to determine how much information will be shown. If \f2\-certs\fP is also specified, the default mode (or sub\-option all) displays each entry as it is being processed and following that, the certificate information for each signer of the JAR file. If \f2\-certs\fP and the \f2\-verbose:grouped\fP sub\-option are specified, entries with the same signer info are grouped and displayed together along with their certificate information. If \f2\-certs\fP and the \f2\-verbose:summary\fP sub\-option are specified, then entries with the same signer info are grouped and displayed together along with their certificate information but details about each entry are summarized and displayed as "one entry (and more)". See the examples section for more information.
+\-verbose:sub\-options
+For the verifying process, the \f2\-verbose\fP option takes sub\-options to determine how much information will be shown. If \f2\-certs\fP is also specified, the default mode (or sub\-option all) displays each entry as it is being processed and following that, the certificate information for each signer of the JAR file. If \f2\-certs\fP and the \f2\-verbose:grouped\fP sub\-option are specified, entries with the same signer info are grouped and displayed together along with their certificate information. If \f2\-certs\fP and the \f2\-verbose:summary\fP sub\-option are specified, then entries with the same signer info are grouped and displayed together along with their certificate information but details about each entry are summarized and displayed as "one entry (and more)". See the examples section for more information.
.RE
.LP
.SH "EXAMPLES"
.LP
-.SS
+.SS
Signing a JAR File
.LP
.LP
@@ -742,7 +742,7 @@ Finally, if you want the signed JAR file to simply overwrite the input JAR file
.fi
.LP
-.SS
+.SS
Verifying a Signed JAR File
.LP
.LP
@@ -808,7 +808,7 @@ You can get more information if you use the \f2\-verbose\fP option. A sample use
.fi
.LP
-.SS
+.SS
Verification with Certificate Information
.LP
.LP
@@ -867,7 +867,7 @@ If the certificate for a signer is not an X.509 certificate, there is no disting
.fi
.LP
-.SS
+.SS
Verification of a JAR File that Includes Identity Database Signers
.LP
.LP
@@ -924,7 +924,7 @@ Note that the alias "duke" is in brackets to denote that it is an identity datab
.LP
.SH "WARNINGS"
.LP
-During the signing/verifying process, jarsigner may display various warnings. These warning codes are defined as follows:
+During the signing/verifying process, jarsigner may display various warnings. These warning codes are defined as follows:
.nf
\f3
.fl
@@ -1011,7 +1011,7 @@ failure 1
.fi
.LP
-.SS
+.SS
Compatibility with JDK 1.1
.LP
.LP
@@ -1023,13 +1023,13 @@ The new keystore architecture replaces the identity database that \f3javakey\fP
.RS 3
.TP 2
o
-It is possible to import the information from an identity database into a keystore, via the \f3keytool\fP \f2\-identitydb\fP command.
+It is possible to import the information from an identity database into a keystore, via the \f3keytool\fP \f2\-identitydb\fP command.
.TP 2
o
-\f3jarsigner\fP can sign JAR files also previously signed using \f3javakey\fP.
+\f3jarsigner\fP can sign JAR files also previously signed using \f3javakey\fP.
.TP 2
o
-\f3jarsigner\fP can verify JAR files signed using \f3javakey\fP. Thus, it recognizes and can work with signer aliases that are from a JDK 1.1 identity database rather than a Java 2 SDK keystore.
+\f3jarsigner\fP can verify JAR files signed using \f3javakey\fP. Thus, it recognizes and can work with signer aliases that are from a JDK 1.1 identity database rather than a Java 2 SDK keystore.
.RE
.LP
@@ -1037,6 +1037,7 @@ o
The following table explains how JAR files that were signed in JDK 1.1.x are treated in the Java 2 platform.
.LP
.LP
+.TS
.if \n+(b.=1 .nr d. \n(.c-\n(c.-1
.de 35
.ps \n(.s
@@ -1361,7 +1362,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.ne \n(b|u+\n(.Vu
.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v)
.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f3JAR File Type\fP\h'|\n(41u'\f3Identity in 1.1 database\fP\h'|\n(42u'\h'|\n(43u'\h'|\n(44u'\f3Privileges Granted\fP
@@ -1384,7 +1385,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.sp |\n(31u
.ne \n(c|u+\n(.Vu
.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'NO\h'|\n(42u'NO\h'|\n(43u'NO\h'|\n(44u'
@@ -1400,7 +1401,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.sp |\n(31u
.ne \n(d|u+\n(.Vu
.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Unsigned JAR\h'|\n(41u'NO\h'|\n(42u'NO\h'|\n(43u'NO\h'|\n(44u'
@@ -1416,7 +1417,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.sp |\n(31u
.ne \n(e|u+\n(.Vu
.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'NO\h'|\n(42u'YES\h'|\n(43u'NO\h'|\n(44u'
@@ -1432,7 +1433,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.sp |\n(31u
.ne \n(f|u+\n(.Vu
.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Untrusted\h'|\n(42u'NO\h'|\n(43u'NO\h'|\n(44u'
@@ -1448,7 +1449,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.sp |\n(31u
.ne \n(g|u+\n(.Vu
.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Untrusted\h'|\n(42u'NO\h'|\n(43u'YES\h'|\n(44u'
@@ -1464,7 +1465,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.sp |\n(31u
.ne \n(h|u+\n(.Vu
.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'NO\h'|\n(42u'YES\h'|\n(43u'YES\h'|\n(44u'
@@ -1480,7 +1481,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.sp |\n(31u
.ne \n(i|u+\n(.Vu
.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Trusted\h'|\n(42u'YES\h'|\n(43u'YES\h'|\n(44u'
@@ -1494,15 +1495,15 @@ Default privileges granted to all code plus privileges granted in policy file. (
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Trusted\h'|\n(42u'NO\h'|\n(43u'NO\h'|\n(44u'All privileges
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Trusted\h'|\n(42u'YES\h'|\n(43u'NO\h'|\n(44u'All privileges (1)
-.ta \n(80u \n(81u \n(82u \n(83u \n(84u
+.ta \n(80u \n(81u \n(82u \n(83u \n(84u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Trusted\h'|\n(42u'NO\h'|\n(43u'YES\h'|\n(44u'All privileges (1)
@@ -1519,6 +1520,7 @@ Default privileges granted to all code plus privileges granted in policy file. (
.rm g+
.rm h+
.rm i+
+.TE
.if \n-(b.=0 .nr c. \n(.c-\n(d.-42
.LP
@@ -1528,16 +1530,16 @@ Notes:
.RS 3
.TP 3
1.
-If an identity/alias is mentioned in the policy file, it must be imported into the keystore for the policy file to have any effect on privileges granted.
+If an identity/alias is mentioned in the policy file, it must be imported into the keystore for the policy file to have any effect on privileges granted.
.TP 3
2.
-The policy file/keystore combination has precedence over a trusted identity in the identity database.
+The policy file/keystore combination has precedence over a trusted identity in the identity database.
.TP 3
3.
-Untrusted identities are ignored in the Java 2 platform.
+Untrusted identities are ignored in the Java 2 platform.
.TP 3
4.
-Only trusted identities can be imported into Java 2 SDK keystores.
+Only trusted identities can be imported into Java 2 SDK keystores.
.RE
.LP
@@ -1546,22 +1548,22 @@ Only trusted identities can be imported into Java 2 SDK keystores.
.RS 3
.TP 2
o
-jar(1) tool documentation
+jar(1) tool documentation
.TP 2
o
-keytool(1) tool documentation
+keytool(1) tool documentation
.TP 2
o
-the
+the
.na
\f4Security\fP @
.fi
-http://download.oracle.com/javase/tutorial/security/index.html trail of the
+http://docs.oracle.com/javase/tutorial/security/index.html trail of the
.na
\f4Java Tutorial\fP @
.fi
-http://download.oracle.com/javase/tutorial/index.html for examples of the use of the \f3jarsigner\fP tool
+http://docs.oracle.com/javase/tutorial/index.html for examples of the use of the \f3jarsigner\fP tool
.RE
.LP
-
+
diff --git a/jdk/src/bsd/doc/man/java.1 b/jdk/src/bsd/doc/man/java.1
index 1092b70..3a58c93 100755
--- a/jdk/src/bsd/doc/man/java.1
+++ b/jdk/src/bsd/doc/man/java.1
@@ -1,4 +1,4 @@
-." Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved.
+." Copyright (c) 1994, 2012, Oracle and/or its affiliates. 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
@@ -19,7 +19,7 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH java 1 "10 May 2011"
+.TH java 1 "20 Mar 2012"
.LP
.SH "Name"
@@ -39,17 +39,17 @@ java \- the Java application launcher
.LP
.RS 3
.TP 3
-options
-Command\-line options.
+options
+Command\-line options.
.TP 3
-class
-Name of the class to be invoked.
+class
+Name of the class to be invoked.
.TP 3
-file.jar
-Name of the jar file to be invoked. Used only with \f2\-jar\fP.
+file.jar
+Name of the jar file to be invoked. Used only with \f2\-jar\fP.
.TP 3
-argument
-Argument passed to the \f3main\fP function.
+argument
+Argument passed to the \f3main\fP function.
.RE
.LP
@@ -88,27 +88,27 @@ The launcher has a set of standard options that are supported on the current run
.LP
.RS 3
.TP 3
-\-client
+\-client
Select the Java HotSpot Client VM. A 64\-bit capable jdk currently ignores this option and instead uses the Java Hotspot Server VM.
.br
.br
-For default VM selection, see
+For default VM selection, see
.na
\f2Server\-Class Machine Detection\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/vm/server\-class.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server\-class.html
.TP 3
-\-server
+\-server
Select the Java HotSpot Server VM. On a 64\-bit capable jdk only the Java Hotspot Server VM is supported so the \-server option is implicit.
.br
.br
-For default VM selection, see
+For default VM selection, see
.na
\f2Server\-Class Machine Detection\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/vm/server\-class.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server\-class.html
.TP 3
-\-agentlib:libname[=options]
+\-agentlib:libname[=options]
Load native agent library \f2libname\fP, e.g.
.br
.br
@@ -121,151 +121,160 @@ Load native agent library \f2libname\fP, e.g.
\-agentlib:hprof=help
.br
.br
-For more information, see
+For more information, see
.na
\f2JVMTI Agent Command Line Options\fP @
.fi
-http://download.oracle.com/javase/7/docs/platform/jvmti/jvmti.html#starting.
+http://docs.oracle.com/javase/7/docs/platform/jvmti/jvmti.html#starting.
.TP 3
-\-agentpath:pathname[=options]
-Load a native agent library by full pathname. For more information, see
+\-agentpath:pathname[=options]
+Load a native agent library by full pathname. For more information, see
.na
\f2JVMTI Agent Command Line Options\fP @
.fi
-http://download.oracle.com/javase/7/docs/platform/jvmti/jvmti.html#starting.
+http://docs.oracle.com/javase/7/docs/platform/jvmti/jvmti.html#starting.
.TP 3
-\-classpath classpath
+\-classpath classpath
.TP 3
-\-cp classpath
+\-cp classpath
Specify a list of directories, JAR archives, and ZIP archives to search for class files. Class path entries are separated by colons (\f3:\fP). Specifying \f3\-classpath\fP or \f3\-cp\fP overrides any setting of the \f3CLASSPATH\fP environment variable.
.br
.br
-If \f3\-classpath\fP and \f3\-cp\fP are not used and \f3CLASSPATH\fP is not set, the user class path consists of the current directory (\f4.\fP).
+If \f3\-classpath\fP and \f3\-cp\fP are not used and \f3CLASSPATH\fP is not set, the user class path consists of the current directory (\f4.\fP).
.br
.br
As a special convenience, a class path element containing a basename of \f2*\fP is considered equivalent to specifying a list of all the files in the directory with the extension \f2.jar\fP or \f2.JAR\fP (a java program cannot tell the difference between the two invocations).
.br
.br
-For example, if directory \f2foo\fP contains \f2a.jar\fP and \f2b.JAR\fP, then the class path element \f2foo/*\fP is expanded to a \f2A.jar:b.JAR\fP, except that the order of jar files is unspecified. All jar files in the specified directory, even hidden ones, are included in the list. A classpath entry consisting simply of \f2*\fP expands to a list of all the jar files in the current directory. The \f2CLASSPATH\fP environment variable, where defined, will be similarly expanded. Any classpath wildcard expansion occurs before the Java virtual machine is started \-\- no Java program will ever see unexpanded wildcards except by querying the environment. For example; by invoking \f2System.getenv("CLASSPATH")\fP.
+For example, if directory \f2foo\fP contains \f2a.jar\fP and \f2b.JAR\fP, then the class path element \f2foo/*\fP is expanded to a \f2A.jar:b.JAR\fP, except that the order of jar files is unspecified. All jar files in the specified directory, even hidden ones, are included in the list. A classpath entry consisting simply of \f2*\fP expands to a list of all the jar files in the current directory. The \f2CLASSPATH\fP environment variable, where defined, will be similarly expanded. Any classpath wildcard expansion occurs before the Java virtual machine is started \-\- no Java program will ever see unexpanded wildcards except by querying the environment. For example; by invoking \f2System.getenv("CLASSPATH")\fP.
.br
.br
-For more information on class paths, see
+For more information on class paths, see
.na
\f2Setting the Class Path\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/tools/index.html#classpath.
+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#classpath.
.TP 3
-\-Dproperty=value
-Set a system property value.
+\-Dproperty=value
+Set a system property value.
.TP 3
-\-d32
+\-d32
.TP 3
-\-d64
+\-d64
Request that the program to be run in a 32\-bit or 64\-bit environment, respectively. If the requested environment is not installed or is not supported, an error is reported.
.br
.br
Currently only the Java HotSpot Server VM supports 64\-bit operation, and the "\-server" option is implicit with the use of \-d64. And the "\-client" option is ignored with the use of \-d64. This is subject to change in a future release.
.br
.br
-If neither \f3\-d32\fP nor \f3\-d64\fP is specified, the default is to run in a 32\-bit environment, except for 64\-bit only systems. This is subject to change in a future release.
+If neither \f3\-d32\fP nor \f3\-d64\fP is specified, the default is to run in a 32\-bit environment, except for 64\-bit only systems. This is subject to change in a future release.
.TP 3
-\-enableassertions[:"..." | : ]
+\-enableassertions[:"..." | : ]
.TP 3
-\-ea[:"..." | : ]
-Enable assertions. Assertions are disabled by default.
+\-ea[:"..." | : ]
+.TP 3
+\-disableassertions[:"..." | : ]
+.TP 3
+\-da[:"..." | : ]
+Disable assertions. This is the default.
.br
.br
-With no arguments, \f3enableassertions\fP or \f3\-ea\fP enables assertions. With one argument ending in \f2"..."\fP, the switch enables assertions in the specified package and any subpackages. If the argument is simply \f2"..."\fP, the switch enables assertions in the unnamed package in the current working directory. With one argument not ending in \f2"..."\fP, the switch enables assertions in the specified class.
+With no arguments, \f3disableassertions\fP or \f3\-da\fP disables assertions. With one argument ending in \f2"..."\fP, the switch disables assertions in the specified package and any subpackages. If the argument is simply \f2"..."\fP, the switch disables assertions in the unnamed package in the current working directory. With one argument not ending in \f2"..."\fP, the switch disables assertions in the specified class.
.br
.br
-If a single command line contains multiple instances of these switches, they are processed in order before loading any classes. So, for example, to run a program with assertions enabled only in package \f2com.wombat.fruitbat\fP (and any subpackages), the following command could be used:
+To run a program with assertions enabled in package \f2com.wombat.fruitbat\fP but disabled in class \f2com.wombat.fruitbat.Brickbat\fP, the following command could be used:
.nf
\f3
.fl
-java \-ea:com.wombat.fruitbat...
+java \-ea:com.wombat.fruitbat... \-da:com.wombat.fruitbat.Brickbat \fP\f4\fP\f3
.fl
\fP
.fi
-The \f3\-enableassertions\fP and \f3\-ea\fP switches apply to \f2all\fP class loaders and to system classes (which do not have a class loader). There is one exception to this rule: in their no\-argument form, the switches do \f2not\fP apply to system. This makes it easy to turn on asserts in all classes except for system classes. A separate switch is provided to enable asserts in all system classes; see \f3\-enablesystemassertions\fP below.
-.TP 3
-\-disableassertions[:"..." | : ]
-.TP 3
-\-da[:"..." | : ]
-Disable assertions. This is the default.
+The \f3\-disableassertions\fP and \f3\-da\fP switches apply to \f2all\fP class loaders and to system classes (which do not have a class loader). There is one exception to this rule: in their no\-argument form, the switches do \f2not\fP apply to system. This makes it easy to turn on asserts in all classes except for system classes. A separate switch is provided to enable asserts in all system classes; see \f3\-disablesystemassertions\fP below.
+Enable assertions. Assertions are disabled by default.
.br
.br
-With no arguments, \f3disableassertions\fP or \f3\-da\fP disables assertions. With one argument ending in \f2"..."\fP, the switch disables assertions in the specified package and any subpackages. If the argument is simply \f2"..."\fP, the switch disables assertions in the unnamed package in the current working directory. With one argument not ending in \f2"..."\fP, the switch disables assertions in the specified class.
+With no arguments, \f3enableassertions\fP or \f3\-ea\fP enables assertions. With one argument ending in \f2"..."\fP, the switch enables assertions in the specified package and any subpackages. If the argument is simply \f2"..."\fP, the switch enables assertions in the unnamed package in the current working directory. With one argument not ending in \f2"..."\fP, the switch enables assertions in the specified class.
.br
.br
-To run a program with assertions enabled in package \f2com.wombat.fruitbat\fP but disabled in class \f2com.wombat.fruitbat.Brickbat\fP, the following command could be used:
+If a single command line contains multiple instances of these switches, they are processed in order before loading any classes. So, for example, to run a program with assertions enabled only in package \f2com.wombat.fruitbat\fP (and any subpackages), the following command could be used:
.nf
\f3
.fl
-java \-ea:com.wombat.fruitbat... \-da:com.wombat.fruitbat.Brickbat \fP\f4\fP\f3
+java \-ea:com.wombat.fruitbat...
.fl
\fP
.fi
-The \f3\-disableassertions\fP and \f3\-da\fP switches apply to \f2all\fP class loaders and to system classes (which do not have a class loader). There is one exception to this rule: in their no\-argument form, the switches do \f2not\fP apply to system. This makes it easy to turn on asserts in all classes except for system classes. A separate switch is provided to enable asserts in all system classes; see \f3\-disablesystemassertions\fP below.
+The \f3\-enableassertions\fP and \f3\-ea\fP switches apply to \f2all\fP class loaders and to system classes (which do not have a class loader). There is one exception to this rule: in their no\-argument form, the switches do \f2not\fP apply to system. This makes it easy to turn on asserts in all classes except for system classes. A separate switch is provided to enable asserts in all system classes; see \f3\-enablesystemassertions\fP below.
.TP 3
-\-enablesystemassertions
+\-enablesystemassertions
.TP 3
-\-esa
-Enable asserts in all system classes (sets the \f2default assertion status\fP for system classes to \f2true\fP).
+\-esa
+Enable asserts in all system classes (sets the \f2default assertion status\fP for system classes to \f2true\fP).
.TP 3
-\-disablesystemassertions
+\-disablesystemassertions
.TP 3
-\-dsa
-Disables asserts in all system classes.
+\-dsa
+Disables asserts in all system classes.
.TP 3
-\-jar
-Execute a program encapsulated in a JAR file. The first argument is the name of a JAR file instead of a startup class name. In order for this option to work, the manifest of the JAR file must contain a line of the form \f3Main\-Class: \fP\f4classname\fP. Here, \f2classname\fP identifies the class having the \f2public\ static\ void\ main(String[]\ args)\fP method that serves as your application's starting point. See the jar(1) and the Jar trail of the
+\-help or \-?
+Display usage information and exit.
+.TP 3
+\-jar
+Execute a program encapsulated in a JAR file. The first argument is the name of a JAR file instead of a startup class name. In order for this option to work, the manifest of the JAR file must contain a line of the form \f3Main\-Class: \fP\f4classname\fP. Here, \f2classname\fP identifies the class having the \f2public\ static\ void\ main(String[]\ args)\fP method that serves as your application's starting point. See the jar(1) and the Jar trail of the
.na
\f2Java Tutorial\fP @
.fi
-http://download.oracle.com/javase/tutorial/deployment/jar for information about working with Jar files and Jar\-file manifests.
+http://docs.oracle.com/javase/tutorial/deployment/jar for information about working with Jar files and Jar\-file manifests.\
.br
.br
When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.
.br
.br
-Note that JAR files that can be run with the "java \-jar" option can have their execute permissions set so they can be run without using "java \-jar". Refer to
+Note that JAR files that can be run with the "java \-jar" option can have their execute permissions set so they can be run without using "java \-jar". Refer to
.na
\f2Java Archive (JAR) Files\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/jar/index.html.
+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/index.html.
.TP 3
-\-javaagent:jarpath[=options]
-Load a Java programming language agent, see
+\-javaagent:jarpath[=options]
+Load a Java programming language agent, see
.na
\f2java.lang.instrument\fP @
.fi
-http://download.oracle.com/javase/7/docs/api/java/lang/instrument/package\-summary.html.
+http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package\-summary.html.
+.TP 3
+\-jre\-restrict\-search
+Include user\-private JREs in the version search.
+.TP 3
+\-no\-jre\-restrict\-search
+Exclude user\-private JREs in the version search.
.TP 3
-\-jre\-restrict\-search
-Include user\-private JREs in the version search.
+\-showversion
+Display version information and continue. (See also \f3\-version\fP.)
.TP 3
-\-no\-jre\-restrict\-search
-Exclude user\-private JREs in the version search.
+\-splash:imagepath
+Show splash screen with image specified by \f2imagepath\fP.
.TP 3
-\-verbose
+\-verbose
.TP 3
-\-verbose:class
-Display information about each class loaded.
+\-verbose:class
+Display information about each class loaded.
.TP 3
-\-verbose:gc
-Report on each garbage collection event.
+\-verbose:gc
+Report on each garbage collection event.
.TP 3
-\-verbose:jni
-Report information about use of native methods and other Java Native Interface activity.
+\-verbose:jni
+Report information about use of native methods and other Java Native Interface activity.
.TP 3
-\-version
-Display version information and exit.
+\-version
+Display version information and exit. (See also \f3\-showversion\fP.)
.TP 3
-\-version:release
+\-version:release
Specifies that the version specified by \f2release\fP is required by the class or jar file specified on the command line. If the version of the java command invoked does not meet this specification and an appropriate implementation is found on the system, the appropriate implementation will be used.
.br
.br
-\f2release\fP not only can specify an exact version, but can also specify a list of versions called a version string. A version string is an ordered list of version ranges separated by spaces. A version range is either a version\-id, a version\-id followed by a star (*), a version\-id followed by a plus sign (+) , or two version\-ranges combined using an ampersand (&). The star means prefix match, the plus sign means this version or greater, and the ampersand means the logical anding of the two version\-ranges. For example:
+\f2release\fP not only can specify an exact version, but can also specify a list of versions called a version string. A version string is an ordered list of version ranges separated by spaces. A version range is either a version\-id, a version\-id followed by a star (*), a version\-id followed by a plus sign (+) , or two version\-ranges combined using an ampersand (&). The star means prefix match, the plus sign means this version or greater, and the ampersand means the logical anding of the two version\-ranges. For example:
.nf
\f3
.fl
@@ -279,71 +288,63 @@ The meaning of the above is that the class or jar file requires either version 1
For jar files, the usual preference is to specify version requirements in the jar file manifest rather than on the command line.
.br
.br
-See the following NOTES section for important policy information on the use of this option.
-.TP 3
-\-showversion
-Display version information and continue.
-.TP 3
-\-?
-.TP 3
-\-help
-Display usage information and exit.
-.TP 3
-\-splash:imagepath
-Show splash screen with image specified by \f2imagepath\fP.
-.TP 3
-\-X
-Display information about non\-standard options and exit.
+See the following NOTES section for important policy information on the use of this option.
.RE
.LP
-.SS
+.SS
Non\-Standard Options
.LP
.RS 3
.TP 3
-\-Xint
-Operate in interpreted\-only mode. Compilation to native code is disabled, and all bytecodes are executed by the interpreter. The performance benefits offered by the Java HotSpot VMs' adaptive compiler will not be present in this mode.
+\-X
+Display information about non\-standard options and exit.
.TP 3
-\-Xbatch
-Disable background compilation. Normally the VM will compile the method as a background task, running the method in interpreter mode until the background compilation is finished. The \f2\-Xbatch\fP flag disables background compilation so that compilation of all methods proceeds as a foreground task until completed.
+\-Xint
+Operate in interpreted\-only mode. Compilation to native code is disabled, and all bytecodes are executed by the interpreter. The performance benefits offered by the Java HotSpot VMs' adaptive compiler will not be present in this mode.
.TP 3
-\-Xbootclasspath:bootclasspath
-Specify a colon\-separated list of directories, JAR archives, and ZIP archives to search for boot class files. These are used in place of the boot class files included in the Java platform JDK. \f2Note: Applications that use this option for the purpose of overriding a class in rt.jar should not be deployed as doing so would contravene the Java Runtime Environment binary code license.\fP
+\-Xbatch
+Disable background compilation. Normally the VM will compile the method as a background task, running the method in interpreter mode until the background compilation is finished. The \f2\-Xbatch\fP flag disables background compilation so that compilation of all methods proceeds as a foreground task until completed.
.TP 3
-\-Xbootclasspath/a:path
-Specify a colon\-separated path of directires, JAR archives, and ZIP archives to append to the default bootstrap class path.
+\-Xbootclasspath:bootclasspath
+Specify a colon\-separated list of directories, JAR archives, and ZIP archives to search for boot class files. These are used in place of the boot class files included in the Java platform JDK. \f2Note: Applications that use this option for the purpose of overriding a class in rt.jar should not be deployed as doing so would contravene the Java Runtime Environment binary code license.\fP
.TP 3
-\-Xbootclasspath/p:path
-Specify a colon\-separated path of directires, JAR archives, and ZIP archives to prepend in front of the default bootstrap class path. \f2Note: Applications that use this option for the purpose of overriding a class in rt.jar should not be deployed as doing so would contravene the Java Runtime Environment binary code license.\fP
+\-Xbootclasspath/a:path
+Specify a colon\-separated path of directires, JAR archives, and ZIP archives to append to the default bootstrap class path.
.TP 3
-\-Xcheck:jni
-Perform additional checks for Java Native Interface (JNI) functions. Specifically, the Java Virtual Machine validates the parameters passed to the JNI function as well as the runtime environment data before processing the JNI request. Any invalid data encountered indicates a problem in the native code, and the Java Virtual Machine will terminate with a fatal error in such cases. Expect a performance degradation when this option is used.
+\-Xbootclasspath/p:path
+Specify a colon\-separated path of directires, JAR archives, and ZIP archives to prepend in front of the default bootstrap class path. \f2Note: Applications that use this option for the purpose of overriding a class in rt.jar should not be deployed as doing so would contravene the Java Runtime Environment binary code license.\fP
.TP 3
-\-Xfuture
-Perform strict class\-file format checks. For purposes of backwards compatibility, the default format checks performed by the JDK's virtual machine are no stricter than the checks performed by 1.1.x versions of the JDK software. The \f3\-Xfuture\fP flag turns on stricter class\-file format checks that enforce closer conformance to the class\-file format specification. Developers are encouraged to use this flag when developing new code because the stricter checks will become the default in future releases of the Java application launcher.
+\-Xcheck:jni
+Perform additional checks for Java Native Interface (JNI) functions. Specifically, the Java Virtual Machine validates the parameters passed to the JNI function as well as the runtime environment data before processing the JNI request. Any invalid data encountered indicates a problem in the native code, and the Java Virtual Machine will terminate with a fatal error in such cases. Expect a performance degradation when this option is used.
.TP 3
-\-Xnoclassgc
-Disable class garbage collection. Use of this option will prevent memory recovery from loaded classes thus increasing overall memory usage. This could cause OutOfMemoryError to be thrown in some applications.
+\-Xfuture
+Perform strict class\-file format checks. For purposes of backwards compatibility, the default format checks performed by the JDK's virtual machine are no stricter than the checks performed by 1.1.x versions of the JDK software. The \f3\-Xfuture\fP flag turns on stricter class\-file format checks that enforce closer conformance to the class\-file format specification. Developers are encouraged to use this flag when developing new code because the stricter checks will become the default in future releases of the Java application launcher.
.TP 3
-\-Xincgc
-Enable the incremental garbage collector. The incremental garbage collector, which is off by default, will reduce the occasional long garbage\-collection pauses during program execution. The incremental garbage collector will at times execute concurrently with the program and during such times will reduce the processor capacity available to the program.
+\-Xnoclassgc
+Disable class garbage collection. Use of this option will prevent memory recovery from loaded classes thus increasing overall memory usage. This could cause OutOfMemoryError to be thrown in some applications.
.TP 3
-\-Xloggc:file
+\-Xincgc
+Enable the incremental garbage collector. The incremental garbage collector, which is off by default, will reduce the occasional long garbage\-collection pauses during program execution. The incremental garbage collector will at times execute concurrently with the program and during such times will reduce the processor capacity available to the program.
+.TP 3
+\-Xloggc:file
Report on each garbage collection event, as with \-verbose:gc, but log this data to \f2file\fP. In addition to the information \f2\-verbose:gc\fP gives, each reported event will be preceeded by the time (in seconds) since the first garbage\-collection event.
.br
.br
-Always use a local file system for storage of this file to avoid stalling the JVM due to network latency. The file may be truncated in the case of a full file system and logging will continue on the truncated file. This option overrides \f2\-verbose:gc\fP if both are given on the command line.
+Always use a local file system for storage of this file to avoid stalling the JVM due to network latency. The file may be truncated in the case of a full file system and logging will continue on the truncated file. This option overrides \f2\-verbose:gc\fP if both are given on the command line.
+.TP 3
+\-Xmnsize or \-XX:NewSize
+Sets the size of the young generation (nursery).
.TP 3
-\-Xmsn
-Specify the initial size, in bytes, of the memory allocation pool. This value must be a multiple of 1024 greater than 1MB. Append the letter \f2k\fP or \f2K\fP to indicate kilobytes, or \f2m\fP or \f2M\fP to indicate megabytes. The default value is chosen at runtime based on system configuration. For more information, see
+\-Xmsn
+Specify the initial size, in bytes, of the memory allocation pool. This value must be a multiple of 1024 greater than 1MB. Append the letter \f2k\fP or \f2K\fP to indicate kilobytes, or \f2m\fP or \f2M\fP to indicate megabytes. The default value is chosen at runtime based on system configuration. For more information, see
.na
\f2HotSpot Ergonomics\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/vm/gc\-ergonomics.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/vm/gc\-ergonomics.html
.br
.br
-Examples:
+Examples:
.nf
\f3
.fl
@@ -358,15 +359,15 @@ Examples:
\fP
.fi
.TP 3
-\-Xmxn
-Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024 greater than 2MB. Append the letter \f2k\fP or \f2K\fP to indicate kilobytes, or \f2m\fP or \f2M\fP to indicate megabytes. The default value is chosen at runtime based on system configuration. For more information, see
+\-Xmxn
+Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024 greater than 2MB. Append the letter \f2k\fP or \f2K\fP to indicate kilobytes, or \f2m\fP or \f2M\fP to indicate megabytes. The default value is chosen at runtime based on system configuration. For more information, see
.na
\f2HotSpot Ergonomics\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/vm/gc\-ergonomics.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/vm/gc\-ergonomics.html
.br
.br
-Examples:
+Examples:
.nf
\f3
.fl
@@ -380,12 +381,12 @@ Examples:
.fl
\fP
.fi
-On Solaris 7 and Solaris 8 SPARC platforms, the upper limit for this value is approximately 4000m minus overhead amounts. On Solaris 2.6 and x86 platforms, the upper limit is approximately 2000m minus overhead amounts. On Bsd platforms, the upper limit is approximately 2000m minus overhead amounts.
+On Solaris 7 and Solaris 8 SPARC platforms, the upper limit for this value is approximately 4000m minus overhead amounts. On Solaris 2.6 and x86 platforms, the upper limit is approximately 2000m minus overhead amounts. On Linux and BSD platforms, the upper limit is approximately 2000m minus overhead amounts.
.TP 3
-\-Xprof
-Profiles the running program, and sends profiling data to standard output. This option is provided as a utility that is useful in program development and is not intended to be used in production systems.
+\-Xprof
+Profiles the running program, and sends profiling data to standard output. This option is provided as a utility that is useful in program development and is not intended to be used in production systems.
.TP 3
-\-Xrs
+\-Xrs
Reduces use of operating\-system signals by the Java virtual machine (JVM).
.br
.br
@@ -401,36 +402,109 @@ The JVM uses a similar mechanism to implement the pre\-1.2 feature of dumping th
Applications embedding the JVM frequently need to trap signals like SIGINT or SIGTERM, which can lead to interference with the JVM's own signal handlers. The \f3\-Xrs\fP command\-line option is available to address this issue. When \f3\-Xrs\fP is used on Sun's JVM, the signal masks for SIGINT, SIGTERM, SIGHUP, and SIGQUIT are not changed by the JVM, and signal handlers for these signals are not installed.
.br
.br
-There are two consequences of specifying \f3\-Xrs\fP:
+There are two consequences of specifying \f3\-Xrs\fP:
.RS 3
.TP 2
o
-SIGQUIT thread dumps are not available.
+SIGQUIT thread dumps are not available.
.TP 2
o
-User code is responsible for causing shutdown hooks to run, for example by calling System.exit() when the JVM is to be terminated.
+User code is responsible for causing shutdown hooks to run, for example by calling System.exit() when the JVM is to be terminated.
.RE
.TP 3
-\-Xssn
-Set thread stack size.
+\-Xssn
+Set thread stack size.
.TP 3
-\-XX:+UseAltSigs
-The VM uses \f2SIGUSR1\fP and \f2SIGUSR2\fP by default, which can sometimes conflict with applications that signal\-chain \f2SIGUSR1\fP and \f2SIGUSR2\fP. The \f2\-XX:+UseAltSigs\fP option will cause the VM to use signals other than \f2SIGUSR1\fP and \f2SIGUSR2\fP as the default.
-.RE
-
-.LP
-.SH "NOTES"
-.LP
-.LP
-The \f3\-version:\fP\f2release\fP command line option places no restrictions on the complexity of the release specification. However, only a restricted subset of the possible release specifications represent sound policy and only these are fully supported. These policies are:
+\-XX:AllocationPrefetchStyle=n
+Sets the style of prefetch used during allocation. default=2.
+.br
+.TP 3
+\-XX:+AggressiveOpts
+Enables aggressive optimization.
+.br
+.TP 3
+\-XX:+|\-DisableAttachMechanism
+This option specifies whether tools (such as \f2jmap\fP and \f2jconsole\fP) are allowed to attach to the JVM. By default, this feature is disabled. That is, attaching is enabled. Example usage:
+.nf
+\f3
+.fl
+ java \-XX:+DisableAttachMechanism
+.fl
+\fP
+.fi
+.TP 3
+\-XXLargePageSizeInBytes=n
+This option specifies the maximum size for large pages.
+.TP 3
+\-XX:MaxGCPauseMillis=n
+Sets a target for the maximum GC pause time.
+.br
+This is a soft goal, and the JVM will make its best effort to achieve it.
+.TP 3
+\-XX:NewSize
+Sets the size of the young generation (nursery). Sames as \f3\-Xmn\fP\f4size\fP.
+.TP 3
+\-XX:ParallelGCThreads=n
+Sets the number of GC threads in the parallel collectors.
+.br
+.TP 3
+\-XX:PredictedClassLoadCount=n
+This option requires that the \f3UnlockExperimentalVMOptions\fP flag be set first. Use the \f3PredictedClassLoadCount\fP flag if your application loads a lot of classes, and especially if \f3class.forName()\fP is used heavily. The recommended value is the number of classes loaded as shown in the output from \f3\-verbose:class\fP.
+.br
+Example usage:
+.nf
+\f3
+.fl
+ java \-XX:+UnlockExperimentalVMOptions \-XX:PredictedClassLoadCount=60013
+.fl
+\fP
+.fi
+.TP 3
+\-XX:+PrintCompilation
+Prints verbose output from the HotSpot dynamic runtime compiler.
+.br
+.TP 3
+\-XX:+PrintGCDetails \-XX:+PrintGCTimeStamps
+Prints garbage collection output along with time stamps.
+.br
+.TP 3
+\-XX:SoftRefLRUPolicyMSPerMB=0
+This flag enables aggressive processing of software references. Use this flag if HotSpot GC is impacted by the software reference count.
+.TP 3
+\-XX:TLABSize=n
+Thread local allocation buffers (TLAB) are enabled by default in HotSpot. HotSpot automatically sizes TLABs based on allocation patterns. The \f3\-XX:TLABSize\fP option allows fine\-tuning the size of TLABs.
+.br
+.TP 3
+\-XX:+UseAltSigs
+The VM uses \f2SIGUSR1\fP and \f2SIGUSR2\fP by default, which can sometimes conflict with applications that signal\-chain \f2SIGUSR1\fP and \f2SIGUSR2\fP. The \f2\-XX:+UseAltSigs\fP option will cause the VM to use signals other than \f2SIGUSR1\fP and \f2SIGUSR2\fP as the default.
+.TP 3
+\-XX:+|\-UseCompressedOops
+Enables compressed references in 64\-bit JVMs.
+.br
+This option is true by default.
+.br
+.TP 3
+\-XX:+UseConcMarkSweepGC or \-XX:+UseG1GC
+These flags enable either the Concurrent Mark Sweep (CMS) or the G1 garbage collectors.
+.br
+.TP 3
+\-XX:+|\-UseLargePages
+Use this flag to enable large page support. Large pages are enabled by default on Solaris.
+.br
+.TP 3
+\-XX:+UseParallelOldGC
+Enables the parallel garbage collectors, which are optimized for throughput and average response time.
+.br
+.SH "NOTES"
.LP
+The \f3\-version:\fP\f2release\fP command line option places no restrictions on the complexity of the release specification. However, only a restricted subset of the possible release specifications represent sound policy and only these are fully supported. These policies are:
.RS 3
.TP 3
1.
-Any version, represented by not using this option.
+Any version, represented by not using this option.
.TP 3
2.
-Any version greater than an arbitrarily precise version\-id. For example:
+Any version greater than an arbitrarily precise version\-id. For example:
.nf
\f3
.fl
@@ -438,10 +512,10 @@ Any version greater than an arbitrarily precise version\-id. For example:
.fl
\fP
.fi
-This would utilize any version greater than \f21.6.0_10\fP. This is useful for a case where an interface was introduced (or a bug fixed) in the release specified.
+This would utilize any version greater than \f21.6.0_10\fP. This is useful for a case where an interface was introduced (or a bug fixed) in the release specified.
.TP 3
3.
-A version greater than an arbitrarily precise version\-id, bounded by the upper bound of that release family. For example:
+A version greater than an arbitrarily precise version\-id, bounded by the upper bound of that release family. For example:
.nf
\f3
.fl
@@ -451,7 +525,7 @@ A version greater than an arbitrarily precise version\-id, bounded by the upper
.fi
.TP 3
4.
-"Or" expressions of items 2. or 3. above. For example:
+"Or" expressions of items 2. or 3. above. For example:
.nf
\f3
.fl
@@ -459,59 +533,53 @@ A version greater than an arbitrarily precise version\-id, bounded by the upper
.fl
\fP
.fi
-Similar to item 2. this is useful when a change was introduced in a release (1.7) but also made available in updates to previous releases.
+Similar to item 2. this is useful when a change was introduced in a release (1.7) but also made available in updates to previous releases.
.RE
-
-.LP
-.SH "EXIT STATUS"
-.LP
-.LP
-The following exit values are generally returned by the launcher, typically when the launcher is called with the wrong arguments, serious errors, or exceptions thrown from the Java Virtual Machine. However, a Java application may choose to return any value using the API call \f2System.exit(exitValue)\fP.
+.SH "EXIT STATUS"
.LP
+The following exit values are generally returned by the launcher, typically when the launcher is called with the wrong arguments, serious errors, or exceptions thrown from the Java Virtual Machine. However, a Java application may choose to return any value using the API call \f2System.exit(exitValue)\fP.
.RS 3
.TP 2
o
-\f20\fP: Successful completion
+\f20\fP: Successful completion
.TP 2
o
-\f2>0\fP: An error occurred
+\f2>0\fP: An error occurred
.RE
-
-.LP
-.SH "SEE ALSO"
-.LP
+.SH "SEE ALSO"
.RS 3
.TP 2
o
-javac(1)
+javac(1)
.TP 2
o
-jdb(1)
+jdb(1)
.TP 2
o
-javah(1)
+javah(1)
.TP 2
o
-jar(1)
+jar(1)
.TP 2
o
.na
\f2The Java Extensions Framework\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/extensions/index.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/extensions/index.html
.TP 2
o
.na
\f2Security Features\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/security/index.html.
+http://docs.oracle.com/javase/7/docs/technotes/guides/security/index.html.
.TP 2
o
.na
\f2HotSpot VM Specific Options\fP @
.fi
-http://java.sun.com/docs/hotspot/VMOptions.html.
+http://java.sun.com/docs/hotspot/VMOptions.html.
+.RE
.RE
.LP
-
+
diff --git a/jdk/src/bsd/doc/man/javac.1 b/jdk/src/bsd/doc/man/javac.1
index 887621f..eecd03f 100755
--- a/jdk/src/bsd/doc/man/javac.1
+++ b/jdk/src/bsd/doc/man/javac.1
@@ -19,7 +19,7 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH javac 1 "10 May 2011"
+.TH javac 1 "16 Mar 2012"
.LP
.SH "Name"
@@ -42,17 +42,17 @@ Arguments may be in any order.
.LP
.RS 3
.TP 3
-options
-Command\-line options.
+options
+Command\-line options.
.TP 3
-sourcefiles
-One or more source files to be compiled (such as MyClass.java).
+sourcefiles
+One or more source files to be compiled (such as MyClass.java).
.TP 3
-classes
-One or more classes to be processed for annotations (such as MyPackage.MyClass).
+classes
+One or more classes to be processed for annotations (such as MyPackage.MyClass).
.TP 3
-@argfiles
-One or more files that lists options and source files. The \f2\-J\fP options are not allowed in these files.
+@argfiles
+One or more files that lists options and source files. The \f2\-J\fP options are not allowed in these files.
.RE
.LP
@@ -67,10 +67,10 @@ There are two ways to pass source code file names to \f3javac\fP:
.RS 3
.TP 2
o
-For a small number of source files, simply list the file names on the command line.
+For a small number of source files, simply list the file names on the command line.
.TP 2
o
-For a large number of source files, list the file names in a file, separated by blanks or line breaks. Then use the list file name on the \f3javac\fP command line, preceded by an \f3@\fP character.
+For a large number of source files, list the file names in a file, separated by blanks or line breaks. Then use the list file name on the \f3javac\fP command line, preceded by an \f3@\fP character.
.RE
.LP
@@ -91,150 +91,150 @@ By default, the compiler puts each class file in the same directory as its sourc
.LP
The compiler has a set of standard options that are supported on the current development environment and will be supported in future releases. An additional set of non\-standard options are specific to the current virtual machine and compiler implementations and are subject to change in the future. Non\-standard options begin with \f3\-X\fP.
.LP
-.SS
+.SS
Standard Options
.LP
.RS 3
.TP 3
-\-Akey[=value]
-Options to pass to annotation processors. These are not interpreted by javac directly, but are made available for use by individual processors. \f2key\fP should be one or more identifiers separated by ".".
+\-Akey[=value]
+Options to pass to annotation processors. These are not interpreted by javac directly, but are made available for use by individual processors. \f2key\fP should be one or more identifiers separated by ".".
.TP 3
-\-cp path or \-classpath path
+\-cp path or \-classpath path
Specify where to find user class files, and (optionally) annotation processors and source files. This class path overrides the user class path in the \f3CLASSPATH\fP environment variable. If neither \f3CLASSPATH\fP, \f3\-cp\fP nor \f3\-classpath\fP is specified, the user class path consists of the current directory. See Setting the Class Path for more details.
.br
.br
>If the \f3\-sourcepath\fP option is not specified, the user class path is also searched for source files.
.br
.br
-If the \f3\-processorpath\fP option is not specified, the class path is also searched for annotation processors.
+If the \f3\-processorpath\fP option is not specified, the class path is also searched for annotation processors.
.TP 3
-\-Djava.ext.dirs=directories
-Override the location of installed extensions.
+\-Djava.ext.dirs=directories
+Override the location of installed extensions.
.TP 3
-\-Djava.endorsed.dirs=directories
-Override the location of endorsed standards path.
+\-Djava.endorsed.dirs=directories
+Override the location of endorsed standards path.
.TP 3
-\-d directory
+\-d directory
Set the destination directory for class files. The directory must already exist; \f3javac\fP will not create it. If a class is part of a package, \f3javac\fP puts the class file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify \f3\-d /home/myclasses\fP and the class is called \f2com.mypackage.MyClass\fP, then the class file is called \f2/home/myclasses/com/mypackage/MyClass.class\fP.
.br
.br
If \f3\-d\fP is not specified, \f3javac\fP puts each class files in the same directory as the source file from which it was generated.
.br
.br
-\f3Note:\fP The directory specified by \f3\-d\fP is not automatically added to your user class path.
+\f3Note:\fP The directory specified by \f3\-d\fP is not automatically added to your user class path.
.TP 3
-\-deprecation
-Show a description of each use or override of a deprecated member or class. Without \f3\-deprecation\fP, \f3javac\fP shows a summary of the source files that use or override deprecated members or classes. \f3\-deprecation\fP is shorthand for \f3\-Xlint:deprecation\fP.
+\-deprecation
+Show a description of each use or override of a deprecated member or class. Without \f3\-deprecation\fP, \f3javac\fP shows a summary of the source files that use or override deprecated members or classes. \f3\-deprecation\fP is shorthand for \f3\-Xlint:deprecation\fP.
.TP 3
-\-encoding encoding
-Set the source file encoding name, such as \f2EUC\-JP and UTF\-8\fP. If \f3\-encoding\fP is not specified, the platform default converter is used.
+\-encoding encoding
+Set the source file encoding name, such as \f2EUC\-JP and UTF\-8\fP. If \f3\-encoding\fP is not specified, the platform default converter is used.
.TP 3
-\-endorseddirs directories
-Override the location of endorsed standards path.
+\-endorseddirs directories
+Override the location of endorsed standards path.
.TP 3
-\-extdirs directories
+\-extdirs directories
Overrides the location of the \f2ext\fP directory. The \f2directories\fP variable is a colon\-separated list of directories. Each JAR archive in the specified directories is searched for class files. All JAR archives found are automatically part of the class path.
.br
.br
-If you are cross\-compiling (compiling classes against bootstrap and extension classes of a different Java platform implementation), this option specifies the directories that contain the extension classes. See Cross\-Compilation Options for more information.
+If you are cross\-compiling (compiling classes against bootstrap and extension classes of a different Java platform implementation), this option specifies the directories that contain the extension classes. See Cross\-Compilation Options for more information.
.TP 3
-\-g
-Generate all debugging information, including local variables. By default, only line number and source file information is generated.
+\-g
+Generate all debugging information, including local variables. By default, only line number and source file information is generated.
.TP 3
-\-g:none
-Do not generate any debugging information.
+\-g:none
+Do not generate any debugging information.
.TP 3
-\-g:{keyword list}
-Generate only some kinds of debugging information, specified by a comma separated list of keywords. Valid keywords are:
+\-g:{keyword list}
+Generate only some kinds of debugging information, specified by a comma separated list of keywords. Valid keywords are:
.RS 3
.TP 3
-source
-Source file debugging information
+source
+Source file debugging information
.TP 3
-lines
-Line number debugging information
+lines
+Line number debugging information
.TP 3
-vars
-Local variable debugging information
+vars
+Local variable debugging information
.RE
.TP 3
-\-help
-Print a synopsis of standard options.
+\-help
+Print a synopsis of standard options.
.TP 3
-\-implicit:{class,none}
-Controls the generation of class files for implicitly loaded source files. To automatically generate class files, use \f3\-implicit:class\fP. To suppress class file generation, use \f3\-implicit:none\fP. If this option is not specified, the default is to automatically generate class files. In this case, the compiler will issue a warning if any such class files are generated when also doing annotation processing. The warning will not be issued if this option is set explicitly. See Searching For Types.
+\-implicit:{class,none}
+Controls the generation of class files for implicitly loaded source files. To automatically generate class files, use \f3\-implicit:class\fP. To suppress class file generation, use \f3\-implicit:none\fP. If this option is not specified, the default is to automatically generate class files. In this case, the compiler will issue a warning if any such class files are generated when also doing annotation processing. The warning will not be issued if this option is set explicitly. See Searching For Types.
.TP 3
-\-Joption
+\-Joption
Pass \f2option\fP to the \f3java\fP launcher called by \f3javac\fP. For example, \f3\-J\-Xms48m\fP sets the startup memory to 48 megabytes. It is a common convention for \f3\-J\fP to pass options to the underlying VM executing applications written in Java.
.br
.br
-\f3Note:\fP \f3CLASSPATH\fP, \f3\-classpath\fP, \f3\-bootclasspath\fP, and \f3\-extdirs\fP do \f2not\fP specify the classes used to run \f3javac\fP. Fiddling with the implementation of the compiler in this way is usually pointless and always risky. If you do need to do this, use the \f3\-J\fP option to pass through options to the underlying \f3java\fP launcher.
+\f3Note:\fP \f3CLASSPATH\fP, \f3\-classpath\fP, \f3\-bootclasspath\fP, and \f3\-extdirs\fP do \f2not\fP specify the classes used to run \f3javac\fP. Fiddling with the implementation of the compiler in this way is usually pointless and always risky. If you do need to do this, use the \f3\-J\fP option to pass through options to the underlying \f3java\fP launcher.
.TP 3
-\-nowarn
-Disable warning messages. This has the same meaning as \f3\-Xlint:none\fP.
+\-nowarn
+Disable warning messages. This has the same meaning as \f3\-Xlint:none\fP.
.TP 3
-\-proc: {none,only}
-Controls whether annotation processing and/or compilation is done. \f3\-proc:none\fP means that compilation takes place without annotation processing. \f3\-proc:only\fP means that only annotation processing is done, without any subsequent compilation.
+\-proc: {none,only}
+Controls whether annotation processing and/or compilation is done. \f3\-proc:none\fP means that compilation takes place without annotation processing. \f3\-proc:only\fP means that only annotation processing is done, without any subsequent compilation.
.TP 3
-\-processor class1[,class2,class3...]
-Names of the annotation processors to run. This bypasses the default discovery process.
+\-processor class1[,class2,class3...]
+Names of the annotation processors to run. This bypasses the default discovery process.
.TP 3
-\-processorpath path
-Specify where to find annotation processors; if this option is not used, the class path will be searched for processors.
+\-processorpath path
+Specify where to find annotation processors; if this option is not used, the class path will be searched for processors.
.TP 3
-\-s dir
-Specify the directory where to place generated source files. The directory must already exist; \f3javac\fP will not create it. If a class is part of a package, the compiler puts the source file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify \f3\-s /home/mysrc\fP and the class is called \f2com.mypackage.MyClass\fP, then the source file will be placed in \f2/home/mysrc/com/mypackage/MyClass.java\fP.
+\-s dir
+Specify the directory where to place generated source files. The directory must already exist; \f3javac\fP will not create it. If a class is part of a package, the compiler puts the source file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify \f3\-s /home/mysrc\fP and the class is called \f2com.mypackage.MyClass\fP, then the source file will be placed in \f2/home/mysrc/com/mypackage/MyClass.java\fP.
.TP 3
-\-source release
-Specifies the version of source code accepted. The following values for \f2release\fP are allowed:
+\-source release
+Specifies the version of source code accepted. The following values for \f2release\fP are allowed:
.RS 3
.TP 3
-1.3
-The compiler does \f2not\fP support assertions, generics, or other language features introduced after JDK 1.3.
+1.3
+The compiler does \f2not\fP support assertions, generics, or other language features introduced after Java SE 1.3.
.TP 3
-1.4
-The compiler accepts code containing assertions, which were introduced in JDK 1.4.
+1.4
+The compiler accepts code containing assertions, which were introduced in Java SE 1.4.
.TP 3
-1.5
-The compiler accepts code containing generics and other language features introduced in JDK 5.
+1.5
+The compiler accepts code containing generics and other language features introduced in Java SE 5.
.TP 3
-5
-Synonym for 1.5.
+5
+Synonym for 1.5.
.TP 3
-1.6
-This is the default value. No language changes were introduced in Java SE 6. However, encoding errors in source files are now reported as errors, instead of warnings, as previously.
+1.6
+No language changes were introduced in Java SE 6. However, encoding errors in source files are now reported as errors instead of warnings as in previous releases of Java SE.
.TP 3
-6
-Synonym for 1.6.
+6
+Synonym for 1.6.
.TP 3
-1.7
-The compiler accepts code with features introduced in JDK 7.
+1.7
+This is the default value. The compiler accepts code with features introduced in Java SE 7.
.TP 3
-7
-Synonym for 1.7.
+7
+Synonym for 1.7.
.RE
.TP 3
-\-sourcepath sourcepath
+\-sourcepath sourcepath
Specify the source code path to search for class or interface definitions. As with the user class path, source path entries are separated by colons (\f3:\fP) and can be directories, JAR archives, or ZIP archives. If packages are used, the local path name within the directory or archive must reflect the package name.
.br
.br
-\f3Note:\fP Classes found through the class path may be subject to automatic recompilation if their sources are also found. See Searching For Types.
+\f3Note:\fP Classes found through the class path may be subject to automatic recompilation if their sources are also found. See Searching For Types.
.TP 3
-\-verbose
-Verbose output. This includes information about each class loaded and each source file compiled.
+\-verbose
+Verbose output. This includes information about each class loaded and each source file compiled.
.TP 3
-\-version
-Print version information.
+\-version
+Print version information.
.TP 3
-\-Werror
-Terminate compilation if warnings occur.
+\-Werror
+Terminate compilation if warnings occur.
.TP 3
-\-X
-Display information about non\-standard options and exit.
+\-X
+Display information about non\-standard options and exit.
.RE
.LP
-.SS
+.SS
Cross\-Compilation Options
.LP
.LP
@@ -242,87 +242,92 @@ By default, classes are compiled against the bootstrap and extension classes of
.LP
.RS 3
.TP 3
-\-target version
-Generate class files that target a specified version of the VM. Class files will run on the specified target and on later versions, but not on earlier versions of the VM. Valid targets are \f31.1\fP \f31.2\fP \f31.3\fP \f31.4\fP \f31.5\fP (also \f35\fP) \f31.6\fP (also \f36\fP) and \f31.7\fP (also \f37\fP).
-.br
-.br
-The default for \f3\-target\fP depends on the value of \f3\-source\fP:
+\-target version
+Generate class files that target a specified version of the VM. Class files will run on the specified target and on later versions, but not on earlier versions of the VM. Valid targets are \f31.1\fP, \f31.2\fP, \f31.3\fP, \f31.4\fP, \f31.5\fP (also \f35\fP), \f31.6\fP (also \f36\fP), and \f31.7\fP (also \f37\fP).
+.LP
+The default for \f3\-target\fP depends on the value of \f3\-source\fP:
.RS 3
.TP 2
o
-If \-source is \f3not specified\fP, the value of \-target is \f31.7\fP
+If \-source is \f3not specified\fP, the value of \-target is \f31.7\fP
+.TP 2
+o
+If \-source is \f31.2\fP, the value of \-target is \f31.4\fP
.TP 2
o
-If \-source is \f31.2\fP, the value of \-target is \f31.4\fP
+If \-source is \f31.3\fP, the value of \-target is \f31.4\fP
.TP 2
o
-If \-source is \f31.3\fP, the value of \-target is \f31.4\fP
+If \-source is \f31.5\fP, the value of \-target is \f31.7\fP
.TP 2
o
-For \f3all other values\fP of \-source, the value of \f3\-target\fP is the value of \f3\-source\fP.
+If \-source is \f31.6\fP, the value of \-target is \f31.7\fP
+.TP 2
+o
+For \f3all other values\fP of \-source, the value of \f3\-target\fP is the value of \f3\-source\fP.
.RE
.TP 3
-\-bootclasspath bootclasspath
-Cross\-compile against the specified set of boot classes. As with the user class path, boot class path entries are separated by colons (\f3:\fP) and can be directories, JAR archives, or ZIP archives.
+\-bootclasspath bootclasspath
+Cross\-compile against the specified set of boot classes. As with the user class path, boot class path entries are separated by colons (\f3:\fP) and can be directories, JAR archives, or ZIP archives.
.RE
.LP
-.SS
+.SS
Non\-Standard Options
.LP
.RS 3
.TP 3
-\-Xbootclasspath/p:path
-Prepend to the bootstrap class path.
+\-Xbootclasspath/p:path
+Prepend to the bootstrap class path.
.TP 3
-\-Xbootclasspath/a:path
-Append to the bootstrap class path.
+\-Xbootclasspath/a:path
+Append to the bootstrap class path.
.TP 3
-\-Xbootclasspath/:path
-Override location of bootstrap class files.
+\-Xbootclasspath/:path
+Override location of bootstrap class files.
.TP 3
-\-Xlint
-Enable all recommended warnings. In this release, enabling all available warnings is recommended.
+\-Xlint
+Enable all recommended warnings. In this release, enabling all available warnings is recommended.
.TP 3
-\-Xlint:all
-Enable all recommended warnings. In this release, enabling all available warnings is recommended.
+\-Xlint:all
+Enable all recommended warnings. In this release, enabling all available warnings is recommended.
.TP 3
-\-Xlint:none
-Disable all warnings.
+\-Xlint:none
+Disable all warnings.
.TP 3
-\-Xlint:name
-Enable warning \f2name\fP. See the section Warnings That Can Be Enabled or Disabled with \-Xlint Option for a list of warnings you can enable with this option.
+\-Xlint:name
+Enable warning \f2name\fP. See the section Warnings That Can Be Enabled or Disabled with \-Xlint Option for a list of warnings you can enable with this option.
.TP 3
-\-Xlint:\-name
-Disable warning \f2name\fP. See the section Warnings That Can Be Enabled or Disabled with \-Xlint Option for a list of warnings you can disable with this option.
+\-Xlint:\-name
+Disable warning \f2name\fP. See the section Warnings That Can Be Enabled or Disabled with \-Xlint Option for a list of warnings you can disable with this option.
.TP 3
-\-Xmaxerrs number
-Set the maximum number of errors to print.
+\-Xmaxerrs number
+Set the maximum number of errors to print.
.TP 3
-\-Xmaxwarns number
-Set the maximum number of warnings to print.
+\-Xmaxwarns number
+Set the maximum number of warnings to print.
.TP 3
-\-Xstdout filename
-Send compiler messages to the named file. By default, compiler messages go to \f2System.err\fP.
+\-Xstdout filename
+Send compiler messages to the named file. By default, compiler messages go to \f2System.err\fP.
.TP 3
-\-Xprefer:{newer,source}
-Specify which file to read when both a source file and class file are found for a type. (See Searching For Types). If \f2\-Xprefer:newer\fP is used, it reads the newer of the source or class file for a type (default). If the \f2\-Xprefer:source\fP option is used, it reads source file. Use \f2\-Xprefer:source\fP when you want to be sure that any annotation processors can access annotations declared with a retention policy of \f2SOURCE\fP.
+\-Xprefer:{newer,source}
+Specify which file to read when both a source file and class file are found for a type. (See Searching For Types). If \f2\-Xprefer:newer\fP is used, it reads the newer of the source or class file for a type (default). If the \f2\-Xprefer:source\fP option is used, it reads source file. Use \f2\-Xprefer:source\fP when you want to be sure that any annotation processors can access annotations declared with a retention policy of \f2SOURCE\fP.
.TP 3
-\-Xpkginfo:{always,legacy,nonempty}
-Specify handling of package\-info files
+\-Xpkginfo:{always,legacy,nonempty}
+Specify handling of package\-info files
.TP 3
-\-Xprint
-Print out textual representation of specified types for debugging purposes; perform neither annotation processing nor compilation. The format of the output may change.
+\-Xprint
+Print out textual representation of specified types for debugging purposes; perform neither annotation processing nor compilation. The format of the output may change.
.TP 3
-\-XprintProcessorInfo
-Print information about which annotations a processor is asked to process.
+\-XprintProcessorInfo
+Print information about which annotations a processor is asked to process.
.TP 3
-\-XprintRounds
-Print information about initial and subsequent annotation processing rounds.
+\-XprintRounds
+Print information about initial and subsequent annotation processing rounds.
.RE
.LP
-.SS
+.SS
Warnings That Can Be Enabled or Disabled with \-Xlint Option
.LP
.LP
@@ -330,8 +335,8 @@ Enable warning \f2name\fP with the option \f3\-Xlint:\fP\f2name\fP, where \f2nam
.LP
.RS 3
.TP 3
-cast
-Warn about unnecessary and redundant casts. For example:
+cast
+Warn about unnecessary and redundant casts. For example:
.nf
\f3
.fl
@@ -340,11 +345,11 @@ String s = (String)"Hello!"
\fP
.fi
.TP 3
-classfile
-Warn about issues related to classfile contents.
+classfile
+Warn about issues related to classfile contents.
.TP 3
-deprecation
-Warn about use of deprecated items. For example:
+deprecation
+Warn about use of deprecated items. For example:
.nf
\f3
.fl
@@ -354,10 +359,10 @@ Warn about use of deprecated items. For example:
.fl
\fP
.fi
-The method \f2java.util.Date.getDay\fP has been deprecated since JDK 1.1.
+The method \f2java.util.Date.getDay\fP has been deprecated since JDK 1.1.
.TP 3
-dep\-ann
-Warn about items that are documented with an \f2@deprecated\fP Javadoc comment, but do not have a \f2@Deprecated\fP annotation. For example:
+dep\-ann
+Warn about items that are documented with an \f2@deprecated\fP Javadoc comment, but do not have a \f2@Deprecated\fP annotation. For example:
.nf
\f3
.fl
@@ -378,8 +383,8 @@ Warn about items that are documented with an \f2@deprecated\fP Javadoc comment,
\fP
.fi
.TP 3
-divzero
-Warn about division by constant integer 0. For example:
+divzero
+Warn about division by constant integer 0. For example:
.nf
\f3
.fl
@@ -388,8 +393,8 @@ Warn about division by constant integer 0. For example:
\fP
.fi
.TP 3
-empty
-Warn about empty statements after \f2if\fP statements. For example:
+empty
+Warn about empty statements after \f2if\fP statements. For example:
.nf
\f3
.fl
@@ -406,8 +411,8 @@ class E {
\fP
.fi
.TP 3
-fallthrough
-Check \f2switch\fP blocks for fall\-through cases and provide a warning message for any that are found. Fall\-through cases are cases in a \f2switch\fP block, other than the last case in the block, whose code does not include a \f2break\fP statement, allowing code execution to "fall through" from that case to the next case. For example, the code following the \f2case 1\fP label in this \f2switch\fP block does not end with a \f2break\fP statement:
+fallthrough
+Check \f2switch\fP blocks for fall\-through cases and provide a warning message for any that are found. Fall\-through cases are cases in a \f2switch\fP block, other than the last case in the block, whose code does not include a \f2break\fP statement, allowing code execution to "fall through" from that case to the next case. For example, the code following the \f2case 1\fP label in this \f2switch\fP block does not end with a \f2break\fP statement:
.nf
\f3
.fl
@@ -427,10 +432,10 @@ case 2:
.fl
\fP
.fi
-If the \f2\-Xlint:fallthrough\fP flag were used when compiling this code, the compiler would emit a warning about "possible fall\-through into case," along with the line number of the case in question.
+If the \f2\-Xlint:fallthrough\fP flag were used when compiling this code, the compiler would emit a warning about "possible fall\-through into case," along with the line number of the case in question.
.TP 3
-finally
-Warn about \f2finally\fP clauses that cannot complete normally. For example:
+finally
+Warn about \f2finally\fP clauses that cannot complete normally. For example:
.nf
\f3
.fl
@@ -456,13 +461,13 @@ Warn about \f2finally\fP clauses that cannot complete normally. For example:
.fl
\fP
.fi
-The compiler generates a warning for \f2finally\fP block in this example. When this method is called, it returns a value of \f20\fP, not \f21\fP. A \f2finally\fP block always executes when the \f2try\fP block exits. In this example, if control is transferred to the \f2catch\fP, then the method exits. However, the \f2finally\fP block must be executed, so it is executed, even though control has already been transferred outside the method.
+The compiler generates a warning for \f2finally\fP block in this example. When this method is called, it returns a value of \f20\fP, not \f21\fP. A \f2finally\fP block always executes when the \f2try\fP block exits. In this example, if control is transferred to the \f2catch\fP, then the method exits. However, the \f2finally\fP block must be executed, so it is executed, even though control has already been transferred outside the method.
.TP 3
-options
-Warn about issues relating to the use of command line options. See Cross\-Compilation Example for an example of this kind of warning.
+options
+Warn about issues relating to the use of command line options. See Cross\-Compilation Example for an example of this kind of warning.
.TP 3
-overrides
-Warn about issues regarding method overrides. For example, consider the following two classes:
+overrides
+Warn about issues regarding method overrides. For example, consider the following two classes:
.nf
\f3
.fl
@@ -493,10 +498,10 @@ The compiler generates a warning similar to the following:
\f2warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod overrides varargsMethod(String...) in ClassWithVarargsMethod; overriding method is missing '...'\fP
.br
.br
-When the compiler encounters a varargs method, it translates the varargs formal parameter into an array. In the method \f2ClassWithVarargsMethod.varargsMethod\fP, the compiler translates the varargs formal parameter \f2String... s\fP to the formal parameter \f2String[] s\fP, an array, which matches the formal parameter of the method \f2ClassWithOverridingMethod.varargsMethod\fP. Consequently, this example compiles.
+When the compiler encounters a varargs method, it translates the varargs formal parameter into an array. In the method \f2ClassWithVarargsMethod.varargsMethod\fP, the compiler translates the varargs formal parameter \f2String... s\fP to the formal parameter \f2String[] s\fP, an array, which matches the formal parameter of the method \f2ClassWithOverridingMethod.varargsMethod\fP. Consequently, this example compiles.
.TP 3
-path
-Warn about invalid path elements and nonexistent path directories on the command line (with regards to the class path, the source path, and other paths). Such warnings cannot be suppressed with the \f2@SuppressWarnings\fP annotation. For example:
+path
+Warn about invalid path elements and nonexistent path directories on the command line (with regards to the class path, the source path, and other paths). Such warnings cannot be suppressed with the \f2@SuppressWarnings\fP annotation. For example:
.nf
\f3
.fl
@@ -505,11 +510,11 @@ javac \-Xlint:path \-classpath /nonexistentpath Example.java
\fP
.fi
.TP 3
-processing
+processing
Warn about issues regarding annotation processing. The compiler generates this warning if you have a class that has an annotation, and you use an annotation processor that cannot handle that type of exception. For example, the following is a simple annotation processor:
.br
.br
-\f3Source file \fP\f4AnnoProc.java\fP:
+\f3Source file \fP\f4AnnoProc.java\fP:
.nf
\f3
.fl
@@ -545,7 +550,7 @@ public class AnnoProc extends AbstractProcessor {
.fl
\fP
.fi
-\f3Source file \fP\f4AnnosWithoutProcessors.java\fP\f3:\fP
+\f3Source file \fP\f4AnnosWithoutProcessors.java\fP\f3:\fP
.nf
\f3
.fl
@@ -559,15 +564,14 @@ class AnnosWithoutProcessors { }
.fl
\fP
.fi
-The following commands compile the annotation processor \f2AnnoProc\fP, then run this annotation processor against the source file \f2AnnosWithoutProcessors.java\fP:
+The following commands compile the annotation processor \f2AnnoProc\fP, then run this annotation processor against the source file \f2AnnosWithoutProcessors.java\fP:
.nf
\f3
.fl
-% javac AnnoProc.java
+% \fP\f3javac AnnoProc.java\fP
.fl
-% javac \-cp . \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors.java
+% \f3javac \-cp . \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors.java\fP
.fl
-\fP
.fi
When the compiler runs the annotation processor against the source file \f2AnnosWithoutProcessors.java\fP, it generates the following warning:
.br
@@ -575,10 +579,10 @@ When the compiler runs the annotation processor against the source file \f2Annos
\f2warning: [processing] No processor claimed any of these annotations: Anno\fP
.br
.br
-To resolve this issue, you can rename the annotation defined and used in the class \f2AnnosWithoutProcessors\fP from \f2Anno\fP to \f2NotAnno\fP.
+To resolve this issue, you can rename the annotation defined and used in the class \f2AnnosWithoutProcessors\fP from \f2Anno\fP to \f2NotAnno\fP.
.TP 3
-rawtypes
-Warn about unchecked operations on raw types. The following statement generates a \f2rawtypes\fP warning:
+rawtypes
+Warn about unchecked operations on raw types. The following statement generates a \f2rawtypes\fP warning:
.nf
\f3
.fl
@@ -586,7 +590,7 @@ void countElements(List l) { ... }
.fl
\fP
.fi
-The following does not generate a \f2rawtypes\fP warning:
+The following does not generate a \f2rawtypes\fP warning:
.nf
\f3
.fl
@@ -594,10 +598,10 @@ void countElements(List> l) { ... }
.fl
\fP
.fi
-\f2List\fP is a raw type. However, \f2List>\fP is a unbounded wildcard parameterized type. Because \f2List\fP is a parameterized interface, you should always specify its type argument. In this example, the \f2List\fP formal argument is specified with a unbounded wildcard (\f2?\fP) as its formal type parameter, which means that the \f2countElements\fP method can accept any instantiation of the \f2List\fP interface.
+\f2List\fP is a raw type. However, \f2List>\fP is a unbounded wildcard parameterized type. Because \f2List\fP is a parameterized interface, you should always specify its type argument. In this example, the \f2List\fP formal argument is specified with a unbounded wildcard (\f2?\fP) as its formal type parameter, which means that the \f2countElements\fP method can accept any instantiation of the \f2List\fP interface.
.TP 3
-serial
-Warn about missing \f2serialVersionUID\fP definitions on serializable classes. For example:
+serial
+Warn about missing \f2serialVersionUID\fP definitions on serializable classes. For example:
.nf
\f3
.fl
@@ -633,10 +637,10 @@ The compiler generates the following warning:
\f2warning: [serial] serializable class PersistentTime has no definition of serialVersionUID\fP
.br
.br
-If a serializable class does not explicitly declare a field named \f2serialVersionUID\fP, then the serialization runtime will calculate a default \f2serialVersionUID\fP value for that class based on various aspects of the class, as described in the Java Object Serialization Specification. However, it is strongly recommended that all serializable classes explicitly declare \f2serialVersionUID\fP values because the default process of computing \f2serialVersionUID\fP vales is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected \f2InvalidClassExceptions\fP during deserialization. Therefore, to guarantee a consistent \f2serialVersionUID\fP value across different Java compiler implementations, a serializable class must declare an explicit \f2serialVersionUID\fP value.
+If a serializable class does not explicitly declare a field named \f2serialVersionUID\fP, then the serialization runtime will calculate a default \f2serialVersionUID\fP value for that class based on various aspects of the class, as described in the Java Object Serialization Specification. However, it is strongly recommended that all serializable classes explicitly declare \f2serialVersionUID\fP values because the default process of computing \f2serialVersionUID\fP vales is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected \f2InvalidClassExceptions\fP during deserialization. Therefore, to guarantee a consistent \f2serialVersionUID\fP value across different Java compiler implementations, a serializable class must declare an explicit \f2serialVersionUID\fP value.
.TP 3
-static
-Warn about issues relating to use of statics. For example:
+static
+Warn about issues relating to use of statics. For example:
.nf
\f3
.fl
@@ -650,7 +654,7 @@ class XLintStatic {
.fl
\fP
.fi
-The compiler generates the following warning:
+The compiler generates the following warning:
.nf
\f3
.fl
@@ -658,7 +662,7 @@ warning: [static] static method should be qualified by type name, XLintStatic, i
.fl
\fP
.fi
-To resolve this issue, you can call the static method \f2m1\fP as follows:
+To resolve this issue, you can call the static method \f2m1\fP as follows:
.nf
\f3
.fl
@@ -666,10 +670,10 @@ XLintStatic.m1();
.fl
\fP
.fi
-Alternatively, you can remove the \f2static\fP keyword from the declaration of the method \f2m1\fP.
+Alternatively, you can remove the \f2static\fP keyword from the declaration of the method \f2m1\fP.
.TP 3
-try
-Warn about issues relating to use of \f2try\fP blocks, including try\-with\-resources statements. For example, a warning is generated for the following statement because the resource \f2ac\fP declared in the \f2try\fP statement is not used:
+try
+Warn about issues relating to use of \f2try\fP blocks, including try\-with\-resources statements. For example, a warning is generated for the following statement because the resource \f2ac\fP declared in the \f2try\fP statement is not used:
.nf
\f3
.fl
@@ -682,8 +686,8 @@ try ( AutoCloseable ac = getResource() ) {
\fP
.fi
.TP 3
-unchecked
-Give more detail for unchecked conversion warnings that are mandated by the Java Language Specification. For example:
+unchecked
+Give more detail for unchecked conversion warnings that are mandated by the Java Language Specification. For example:
.nf
\f3
.fl
@@ -699,10 +703,10 @@ During type erasure, the types \f2ArrayList\fP and \f2List\fP be
The variable \f2ls\fP has the parameterized type \f2List\fP. When the \f2List\fP referenced by \f2l\fP is assigned to \f2ls\fP, the compiler generates an unchecked warning; the compiler is unable to determine at compile time, and moreover knows that the JVM will not be able to determine at runtime, if \f2l\fP refers to a \f2List\fP type; it does not. Consequently, heap pollution occurs.
.br
.br
-In detail, a heap pollution situation occurs when the \f2List\fP object \f2l\fP, whose static type is \f2List\fP, is assigned to another \f2List\fP object, \f2ls\fP, that has a different static type, \f2List\fP. However, the compiler still allows this assignment. It must allow this assignment to preserve backwards compatibility with versions of Java SE that do not support generics. Because of type erasure, \f2List\fP and \f2List\fP both become \f2List\fP. Consequently, the compiler allows the assignment of the object \f2l\fP, which has a raw type of \f2List\fP, to the object \f2ls\fP.
+In detail, a heap pollution situation occurs when the \f2List\fP object \f2l\fP, whose static type is \f2List\fP, is assigned to another \f2List\fP object, \f2ls\fP, that has a different static type, \f2List\fP. However, the compiler still allows this assignment. It must allow this assignment to preserve backwards compatibility with versions of Java SE that do not support generics. Because of type erasure, \f2List\fP and \f2List\fP both become \f2List\fP. Consequently, the compiler allows the assignment of the object \f2l\fP, which has a raw type of \f2List\fP, to the object \f2ls\fP.
.TP 3
-varargs
-Warn about unsafe usages of variable arguments (varargs) methods, in particular, those that contain non\-reifiable arguments. For example:
+varargs
+Warn about unsafe usages of variable arguments (varargs) methods, in particular, those that contain non\-reifiable arguments. For example:
.nf
\f3
.fl
@@ -722,7 +726,7 @@ public class ArrayBuilder {
.fl
\fP
.fi
-The compiler generates the following warning for the definition of the method \f2ArrayBuilder.addToList\fP:
+The compiler generates the following warning for the definition of the method \f2ArrayBuilder.addToList\fP:
.nf
\f3
.fl
@@ -730,7 +734,7 @@ warning: [varargs] Possible heap pollution from parameterized vararg type T
.fl
\fP
.fi
-When the compiler encounters a varargs method, it translates the varargs formal parameter into an array. However, the Java programming language does not permit the creation of arrays of parameterized types. In the method \f2ArrayBuilder.addToList\fP, the compiler translates the varargs formal parameter \f2T... elements\fP to the formal parameter \f2T[] elements\fP, an array. However, because of type erasure, the compiler converts the varargs formal parameter to \f2Object[] elements\fP. Consequently, there is a possibility of heap pollution.
+When the compiler encounters a varargs method, it translates the varargs formal parameter into an array. However, the Java programming language does not permit the creation of arrays of parameterized types. In the method \f2ArrayBuilder.addToList\fP, the compiler translates the varargs formal parameter \f2T... elements\fP to the formal parameter \f2T[] elements\fP, an array. However, because of type erasure, the compiler converts the varargs formal parameter to \f2Object[] elements\fP. Consequently, there is a possibility of heap pollution.
.RE
.LP
@@ -748,7 +752,7 @@ Filenames within an argument file are relative to the current directory, not the
.LP
When executing javac, pass in the path and name of each argument file with the '\f2@\fP' leading character. When javac encounters an argument beginning with the character `\f2@\fP', it expands the contents of that file into the argument list.
.LP
-.SS
+.SS
Example \- Single Arg File
.LP
.LP
@@ -765,7 +769,7 @@ You could use a single argument file named "\f2argfile\fP" to hold all javac arg
.LP
This argument file could contain the contents of both files shown in the next example.
.LP
-.SS
+.SS
Example \- Two Arg Files
.LP
.LP
@@ -820,7 +824,7 @@ You would then run \f3javac\fP with:
.fi
.LP
-.SS
+.SS
Example \- Arg Files with Paths
.LP
.LP
@@ -842,7 +846,7 @@ The argument files can have paths, but any filenames inside the files are relati
.LP
The API for annotation processors is defined in the \f2javax.annotation.processing\fP and \f2javax.lang.model\fP packages and subpackages.
.LP
-.SS
+.SS
Overview of annotation processing
.LP
.LP
@@ -857,7 +861,7 @@ If any processors generate any new source files, another round of annotation pro
.LP
After a round occurs where no new source files are generated, the annotation processors will be invoked one last time, to give them a chance to complete any work they may need to do. Finally, unless the \f3\-proc:only\fP option is used, the compiler will compile the original and all the generated source files.
.LP
-.SS
+.SS
Implicitly loaded source files
.LP
.LP
@@ -894,7 +898,7 @@ The compiler may not discover the need for some type information until after ann
.LP
\f3javac\fP supports the new Java Compiler API defined by the classes and interfaces in the \f2javax.tools\fP package.
.LP
-.SS
+.SS
Example
.LP
.LP
@@ -917,7 +921,7 @@ This will write any diagnostics to the standard output stream, and return the ex
.LP
You can use other methods on the \f2javax.tools.JavaCompiler\fP interface to handle diagnostics, control where files are read from and written to, and so on.
.LP
-.SS
+.SS
Old Interface
.LP
.LP
@@ -951,7 +955,7 @@ Note that all \f3other\fP classes and methods found in a package whose name star
.LP
.SH "EXAMPLES"
.LP
-.SS
+.SS
Compiling a Simple Program
.LP
.LP
@@ -1005,7 +1009,7 @@ Hello Everyone
.fi
.LP
-.SS
+.SS
Compiling Multiple Source Files
.LP
.LP
@@ -1033,7 +1037,7 @@ Aloha.java GutenTag.java Hello.java Hi.java
.fi
.LP
-.SS
+.SS
Specifying a User Class Path
.LP
.LP
@@ -1068,7 +1072,7 @@ If we change \f2greetings.Hi\fP again, to use a banner utility, that utility als
.nf
\f3
.fl
-% \fP\f3javac \-classpath /examples:/lib/Banners.jar \\
+% \fP\f3javac \-classpath /examples:/lib/Banners.jar \\
.fl
/examples/greetings/Hi.java\fP
.fl
@@ -1086,7 +1090,7 @@ To execute a class in \f2greetings\fP, we need access both to \f2greetings\fP an
.fi
.LP
-.SS
+.SS
Separating Source Files and Class Files
.LP
.LP
@@ -1113,7 +1117,7 @@ Banners.jar
.fl
% \f3ls classes\fP
.fl
-% \f3javac \-sourcepath src \-classpath classes:lib/Banners.jar \\
+% \f3javac \-sourcepath src \-classpath classes:lib/Banners.jar \\
.fl
src/farewells/GoodBye.java \-d classes\fP
.fl
@@ -1131,16 +1135,16 @@ Base.class GoodBye.class
.LP
\f3Note:\fP The compiler compiled \f2src/farewells/Base.java\fP, even though we didn't specify it on the command line. To trace automatic compiles, use the \f3\-verbose\fP option.
.LP
-.SS
+.SS
Cross\-Compilation Example
.LP
.LP
-Here we use \f3javac\fP to compile code that will run on a 1.6 VM.
+The following example uses \f3javac\fP to compile code that will run on a 1.6 VM.
.LP
.nf
\f3
.fl
-% \fP\f3javac \-source 1.6 \-target 1.6 \-bootclasspath jdk1.6.0/lib/rt.jar \\
+% \fP\f3javac \-source 1.6 \-target 1.6 \-bootclasspath jdk1.6.0/lib/rt.jar \\
.fl
\-extdirs "" OldCode.java\fP
.fl
@@ -1174,32 +1178,32 @@ o
.na
\f2The javac Guide\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/javac/index.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/javac/index.html
.TP 2
o
-java(1) \- the Java Application Launcher
+java(1) \- the Java Application Launcher
.TP 2
o
-jdb(1) \- Java Application Debugger
+jdb(1) \- Java Application Debugger
.TP 2
o
-javah(1) \- C Header and Stub File Generator
+javah(1) \- C Header and Stub File Generator
.TP 2
o
-javap(1) \- Class File Disassembler
+javap(1) \- Class File Disassembler
.TP 2
o
-javadoc(1) \- API Documentation Generator
+javadoc(1) \- API Documentation Generator
.TP 2
o
-jar(1) \- JAR Archive Tool
+jar(1) \- JAR Archive Tool
.TP 2
o
.na
\f2The Java Extensions Framework\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/extensions/index.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/extensions/index.html
.RE
.LP
-
+
diff --git a/jdk/src/bsd/doc/man/javadoc.1 b/jdk/src/bsd/doc/man/javadoc.1
index 7ccc12b..1593417 100755
--- a/jdk/src/bsd/doc/man/javadoc.1
+++ b/jdk/src/bsd/doc/man/javadoc.1
@@ -19,7 +19,7 @@
." or visit www.oracle.com if you need additional information or have any
." questions.
."
-.TH javadoc 1 "10 May 2011"
+.TH javadoc 1 "16 Mar 2012"
.SH "Name"
javadoc \- The Java API Documentation Generator
.LP
@@ -31,68 +31,68 @@ Generates HTML pages of API documentation from Java source files. This document
Arguments can be in any order. See processing of Source Files for details on how the Javadoc tool determines which "\f2.java\fP" files to process.
.RS 3
.TP 3
-options
-Command\-line options, as specified in this document. To see a typical use of javadoc options, see Real\-World Example.
+options
+Command\-line options, as specified in this document. To see a typical use of javadoc options, see Real\-World Example.
.TP 3
-packagenames
-A series of names of packages, separated by spaces, such as \f2java.lang\ java.lang.reflect\ java.awt\fP. You must separately specify each package you want to document. Wildcards are not allowed; use \-subpackages for recursion. The Javadoc tool uses \f2\-sourcepath\fP to look for these package names. See Example \- Documenting One or More Packages
+packagenames
+A series of names of packages, separated by spaces, such as \f2java.lang\ java.lang.reflect\ java.awt\fP. You must separately specify each package you want to document. Wildcards are not allowed; use \-subpackages for recursion. The Javadoc tool uses \f2\-sourcepath\fP to look for these package names. See Example \- Documenting One or More Packages
.TP 3
-sourcefilenames
-A series of source file names, separated by spaces, each of which can begin with a path and contain a wildcard such as asterisk (*). The Javadoc tool will process every file whose name ends with ".java", and whose name, when stripped of that suffix, is actually a legal class name (see the Java Language Specification). Therefore, you can name files with dashes (such as \f2X\-Buffer\fP), or other illegal characters, to prevent them from being documented. This is useful for test files and template files The path that precedes the source file name determines where javadoc will look for the file. (The Javadoc tool does \f2not\fP use \f2\-sourcepath\fP to look for these source file names.) Relative paths are relative to the current directory, so passing in \f2Button.java\fP is identical to \f2./Button.java\fP. A source file name with an absolute path and a wildcard, for example, is \f2/home/src/java/awt/Graphics*.java\fP. See Example\ \-\ Documenting One or More Classes. You can also mix packagenames and sourcefilenames, as in Example\ \-\ Documenting Both Packages and Classes
+sourcefilenames
+A series of source file names, separated by spaces, each of which can begin with a path and contain a wildcard such as asterisk (*). The Javadoc tool will process every file whose name ends with ".java", and whose name, when stripped of that suffix, is actually a legal class name (see the Java Language Specification). Therefore, you can name files with dashes (such as \f2X\-Buffer\fP), or other illegal characters, to prevent them from being documented. This is useful for test files and template files The path that precedes the source file name determines where javadoc will look for the file. (The Javadoc tool does \f2not\fP use \f2\-sourcepath\fP to look for these source file names.) Relative paths are relative to the current directory, so passing in \f2Button.java\fP is identical to \f2./Button.java\fP. A source file name with an absolute path and a wildcard, for example, is \f2/home/src/java/awt/Graphics*.java\fP. See Example\ \-\ Documenting One or More Classes. You can also mix packagenames and sourcefilenames, as in Example\ \-\ Documenting Both Packages and Classes
.TP 3
-\-subpackages pkg1:pkg2:...
-Generates documentation from source files in the specified packages and recursively in their subpackages. An alternative to supplying packagenames or sourcefilenames.
+\-subpackages pkg1:pkg2:...
+Generates documentation from source files in the specified packages and recursively in their subpackages. An alternative to supplying packagenames or sourcefilenames.
.TP 3
-@argfiles
-One or more files that contain a list of Javadoc options, packagenames and sourcefilenames in any order. Wildcards (*) and \f2\-J\fP options are not allowed in these files.
+@argfiles
+One or more files that contain a list of Javadoc options, packagenames and sourcefilenames in any order. Wildcards (*) and \f2\-J\fP options are not allowed in these files.
.RE
.SH "DESCRIPTION"
.LP
The \f3Javadoc\fP tool parses the declarations and documentation comments in a set of Java source files and produces a corresponding set of HTML pages describing (by default) the public and protected classes, nested classes (but not anonymous inner classes), interfaces, constructors, methods, and fields. You can use it to generate the API (Application Programming Interface) documentation or the implementation documentation for a set of source files.
.LP
You can run the Javadoc tool on entire packages, individual source files, or both. When documenting entire packages, you can either use \f2\-subpackages\fP for traversing recursively down from a top\-level directory, or pass in an explicit list of package names. When documenting individual source files, you pass in a list of source (\f2.java\fP) filenames. Examples are given at the end of this document. How Javadoc processes source files is covered next.
-.SS
+.SS
Processing of source files
.LP
The Javadoc tool processes files that end in "\f2.java\fP" plus other files described under Source Files. If you run the Javadoc tool by explicitly passing in individual source filenames, you can determine exactly which "\f2.java\fP" files are processed. However, that is not how most developers want to work, as it is simpler to pass in package names. The Javadoc tool can be run three ways without explicitly specifying the source filenames. You can (1) pass in package names, (2) use \f2\-subpackages\fP, and (3) use wildcards with source filenames (\f2*.java\fP). In these cases, the Javadoc tool processes a "\f2.java\fP" file only if it fulfills all of the following requirements:
.RS 3
.TP 2
o
-Its name, after stripping off the "\f2.java\fP" suffix, is actually a legal class name (see the Java Language Specification for legal characters)
+Its name, after stripping off the "\f2.java\fP" suffix, is actually a legal class name (see the Java Language Specification for legal characters)
.TP 2
o
-Its directory path relative to the root of the source tree is actually a legal package name (after converting its separators to dots)
+Its directory path relative to the root of the source tree is actually a legal package name (after converting its separators to dots)
.TP 2
o
-Its package statement contains the legal package name (specified in the previous bullet)
+Its package statement contains the legal package name (specified in the previous bullet)
.RE
.LP
\f3Processing of links\fP \- During a run, the Javadoc tool automatically adds cross\-reference links to package, class and member names that are being documented as part of that run. Links appear in several places:
.RS 3
.TP 2
o
-Declarations (return types, argument types, field types)
+Declarations (return types, argument types, field types)
.TP 2
o
-"See Also" sections generated from \f2@see\fP tags
+"See Also" sections generated from \f2@see\fP tags
.TP 2
o
-In\-line text generated from \f2{@link}\fP tags
+In\-line text generated from \f2{@link}\fP tags
.TP 2
o
-Exception names generated from \f2@throws\fP tags
+Exception names generated from \f2@throws\fP tags
.TP 2
o
-"Specified by" links to members in interfaces and "Overrides" links to members in classes
+"Specified by" links to members in interfaces and "Overrides" links to members in classes
.TP 2
o
-Summary tables listing packages, classes and members
+Summary tables listing packages, classes and members
.TP 2
o
-Package and class inheritance trees
+Package and class inheritance trees
.TP 2
o
-The index
+The index
.RE
.LP
You can add hyperlinks to existing text for classes not included on the command line (but generated separately) by way of the \f2\-link\fP and \f2\-linkoffline\fP options.
@@ -107,12 +107,12 @@ Relying on the compiler ensures that the HTML output corresponds exactly with th
.LP
In many cases, the Javadoc tool allows you to generate documentation for source files whose code is incomplete or erroneous. This is a benefit that enables you to generate documentation before all debugging and troubleshooting is done. For example, according to the \f2Java Language Specification\fP, a class that contains an abstract method should itself be declared abstract. The Javadoc tool does not check for this, and would proceed without a warning, whereas the javac compiler stops on this error. The Javadoc tool does do some primitive checking of doc comments. Use the DocCheck doclet to check the doc comments more thoroughly.
.LP
-When the Javadoc tool builds its internal structure for the documentation, it loads all referenced classes. Because of this, the Javadoc tool must be able to find all referenced classes, whether bootstrap classes, extensions, or user classes. For more about this, see
+When the Javadoc tool builds its internal structure for the documentation, it loads all referenced classes. Because of this, the Javadoc tool must be able to find all referenced classes, whether bootstrap classes, extensions, or user classes. For more about this, see
.na
\f2How Classes Are Found\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/tools/findingclasses.html. Generally speaking, classes you create must either be loaded as an extension or in the Javadoc tool's class path.
-.SS
+http://docs.oracle.com/javase/7/docs/technotes/tools/findingclasses.html. Generally speaking, classes you create must either be loaded as an extension or in the Javadoc tool's class path.
+.SS
Javadoc Doclets
.LP
You can customize the content and format of the Javadoc tool's output by using doclets. The Javadoc tool has a default "built\-in" doclet, called the standard doclet, that generates HTML\-formatted API documentation. You can modify or subclass the standard doclet, or write your own doclet to generate HTML, XML, MIF, RTF or whatever output format you'd like. Information about doclets and their use is at the following locations:
@@ -122,14 +122,14 @@ o
.na
\f2Javadoc Doclets\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/javadoc/index.html
+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/index.html
.TP 2
o
-The \f2\-doclet\fP command\-line option
+The \f2\-doclet\fP command\-line option
.RE
.LP
When a custom doclet is not specified with the \f2\-doclet\fP command line option, the Javadoc tool will use the default standard doclet. The javadoc tool has several command line options that are available regardless of which doclet is being used. The standard doclet adds a supplementary set of command line options. Both sets of options are described below in the options section.
-.SS
+.SS
Related Documentation and Doclets
.RS 3
.TP 2
@@ -137,89 +137,89 @@ o
.na
\f2Javadoc Enhancements\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/javadoc/index.html for details about improvements added in Javadoc.
+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/index.html for details about improvements added in Javadoc.
.TP 2
o
.na
\f2Javadoc FAQ\fP @
.fi
-http://java.sun.com/j2se/javadoc/faq/index.html for answers to common questions, information about Javadoc\-related tools, and workarounds for bugs.
+http://java.sun.com/j2se/javadoc/faq/index.html for answers to common questions, information about Javadoc\-related tools, and workarounds for bugs.
.TP 2
o
.na
\f2How to Write Doc Comments for Javadoc\fP @
.fi
-http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html for more information about Sun conventions for writing documentation comments.
+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html for more information about Sun conventions for writing documentation comments.
.TP 2
o
.na
\f2Requirements for Writing API Specifications\fP @
.fi
-http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Standard requirements used when writing the Java SE Platform Specification. It can be useful whether you are writing API specifications in source file documentation comments or in other formats. It covers requirements for packages, classes, interfaces, fields and methods to satisfy testable assertions.
+http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Standard requirements used when writing the Java SE Platform Specification. It can be useful whether you are writing API specifications in source file documentation comments or in other formats. It covers requirements for packages, classes, interfaces, fields and methods to satisfy testable assertions.
.TP 2
o
.na
\f2Documentation Comment Specification\fP @
.fi
-http://java.sun.com/docs/books/jls/first_edition/html/18.doc.html \- The original specification on documentation comments, Chapter 18, Documentation Comments, in the \f2Java Language Specification\fP, First Edition, by James Gosling, Bill Joy, and Guy Steele. (This chapter was removed from the second edition.)
+http://java.sun.com/docs/books/jls/first_edition/html/18.doc.html \- The original specification on documentation comments, Chapter 18, Documentation Comments, in the \f2Java Language Specification\fP, First Edition, by James Gosling, Bill Joy, and Guy Steele. (This chapter was removed from the second edition.)
.TP 2
o
.na
\f2DocCheck Doclet\fP @
.fi
-http://www.oracle.com/technetwork/java/javase/documentation/index\-141437.html \- Checks doc comments in source files and generates a report listing the errors and irregularities it finds. It is part of the Doc Check Utilities.
+http://www.oracle.com/technetwork/java/javase/documentation/index\-141437.html \- Checks doc comments in source files and generates a report listing the errors and irregularities it finds. It is part of the Doc Check Utilities.
.TP 2
o
.na
\f2MIF Doclet\fP @
.fi
-http://java.sun.com/j2se/javadoc/mifdoclet/ \- Can automate the generation of API documentation in MIF, FrameMaker and PDF formats. MIF is Adobe FrameMaker's interchange format.
+http://java.sun.com/j2se/javadoc/mifdoclet/ \- Can automate the generation of API documentation in MIF, FrameMaker and PDF formats. MIF is Adobe FrameMaker's interchange format.
.RE
-.SS
+.SS
Terminology
.LP
The terms \f2documentation comment\fP, \f2doc comment\fP, \f2main description\fP, \f2tag\fP, \f2block tag\fP, and \f2in\-line tag\fP are described at Documentation Comments. These other terms have specific meanings within the context of the Javadoc tool:
.RS 3
.TP 3
-generated document
-The document generated by the javadoc tool from the doc comments in Java source code. The default generated document is in HTML and is created by the standard doclet.
+generated document
+The document generated by the javadoc tool from the doc comments in Java source code. The default generated document is in HTML and is created by the standard doclet.
.LP
.TP 3
-name
-A name of a program element written in the Java Language \-\- that is, the name of a package, class, interface, field, constructor or method. A name can be fully\-qualified, such as \f2java.lang.String.equals(java.lang.Object)\fP, or partially\-qualified, such as \f2equals(Object)\fP.
+name
+A name of a program element written in the Java Language \-\- that is, the name of a package, class, interface, field, constructor or method. A name can be fully\-qualified, such as \f2java.lang.String.equals(java.lang.Object)\fP, or partially\-qualified, such as \f2equals(Object)\fP.
.LP
.TP 3
-documented classes
-The classes and interfaces for which detailed documentation is generated during a javadoc run. To be documented, the source files must be available, their source filenames or package names must be passed into the javadoc command, and they must not be filtered out by their access modifier (public, protected, package\-private or private). We also refer to these as the classes included in the javadoc output, or the \f2included classes\fP.
+documented classes
+The classes and interfaces for which detailed documentation is generated during a javadoc run. To be documented, the source files must be available, their source filenames or package names must be passed into the javadoc command, and they must not be filtered out by their access modifier (public, protected, package\-private or private). We also refer to these as the classes included in the javadoc output, or the \f2included classes\fP.
.LP
.TP 3
-included classes
-Classes and interfaces whose details are documented during a run of the Javadoc tool. Same as \f2documented classes\fP.
+included classes
+Classes and interfaces whose details are documented during a run of the Javadoc tool. Same as \f2documented classes\fP.
.LP
.TP 3
-excluded classes
-Classes and interfaces whose details are \f2not\fP documented during a run of the Javadoc tool.
+excluded classes
+Classes and interfaces whose details are \f2not\fP documented during a run of the Javadoc tool.
.LP
.TP 3
-referenced classes
-The classes and interfaces that are explicitly referred to in the definition (implementation) or doc comments of the documented classes and interfaces. Examples of references include return type, parameter type, cast type, extended class, implemented interface, imported classes, classes used in method bodies, @see, {@link}, {@linkplain}, and {@inheritDoc} tags. (Notice this definition has changed since
+referenced classes
+The classes and interfaces that are explicitly referred to in the definition (implementation) or doc comments of the documented classes and interfaces. Examples of references include return type, parameter type, cast type, extended class, implemented interface, imported classes, classes used in method bodies, @see, {@link}, {@linkplain}, and {@inheritDoc} tags. (Notice this definition has changed since
.na
\f21.3\fP @
.fi
-http://download.oracle.com/javase/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses.) When the Javadoc tool is run, it should load into memory all of the referenced classes in javadoc's bootclasspath and classpath. (The Javadoc tool prints a "Class not found" warning for referenced classes not found.) The Javadoc tool can derive enough information from the .class files to determine their existence and the fully\-qualified names of their members.
+http://docs.oracle.com/javase/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses.) When the Javadoc tool is run, it should load into memory all of the referenced classes in javadoc's bootclasspath and classpath. (The Javadoc tool prints a "Class not found" warning for referenced classes not found.) The Javadoc tool can derive enough information from the .class files to determine their existence and the fully\-qualified names of their members.
.LP
.TP 3
-external referenced classes
-The referenced classes whose documentation is not being generated during a javadoc run. In other words, these classes are not passed into the Javadoc tool on the command line. Links in the generated documentation to those classes are said to be \f2external references\fP or \f2external links\fP. For example, if you run the Javadoc tool on only the \f2java.awt\fP package, then any class in \f2java.lang\fP, such as \f2Object\fP, is an external referenced class. External referenced classes can be linked to using the \f2\-link\fP and \f2\-linkoffline\fP options. An important property of an external referenced class is that its source comments are normally not available to the Javadoc run. In this case, these comments cannot be inherited.
+external referenced classes
+The referenced classes whose documentation is not being generated during a javadoc run. In other words, these classes are not passed into the Javadoc tool on the command line. Links in the generated documentation to those classes are said to be \f2external references\fP or \f2external links\fP. For example, if you run the Javadoc tool on only the \f2java.awt\fP package, then any class in \f2java.lang\fP, such as \f2Object\fP, is an external referenced class. External referenced classes can be linked to using the \f2\-link\fP and \f2\-linkoffline\fP options. An important property of an external referenced class is that its source comments are normally not available to the Javadoc run. In this case, these comments cannot be inherited.
.RE
.SH "SOURCE FILES"
.LP
The Javadoc tool will generate output originating from four different types of "source" files: Java language source files for classes (\f2.java\fP), package comment files, overview comment files, and miscellaneous unprocessed files. This section also covers test files and template files that can also be in the source tree, but which you want to be sure not to document.
-.SS
+.SS
Class Source Code Files
.LP
Each class or interface and its members can have their own documentation comments, contained in a \f2.java\fP file. For more details about these doc comments, see Documentation Comments.
-.SS
+.SS
Package Comment Files
.LP
Each package can have its own documentation comment, contained in its own "source" file, that the Javadoc tool will merge into the package summary page that it generates. You typically include in this comment any documentation that applies to the entire package.
@@ -228,10 +228,10 @@ To create a package comment file, you have a choice of two files to place your c
.RS 3
.TP 2
o
-\f2package\-info.java\fP \- Can contain a package declaration, package annotations, package comments and Javadoc tags. This file is generally preferred over package.html.
+\f2package\-info.java\fP \- Can contain a package declaration, package annotations, package comments and Javadoc tags. This file is generally preferred over package.html.
.TP 2
o
-\f2package.html\fP \- Can contain only package comments and Javadoc tags, no package annotations.
+\f2package.html\fP \- Can contain only package comments and Javadoc tags, no package annotations.
.RE
.LP
A package may have a single \f2package.html\fP file or a single \f2package\-info.java\fP file but not both. Place either file in the package directory in the source tree along with your \f2.java\fP files.
@@ -244,9 +244,9 @@ File: \f2java/applet/package\-info.java\fP
.fl
/**
.fl
- * Provides the classes necessary to create an
+ * Provides the classes necessary to create an
.fl
- * applet and the classes an applet uses
+ * applet and the classes an applet uses
.fl
* to communicate with its applet context.
.fl
@@ -260,7 +260,7 @@ File: \f2java/applet/package\-info.java\fP
.fl
* {@link java.awt.Panel} class) with a few extra
.fl
- * methods that the applet context can use to
+ * methods that the applet context can use to
.fl
* initialize, start, and stop the applet.
.fl
@@ -289,7 +289,7 @@ File: \f2java/applet/package.html\fP
.fl
.fl
-Provides the classes necessary to create an applet and the
+Provides the classes necessary to create an applet and the
.fl
classes an applet uses to communicate with its applet context.
.fl
@@ -303,11 +303,11 @@ window (see the {@link java.awt.Panel} class) with a
.fl
few extra methods that the applet context can use to
.fl
-initialize, start, and stop the applet.
+initialize, start, and stop the applet.
.fl
.fl
-@since 1.0
+@since 1.0
.fl
@see java.awt
.fl
@@ -318,7 +318,7 @@ initialize, start, and stop the applet.
\fP
.fi
.LP
-Notice this is just a normal HTML file and does not include a package declaration. The content of the package comment file is written in HTML, like all other comments, with one exception: The documentation comment should not include the comment separators \f2/**\fP and \f2*/\fP or leading asterisks. When writing the comment, you should make the first sentence a summary about the package, and not put a title or any other text between \f2\fP and the first sentence. You can include package tags; as with any documentation comment, all block tags must appear after the main description. If you add a \f2@see\fP tag in a package comment file, it must have a fully\-qualified name. For more details, see the
+Notice this is just a normal HTML file and does not include a package declaration. The content of the package comment file is written in HTML, like all other comments, with one exception: The documentation comment should not include the comment separators \f2/**\fP and \f2*/\fP or leading asterisks. When writing the comment, you should make the first sentence a summary about the package, and not put a title or any other text between \f2\fP and the first sentence. You can include package tags; as with any documentation comment, all block tags must appear after the main description. If you add a \f2@see\fP tag in a package comment file, it must have a fully\-qualified name. For more details, see the
.na
\f2example of \fP\f2package.html\fP @
.fi
@@ -328,26 +328,26 @@ http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#p
.RS 3
.TP 2
o
-Copies the comment for processing. (For \f2package.html\fP, copies all content between \f2\fP and \f2\fP HTML tags. You can include a \f2\fP section to put a \f2\fP, source file copyright statement, or other information, but none of these will appear in the generated documentation.)
+Copies the comment for processing. (For \f2package.html\fP, copies all content between \f2\fP and \f2\fP HTML tags. You can include a \f2\fP section to put a \f2\fP, source file copyright statement, or other information, but none of these will appear in the generated documentation.)
.TP 2
o
-Processes any package tags that are present.
+Processes any package tags that are present.
.TP 2
o
-Inserts the processed text at the bottom of the package summary page it generates, as shown in
+Inserts the processed text at the bottom of the package summary page it generates, as shown in
.na
\f2Package Summary\fP @
.fi
-http://download.oracle.com/javase/7/docs/api/java/applet/package\-summary.html.
+http://docs.oracle.com/javase/7/docs/api/java/applet/package\-summary.html.
.TP 2
o
-Copies the first sentence of the package comment to the top of the package summary page. It also adds the package name and this first sentence to the list of packages on the overview page, as shown in
+Copies the first sentence of the package comment to the top of the package summary page. It also adds the package name and this first sentence to the list of packages on the overview page, as shown in
.na
\f2Overview Summary\fP @
.fi
-http://download.oracle.com/javase/7/docs/api/overview\-summary.html. The end\-of\-sentence is determined by the same rules used for the end of the first sentence of class and member main descriptions.
+http://docs.oracle.com/javase/7/docs/api/overview\-summary.html. The end\-of\-sentence is determined by the same rules used for the end of the first sentence of class and member main descriptions.
.RE
-.SS
+.SS
Overview Comment File
.LP
Each application or set of packages that you are documenting can have its own overview documentation comment, kept in its own "source" file, that the Javadoc tool will merge into the overview page that it generates. You typically include in this comment any documentation that applies to the entire application or set of packages.
@@ -362,22 +362,22 @@ When you run the Javadoc tool, you specify the overview comment file name with t
.RS 3
.TP 2
o
-Copies all content between \f2\fP and \f2\fP tags for processing.
+Copies all content between \f2\fP and \f2\fP tags for processing.
.TP 2
o
-Processes any overview tags that are present.
+Processes any overview tags that are present.
.TP 2
o
-Inserts the processed text at the bottom of the overview page it generates, as shown in
+Inserts the processed text at the bottom of the overview page it generates, as shown in
.na
\f2Overview Summary\fP @
.fi
-http://download.oracle.com/javase/7/docs/api/overview\-summary.html.
+http://docs.oracle.com/javase/7/docs/api/overview\-summary.html.
.TP 2
o
-Copies the first sentence of the overview comment to the top of the overview summary page.
+Copies the first sentence of the overview comment to the top of the overview summary page.
.RE
-.SS
+.SS
Miscellaneous Unprocessed Files
.LP
You can also include in your source any miscellaneous files that you want the Javadoc tool to copy to the destination directory. These typically includes graphic files, example Java source (.java) and class (.class) files, and self\-standing HTML files whose content would overwhelm the documentation comment of a normal Java source file.
@@ -390,7 +390,7 @@ All links to these unprocessed files must be hard\-coded, because the Javadoc to
.fl
/**
.fl
- * This button looks like this:
+ * This button looks like this:
.fl
*
.fl
@@ -398,7 +398,7 @@ All links to these unprocessed files must be hard\-coded, because the Javadoc to
.fl
\fP
.fi
-.SS
+.SS
Test Files and Template Files
.LP
Some developers have indicated they want to store test files and templates files in the source tree near their corresponding source files. That is, they would like to put them in the same directory, or a subdirectory, of those source files.
@@ -429,60 +429,60 @@ By default, javadoc uses a standard doclet that generates HTML\-formatted docume
.RS 3
.TP 2
o
-One \f3class or interface page\fP (\f2classname\fP\f2.html\fP) for each class or interface it is documenting.
+One \f3class or interface page\fP (\f2classname\fP\f2.html\fP) for each class or interface it is documenting.
.TP 2
o
-One \f3package page\fP (\f2package\-summary.html\fP) for each package it is documenting. The Javadoc tool will include any HTML text provided in a file named \f2package.html\fP or \f2package\-info.java\fP in the package directory of the source tree.
+One \f3package page\fP (\f2package\-summary.html\fP) for each package it is documenting. The Javadoc tool will include any HTML text provided in a file named \f2package.html\fP or \f2package\-info.java\fP in the package directory of the source tree.
.TP 2
o
-One \f3overview page\fP (\f2overview\-summary.html\fP) for the entire set of packages. This is the front page of the generated document. The Javadoc tool will include any HTML text provided in a file specified with the \f2\-overview\fP option. Note that this file is created only if you pass into javadoc two or more package names. For further explanation, see HTML Frames.)
+One \f3overview page\fP (\f2overview\-summary.html\fP) for the entire set of packages. This is the front page of the generated document. The Javadoc tool will include any HTML text provided in a file specified with the \f2\-overview\fP option. Note that this file is created only if you pass into javadoc two or more package names. For further explanation, see HTML Frames.)
.RE
.LP
\f3Cross\-Reference Pages\fP
.RS 3
.TP 2
o
-One \f3class hierarchy page for the entire set of packages\fP (\f2overview\-tree.html\fP). To view this, click on "Overview" in the navigation bar, then click on "Tree".
+One \f3class hierarchy page for the entire set of packages\fP (\f2overview\-tree.html\fP). To view this, click on "Overview" in the navigation bar, then click on "Tree".
.TP 2
o
-One \f3class hierarchy page for each package\fP (\f2package\-tree.html\fP) To view this, go to a particular package, class or interface page; click "Tree" to display the hierarchy for that package.
+One \f3class hierarchy page for each package\fP (\f2package\-tree.html\fP) To view this, go to a particular package, class or interface page; click "Tree" to display the hierarchy for that package.
.TP 2
o
-One \f3"use" page\fP for each package (\f2package\-use.html\fP) and a separate one for each class and interface (\f2class\-use/\fP\f2classname\fP\f2.html\fP). This page describes what packages, classes, methods, constructors and fields use any part of the given class, interface or package. Given a class or interface A, its "use" page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+One \f3"use" page\fP for each package (\f2package\-use.html\fP) and a separate one for each class and interface (\f2class\-use/\fP\f2classname\fP\f2.html\fP). This page describes what packages, classes, methods, constructors and fields use any part of the given class, interface or package. Given a class or interface A, its "use" page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
.TP 2
o
-A \f3deprecated API page\fP (\f2deprecated\-list.html\fP) listing all deprecated names. (A deprecated name is not recommended for use, generally due to improvements, and a replacement name is usually given. Deprecated APIs may be removed in future implementations.)
+A \f3deprecated API page\fP (\f2deprecated\-list.html\fP) listing all deprecated names. (A deprecated name is not recommended for use, generally due to improvements, and a replacement name is usually given. Deprecated APIs may be removed in future implementations.)
.TP 2
o
-A \f3constant field values page\fP (\f2constant\-values.html\fP) for the values of static fields.
+A \f3constant field values page\fP (\f2constant\-values.html\fP) for the values of static fields.
.TP 2
o
-A \f3serialized form page\fP (\f2serialized\-form.html\fP) for information about serializable and externalizable classes. Each such class has a description of its serialization fields and methods. This information is of interest to re\-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class comment. The standard doclet automatically generates a serialized form page: any class (public or non\-public) that implements Serializable is included, along with \f2readObject\fP and \f2writeObject\fP methods, the fields that are serialized, and the doc comments from the \f2@serial\fP, \f2@serialField\fP, and \f2@serialData\fP tags. Public serializable classes can be excluded by marking them (or their package) with \f2@serial exclude\fP, and package\-private serializable classes can be included by marking them (or their package) with \f2@serial include\fP. As of 1.4, you can generate the complete serialized form for public and private classes by running javadoc \f2without\fP specifying the \f2\-private\fP option.
+A \f3serialized form page\fP (\f2serialized\-form.html\fP) for information about serializable and externalizable classes. Each such class has a description of its serialization fields and methods. This information is of interest to re\-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class comment. The standard doclet automatically generates a serialized form page: any class (public or non\-public) that implements Serializable is included, along with \f2readObject\fP and \f2writeObject\fP methods, the fields that are serialized, and the doc comments from the \f2@serial\fP, \f2@serialField\fP, and \f2@serialData\fP tags. Public serializable classes can be excluded by marking them (or their package) with \f2@serial exclude\fP, and package\-private serializable classes can be included by marking them (or their package) with \f2@serial include\fP. As of 1.4, you can generate the complete serialized form for public and private classes by running javadoc \f2without\fP specifying the \f2\-private\fP option.
.TP 2
o
-An \f3index\fP (\f2index\-*.html\fP) of all class, interface, constructor, field and method names, alphabetically arranged. This is internationalized for Unicode and can be generated as a single file or as a separate file for each starting character (such as A\-Z for English).
+An \f3index\fP (\f2index\-*.html\fP) of all class, interface, constructor, field and method names, alphabetically arranged. This is internationalized for Unicode and can be generated as a single file or as a separate file for each starting character (such as A\-Z for English).
.RE
.LP
\f3Support Files\fP
.RS 3
.TP 2
o
-A \f3help page\fP (\f2help\-doc.html\fP) that describes the navigation bar and the above pages. You can provide your own custom help file to override the default using \f2\-helpfile\fP.
+A \f3help page\fP (\f2help\-doc.html\fP) that describes the navigation bar and the above pages. You can provide your own custom help file to override the default using \f2\-helpfile\fP.
.TP 2
o
-One \f3index.html file\fP which creates the HTML frames for display. This is the file you load to display the front page with frames. This file itself contains no text content.
+One \f3index.html file\fP which creates the HTML frames for display. This is the file you load to display the front page with frames. This file itself contains no text content.
.TP 2
o
-Several \f3frame files\fP (\f2*\-frame.html\fP) containing lists of packages, classes and interfaces, used when HTML frames are being displayed.
+Several \f3frame files\fP (\f2*\-frame.html\fP) containing lists of packages, classes and interfaces, used when HTML frames are being displayed.
.TP 2
o
-A \f3package list\fP file (\f2package\-list\fP), used by the \f2\-link\fP and \f2\-linkoffline\fP options. This is a text file, not HTML, and is not reachable through any links.
+A \f3package list\fP file (\f2package\-list\fP), used by the \f2\-link\fP and \f2\-linkoffline\fP options. This is a text file, not HTML, and is not reachable through any links.
.TP 2
o
-A \f3style sheet\fP file (\f2stylesheet.css\fP) that controls a limited amount of color, font family, font size, font style and positioning on the generated pages.
+A \f3style sheet\fP file (\f2stylesheet.css\fP) that controls a limited amount of color, font family, font size, font style and positioning on the generated pages.
.TP 2
o
-A \f3doc\-files\fP directory that holds any image, example, source code or other files that you want copied to the destination directory. These files are not processed by the Javadoc tool in any manner \-\- that is, any javadoc tags in them will be ignored. This directory is not generated unless it exists in the source tree.
+A \f3doc\-files\fP directory that holds any image, example, source code or other files that you want copied to the destination directory. These files are not processed by the Javadoc tool in any manner \-\- that is, any javadoc tags in them will be ignored. This directory is not generated unless it exists in the source tree.
.RE
.LP
\f3HTML Frames\fP
@@ -495,10 +495,10 @@ Load one of the following two files as the starting page depending on whether yo
.RS 3
.TP 2
o
-\f2index.html\fP (for frames)
+\f2index.html\fP (for frames)
.TP 2
o
-\f2overview\-summary.html\fP (for no frames)
+\f2overview\-summary.html\fP (for no frames)
.RE
.LP
\f3Generated File Structure\fP
@@ -590,7 +590,7 @@ NOTE \- Directories are shown in \f3bold\fP. The asterisks (\f2*\fP) indicate th
AudioClip.html Page for AudioClip source code
.fl
.fi
-.SS
+.SS
Generated API Declarations
.LP
The Javadoc tool generates a declaration at the start of each class, interface, field, constructor, and method description for that API item. For example, the declaration for the \f2Boolean\fP class is:
@@ -611,7 +611,7 @@ Rather than relying on the keyword \f2synchronized\fP, APIs should document thei
.SH "DOCUMENTATION COMMENTS"
.LP
The original "Documentation Comment Specification" can be found under related documentation.
-.SS
+.SS
Commenting the Source Code
.LP
You can include \f2documentation comments\fP ("doc comments") in the source code, ahead of declarations for any class, interface, method, constructor, or field. You can also create doc comments for each package and another one for the overview, though their syntax is slightly different. Doc comments are also known informally as "Javadoc comments" (but this term violates its trademark usage). A doc comment consists of the characters between the characters \f2/**\fP that begin the comment and the characters \f2*/\fP that end it. Leading asterisks are allowed on each line and are described further below. The text in a comment can continue onto multiple lines.
@@ -718,13 +718,13 @@ Here is a doc comment:
.nf
\f3
.fl
-/**
+/**
.fl
* The horizontal and vertical distances of point (x,y)
.fl
*/
.fl
-public int x, y; // Avoid this
+public int x, y; // Avoid this
.fl
\fP
.fi
@@ -737,7 +737,7 @@ public int \fP\f3x\fP
.fl
.fi
.RS 3
-The horizontal and vertical distances of point (x,y)
+The horizontal and vertical distances of point (x,y)
.RE
.nf
\f3
@@ -746,25 +746,25 @@ public int \fP\f3y\fP
.fl
.fi
.RS 3
-The horizontal and vertical distances of point (x,y)
+The horizontal and vertical distances of point (x,y)
.RE
.LP
\f3Use header tags carefully\fP \- When writing documentation comments for members, it's best not to use HTML heading tags such as
and
, because the Javadoc tool creates an entire structured document and these structural tags might interfere with the formatting of the generated document. However, it is fine to use these headings in class and package comments to provide your own structure.
-.SS
+.SS
Automatic Copying of Method Comments
.LP
The Javadoc tool has the ability to copy or "inherit" method comments in classes and interfaces under the following two circumstances. Constructors, fields and nested classes do not inherit doc comments.
.RS 3
.TP 2
o
-\f3Automatically inherit comment to fill in missing text\fP \- When a main description, or \f2@return\fP, \f2@param\fP or \f2@throws\fP tag is missing from a method comment, the Javadoc tool copies the corresponding main description or tag comment from the method it overrides or implements (if any), according to the algorithm below.
+\f3Automatically inherit comment to fill in missing text\fP \- When a main description, or \f2@return\fP, \f2@param\fP or \f2@throws\fP tag is missing from a method comment, the Javadoc tool copies the corresponding main description or tag comment from the method it overrides or implements (if any), according to the algorithm below.
.LP
-More specifically, when a \f2@param\fP tag for a particular parameter is missing, then the comment for that parameter is copied from the method further up the inheritance hierarchy. When a \f2@throws\fP tag for a particular exception is missing, the \f2@throws\fP tag is copied \f2only if that exception is declared\fP.
+More specifically, when a \f2@param\fP tag for a particular parameter is missing, then the comment for that parameter is copied from the method further up the inheritance hierarchy. When a \f2@throws\fP tag for a particular exception is missing, the \f2@throws\fP tag is copied \f2only if that exception is declared\fP.
.LP
-This behavior contrasts with version 1.3 and earlier, where the presence of any main description or tag would prevent all comments from being inherited.
+This behavior contrasts with version 1.3 and earlier, where the presence of any main description or tag would prevent all comments from being inherited.
.TP 2
o
-\f3Explicitly inherit comment with {@inheritDoc} tag\fP \- Insert the inline tag \f2{@inheritDoc}\fP in a method main description or \f2@return\fP, \f2@param\fP or \f2@throws\fP tag comment \-\- the corresponding inherited main description or tag comment is copied into that spot.
+\f3Explicitly inherit comment with {@inheritDoc} tag\fP \- Insert the inline tag \f2{@inheritDoc}\fP in a method main description or \f2@return\fP, \f2@param\fP or \f2@throws\fP tag comment \-\- the corresponding inherited main description or tag comment is copied into that spot.
.RE
.LP
The source file for the inherited method need only be on the path specified by \-sourcepath for the doc comment to actually be available to copy. Neither the class nor its package needs to be passed in on the command line. This contrasts with 1.3.x and earlier releases, where the class had to be a documented class
@@ -773,13 +773,13 @@ The source file for the inherited method need only be on the path specified by \
.RS 3
.TP 2
o
-When a method in a class overrides a method in a superclass
+When a method in a class overrides a method in a superclass
.TP 2
o
-When a method in an interface overrides a method in a superinterface
+When a method in an interface overrides a method in a superinterface
.TP 2
o
-When a method in a class implements a method in an interface
+When a method in a class implements a method in an interface
.RE
.LP
In the first two cases, for method overrides, the Javadoc tool generates a subheading "Overrides" in the documentation for the overriding method, with a link to the method it is overriding, whether or not the comment is inherited.
@@ -790,37 +790,37 @@ In the third case, when a method in a given class implements a method in an inte
.RS 3
.TP 3
1.
-Look in each directly implemented (or extended) interface in the order they appear following the word implements (or extends) in the method declaration. Use the first doc comment found for this method.
+Look in each directly implemented (or extended) interface in the order they appear following the word implements (or extends) in the method declaration. Use the first doc comment found for this method.
.TP 3
2.
-If step 1 failed to find a doc comment, recursively apply this entire algorithm to each directly implemented (or extended) interface, in the same order they were examined in step 1.
+If step 1 failed to find a doc comment, recursively apply this entire algorithm to each directly implemented (or extended) interface, in the same order they were examined in step 1.
.TP 3
3.
-If step 2 failed to find a doc comment and this is a class other than Object (not an interface):
+If step 2 failed to find a doc comment and this is a class other than Object (not an interface):
.RS 3
.TP 3
a.
-If the superclass has a doc comment for this method, use it.
+If the superclass has a doc comment for this method, use it.
.TP 3
b.
-If step 3a failed to find a doc comment, recursively apply this entire algorithm to the superclass.
+If step 3a failed to find a doc comment, recursively apply this entire algorithm to the superclass.
.RE
.RE
.SH "JAVADOC TAGS"
.LP
-The Javadoc tool parses special tags when they are embedded within a Java doc comment. These doc tags enable you to autogenerate a complete, well\-formatted API from your source code. The tags start with an "at" sign (\f2@\fP) and are case\-sensitive \-\- they must be typed with the uppercase and lowercase letters as shown. A tag must start at the beginning of a line (after any leading spaces and an optional asterisk) or it is treated as normal text. By convention, tags with the same name are grouped together. For example, put all \f2@see\fP tags together.
+The Javadoc tool parses special tags when they are embedded within a Java doc comment. These doc tags enable you to autogenerate a complete, well\-formatted API from your source code. The tags start with an "at" sign (\f2@\fP) and are case\-sensitive \-\- they must be typed with the uppercase and lowercase letters as shown. A tag must start at the beginning of a line (after any leading spaces and an optional asterisk) or it is treated as normal text. By convention, tags with the same name are grouped together. For example, put all \f2@see\fP tags together.
.LP
Tags come in two types:
.RS 3
.TP 2
o
-\f3Block tags\fP \- Can be placed only in the tag section that follows the main description. Block tags are of the form: \f2@tag\fP.
+\f3Block tags\fP \- Can be placed only in the tag section that follows the main description. Block tags are of the form: \f2@tag\fP.
.TP 2
o
-\f3Inline tags\fP \- Can be placed anywhere in the main description or in the comments for block tags. Inline tags are denoted by curly braces: \f2{@tag}\fP.
+\f3Inline tags\fP \- Can be placed anywhere in the main description or in the comments for block tags. Inline tags are denoted by curly braces: \f2{@tag}\fP.
.RE
.LP
-For information about tags we might introduce in future releases, see
+For information about tags we might introduce in future releases, see
.na
\f2Proposed Tags\fP @
.fi
@@ -828,6 +828,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.html.
.LP
The current tags are:
.LP
+.TS
.if \n+(b.=1 .nr d. \n(.c-\n(c.-1
.de 35
.ps \n(.s
@@ -952,83 +953,83 @@ The current tags are:
.ls
..
.ec
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f3Tag\fP\h'|\n(41u'\f3Introduced in JDK/SDK\fP
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@author\fP\h'|\n(41u'1.0
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2{@code}\fP\h'|\n(41u'1.5
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2{@docRoot}\fP\h'|\n(41u'1.3
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@deprecated\fP\h'|\n(41u'1.0
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@exception\fP\h'|\n(41u'1.0
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2{@inheritDoc}\fP\h'|\n(41u'1.4
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2{@link}\fP\h'|\n(41u'1.2
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2{@linkplain}\fP\h'|\n(41u'1.4
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2{@literal}\fP\h'|\n(41u'1.5
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@param\fP\h'|\n(41u'1.0
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@return\fP\h'|\n(41u'1.0
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@see\fP\h'|\n(41u'1.0
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@serial\fP\h'|\n(41u'1.2
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@serialData\fP\h'|\n(41u'1.2
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@serialField\fP\h'|\n(41u'1.2
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@since\fP\h'|\n(41u'1.1
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@throws\fP\h'|\n(41u'1.2
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2{@value}\fP\h'|\n(41u'1.4
-.ta \n(80u \n(81u
+.ta \n(80u \n(81u
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f2@version\fP\h'|\n(41u'1.0
@@ -1036,16 +1037,17 @@ The current tags are:
.nr T. 1
.T# 1
.35
+.TE
.if \n-(b.=0 .nr c. \n(.c-\n(d.-42
.LP
For custom tags, see the \-tag option.
.RS 3
.TP 3
-@author\ name\-text
-Adds an "Author" entry with the specified \f2name\-text\fP to the generated docs when the \-author option is used. A doc comment may contain multiple \f2@author\fP tags. You can specify one name per \f2@author\fP tag or multiple names per tag. In the former case, the Javadoc tool inserts a comma (\f2,\fP) and space between names. In the latter case, the entire text is simply copied to the generated document without being parsed. Therefore, you can use multiple names per line if you want a localized name separator other than comma.
+@author\ name\-text
+Adds an "Author" entry with the specified \f2name\-text\fP to the generated docs when the \-author option is used. A doc comment may contain multiple \f2@author\fP tags. You can specify one name per \f2@author\fP tag or multiple names per tag. In the former case, the Javadoc tool inserts a comma (\f2,\fP) and space between names. In the latter case, the entire text is simply copied to the generated document without being parsed. Therefore, you can use multiple names per line if you want a localized name separator other than comma.
.RE
.LP
-For more details, see Where Tags Can Be Used and
+For more details, see Where Tags Can Be Used and
.na
\f2writing @author tags\fP @
.fi
@@ -1053,14 +1055,14 @@ http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@
.LP
.RS 3
.TP 3
-@deprecated\ deprecated\-text Note: You can deprecate a program element using the @Deprecated annotation.
+@deprecated\ deprecated\-text Note: You can deprecate a program element using the @Deprecated annotation.
.RE
.LP
Adds a comment indicating that this API should no longer be used (even though it may continue to work). The Javadoc tool moves the \f2deprecated\-text\fP ahead of the main description, placing it in italics and preceding it with a bold warning: "Deprecated". This tag is valid in all doc comments: overview, package, class, interface, constructor, method and field.
.LP
The first sentence of \f2deprecated\-text\fP should at least tell the user when the API was deprecated and what to use as a replacement. The Javadoc tool copies just the first sentence to the summary section and index. Subsequent sentences can also explain why it has been deprecated. You should include a \f2{@link}\fP tag (for Javadoc 1.2 or later) that points to the replacement API:
.LP
-For more details, see
+For more details, see
.na
\f2writing @deprecated tags\fP @
.fi
@@ -1068,7 +1070,7 @@ http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@
.RS 3
.TP 2
o
-For Javadoc 1.2 and later, use a \f2{@link}\fP tag. This creates the link in\-line, where you want it. For example:
+For Javadoc 1.2 and later, use a \f2{@link}\fP tag. This creates the link in\-line, where you want it. For example:
.nf
\f3
.fl
@@ -1078,75 +1080,75 @@ For Javadoc 1.2 and later, use a \f2{@link}\fP tag. This creates the link in\-li
.fl
*/
.fl
-
+
.fl
\fP
.fi
.TP 2
o
-For Javadoc 1.1, the standard format is to create a \f2@see\fP tag (which cannot be in\-line) for each \f2@deprecated\fP tag.
+For Javadoc 1.1, the standard format is to create a \f2@see\fP tag (which cannot be in\-line) for each \f2@deprecated\fP tag.
.RE
.LP
-For more about deprecation, see
+For more about deprecation, see
.na
\f2The @deprecated tag\fP @
.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/javadoc/deprecation/index.html.
+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/deprecation/index.html.
.LP
.RS 3
.TP 3
-{@code\ text}
-Equivalent to \f2{@literal}\fP.
+{@code\ text}
+Equivalent to \f2{@literal}\fP.
.LP
-Displays \f2text\fP in \f2code\fP font without interpreting the text as HTML markup or nested javadoc tags. This enables you to use regular angle brackets (\f2<\fP and \f2>\fP) instead of the HTML entities (\f2<\fP and \f2>\fP) in doc comments, such as in parameter types (\f2