--- .hgtags 2012-08-10 09:07:00.000000000 -0700
+++ .hgtags 2013-06-22 09:41:03.000000000 -0700
@@ -123,6 +123,7 @@
2d38c2a79c144c30cd04d143d83ee7ec6af40771 jdk7-b146
3ac30b3852876ccad6bd61697b5f9efa91ca7bc6 jdk7u1-b01
d91364304d7c4ecd34caffdba2b840aeb0d10b51 jdk7-b147
+00b623147f23ef8a92a25c4c28ef8681dc1d1b52 7u0
34451dc0580d5c95d97b95a564e6198f36545d68 jdk7u1-b02
bf735d852f79bdbb3373c777eec3ff27e035e7ba jdk7u1-b03
f66a2bada589f4157789e6f66472954d2f1c114e jdk7u1-b04
@@ -197,5 +198,79 @@
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
+941539a9f6441f053e8e7f31064944b2fc08879f jdk7u17-b32
+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
+170520883597f90771aca8251a8d089e7566e4bf jdk7u21-b12
+50bfbd21bf42f6ae4167226ac45cd79e0ab7758c jdk7u25-b03
+a94c9aa356bbed13c1e2b4a9a380117ddff1668f jdk7u25-b04
+29a789ae14dc09a50eb45d3445075642e77490a2 jdk7u25-b05
+8a7c657b7536006633b5e961d93e2173712a64fa jdk7u25-b06
+d45374e7c7eeb4e01d9f239e71e8a8aff453d55a jdk7u25-b07
+b01002577912b89306e88a9973b6f3bc049a2a69 jdk7u25-b08
+84285f4e0aa2f81b80bc6fbe713d768c0d9a7156 jdk7u25-b09
+aae1e27d347b71f65f548c12b918ede98d869b7c jdk7u25-b10
--- corba/.hgtags 2012-08-10 09:09:50.000000000 -0700
+++ corba/.hgtags 2013-06-22 09:41:22.000000000 -0700
@@ -123,6 +123,7 @@
770227a4087e4e401fe87ccd19738440111c3948 jdk7-b146
36f0efbc66ef8ace3cca8aa8d0c88f3334080f8a jdk7u1-b01
73323cb3396260d93e0ab731fd2d431096ceed0f jdk7-b147
+578c4d2c534cc761f5f5cc0d8360471bb8d5f94f 7u0
9515a2d034b4727c11aeea36354a549fbc469c4f jdk7u1-b02
dd71cb354c573c1addcda269a7dd9144bfce9587 jdk7u1-b03
eaee830124aa453627591d8f9eccb39d7e040876 jdk7u1-b04
@@ -197,5 +198,81 @@
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
+6401c6b99d2d43ed4f0e2d38dce496069f6e91f8 jdk7u17-b32
+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
+fa2a377ce52dfa88fca858d735d78b53f2b5b754 jdk7u21-b12
+3d0f2d5b1866860f7089b51cca8ca0ca41c04d9c jdk7u25-b01
+cdbafc5080eeb8ea3fec9fe7d071e0bf96635581 jdk7u25-b02
+2057de7ee6b17ab3335ec6cd5730f88f4cfe9502 jdk7u25-b03
+b180f1282ad221bde0d4d865c879c0fa7f8ef4c8 jdk7u25-b04
+d97e6c162735798fe0c9f1dd582aa1114b6c5447 jdk7u25-b05
+da9301dac56c26846212db33bb20001652b6ce60 jdk7u25-b06
+aa2dc8d3bb2cdd726ec97bc2bf130eec46467f28 jdk7u25-b07
+550d43da7fe2f85bbce88cc94066c589480b1221 jdk7u25-b08
+161ec4dd450d59e1b8ad136db231925c97ff6205 jdk7u25-b09
+c9da98e82bb006dccd94a50871d6cdb66fa2d7e7 jdk7u25-b10
--- corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk 2012-08-10 09:09:53.000000000 -0700
+++ corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 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
@@ -29,10 +29,6 @@
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 \
@@ -43,21 +39,12 @@
com/sun/corba/se/impl/orbutil/ObjectStreamClassUtil_1_3.java \
com/sun/corba/se/impl/orbutil/ORBConstants.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 \
--- corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java 2012-08-10 09:10:11.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java 2013-03-09 18:08:34.000000000 -0800
@@ -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 @@
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,
--- corba/src/share/classes/com/sun/corba/se/impl/activation/ServerManagerImpl.java 2012-08-10 09:10:12.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/activation/ServerManagerImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2004, 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
@@ -81,7 +81,6 @@
import com.sun.corba.se.impl.oa.poa.BadServerIdHandler;
import com.sun.corba.se.impl.orbutil.ORBConstants;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.impl.orbutil.ORBUtility;
import com.sun.corba.se.impl.util.Utility;
--- corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java 2012-08-10 09:10:12.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2004, 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
@@ -33,6 +33,8 @@
import java.io.Serializable;
import java.math.BigDecimal;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.List ;
import java.util.ArrayList ;
@@ -504,7 +506,13 @@
public org.omg.CORBA.portable.OutputStream create_output_stream()
{
//debug.log ("create_output_stream");
- return new AnyOutputStream(orb);
+ final ORB finalorb = this.orb;
+ return AccessController.doPrivileged(new PrivilegedAction() {
+ @Override
+ public AnyOutputStream run() {
+ return new AnyOutputStream(finalorb);
+ }
+ });
}
/**
@@ -1218,7 +1226,7 @@
// 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 +1259,7 @@
// 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
--- corba/src/share/classes/com/sun/corba/se/impl/corba/TypeCodeImpl.java 2012-08-10 09:10:13.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/corba/TypeCodeImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -600,7 +600,8 @@
}
public static CDROutputStream newOutputStream(ORB orb) {
- TypeCodeOutputStream tcos = new TypeCodeOutputStream((ORB)orb);
+ TypeCodeOutputStream tcos =
+ sun.corba.OutputStreamFactory.newTypeCodeOutputStream(orb);
//if (debug) System.out.println("Created TypeCodeOutputStream " + tcos +
// " with no parent");
return tcos;
--- corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java 2012-08-10 09:10:15.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java 2013-03-09 18:08:34.000000000 -0800
@@ -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 @@
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 @@
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 @@
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 @@
try {
if (valueHandler == null)
- valueHandler = ORBUtility.createValueHandler(orb);
+ valueHandler = ORBUtility.createValueHandler();
value = valueHandler.readValue(parent,
indirection,
--- corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java 2012-08-10 09:10:15.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java 2013-03-09 18:08:34.000000000 -0800
@@ -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 @@
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 @@
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 @@
private void writeRMIIIOPValueType(Serializable object, Class clazz) {
if (valueHandler == null)
- valueHandler = ORBUtility.createValueHandler(orb); //d11638
+ valueHandler = ORBUtility.createValueHandler(); //d11638
Serializable key = object;
--- corba/src/share/classes/com/sun/corba/se/impl/encoding/IDLJavaSerializationOutputStream.java 2012-08-10 09:10:16.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/encoding/IDLJavaSerializationOutputStream.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 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 @@
*
* @author Ram Jeyaraman
*/
-public class IDLJavaSerializationOutputStream extends CDROutputStreamBase {
+final class IDLJavaSerializationOutputStream extends CDROutputStreamBase {
private ORB orb;
private byte encodingVersion;
--- corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java 2012-08-10 09:10:16.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -196,7 +196,8 @@
}
public TypeCodeOutputStream createEncapsulation(org.omg.CORBA.ORB _orb) {
- TypeCodeOutputStream encap = new TypeCodeOutputStream((ORB)_orb, isLittleEndian());
+ TypeCodeOutputStream encap =
+ sun.corba.OutputStreamFactory.newTypeCodeOutputStream((ORB)_orb, isLittleEndian());
encap.setEnclosingOutputStream(this);
encap.makeEncapsulation();
//if (TypeCodeImpl.debug) System.out.println("Created TypeCodeOutputStream " + encap + " with parent " + this);
@@ -211,7 +212,8 @@
public static TypeCodeOutputStream wrapOutputStream(OutputStream os) {
boolean littleEndian = ((os instanceof CDROutputStream) ? ((CDROutputStream)os).isLittleEndian() : false);
- TypeCodeOutputStream tos = new TypeCodeOutputStream((ORB)os.orb(), littleEndian);
+ TypeCodeOutputStream tos =
+ sun.corba.OutputStreamFactory.newTypeCodeOutputStream((ORB)os.orb(), littleEndian);
tos.setEnclosingOutputStream(os);
//if (TypeCodeImpl.debug) System.out.println("Created TypeCodeOutputStream " + tos + " with parent " + os);
return tos;
--- corba/src/share/classes/com/sun/corba/se/impl/interceptors/CDREncapsCodec.java 2012-08-10 09:10:17.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/interceptors/CDREncapsCodec.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -155,7 +155,8 @@
// be versioned. This can be handled once this work is complete.
// Create output stream with default endianness.
- EncapsOutputStream cdrOut = new EncapsOutputStream(
+ EncapsOutputStream cdrOut =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream(
(com.sun.corba.se.spi.orb.ORB)orb, giopVersion );
// This is an encapsulation, so put out the endian:
--- corba/src/share/classes/com/sun/corba/se/impl/interceptors/PIHandlerImpl.java 2012-08-10 09:10:18.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/interceptors/PIHandlerImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -77,7 +77,6 @@
import com.sun.corba.se.impl.logging.ORBUtilSystemException;
import com.sun.corba.se.impl.logging.OMGSystemException;
import com.sun.corba.se.impl.corba.RequestImpl;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.impl.orbutil.ORBConstants;
import com.sun.corba.se.impl.orbutil.ORBUtility;
import com.sun.corba.se.impl.orbutil.StackImpl;
--- corba/src/share/classes/com/sun/corba/se/impl/interceptors/RequestInfoImpl.java 2012-08-10 09:10:18.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/interceptors/RequestInfoImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -86,13 +86,14 @@
import com.sun.corba.se.impl.encoding.EncapsOutputStream;
import com.sun.corba.se.impl.orbutil.ORBUtility;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.impl.util.RepositoryId;
import com.sun.corba.se.impl.logging.InterceptorsSystemException;
import com.sun.corba.se.impl.logging.OMGSystemException;
+import sun.corba.SharedSecrets;
+
/**
* Implementation of the RequestInfo interface as specified in
* orbos/99-12-02 section 5.4.1.
@@ -452,7 +453,8 @@
// Find the read method on the helper class:
String helperClassName = className + "Helper";
- Class helperClass = ORBClassLoader.loadClass( helperClassName );
+ Class> helperClass =
+ SharedSecrets.getJavaCorbaAccess().loadClass( helperClassName );
Class[] readParams = new Class[1];
readParams[0] = org.omg.CORBA.portable.InputStream.class;
Method readMethod = helperClass.getMethod( "read", readParams );
@@ -512,7 +514,8 @@
Class exceptionClass = userException.getClass();
String className = exceptionClass.getName();
String helperClassName = className + "Helper";
- Class helperClass = ORBClassLoader.loadClass( helperClassName );
+ Class> helperClass =
+ SharedSecrets.getJavaCorbaAccess().loadClass( helperClassName );
// Find insert( Any, class ) method
Class[] insertMethodParams = new Class[2];
@@ -656,7 +659,8 @@
// Convert the "core" service context to an
// "IOP" ServiceContext by writing it to a
// CDROutputStream and reading it back.
- EncapsOutputStream out = new EncapsOutputStream(myORB);
+ EncapsOutputStream out =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream(myORB);
context.write( out, GIOPVersion.V1_2 );
InputStream inputStream = out.create_input_stream();
@@ -692,8 +696,8 @@
{
int id = 0 ;
// Convert IOP.service_context to core.ServiceContext:
- EncapsOutputStream outputStream = new EncapsOutputStream(
- myORB );
+ EncapsOutputStream outputStream =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream(myORB);
InputStream inputStream = null;
UnknownServiceContext coreServiceContext = null;
ServiceContextHelper.write( outputStream, service_context );
--- corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java 2012-08-10 09:10:18.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java 2013-03-09 18:08:34.000000000 -0800
@@ -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 @@
// 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 @@
// 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 @@
// 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();
--- corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java 2012-08-10 09:10:18.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java 2013-06-22 09:39:21.000000000 -0700
@@ -300,11 +300,11 @@
resetStream();
}
- public final void setOrbStream(org.omg.CORBA_2_3.portable.InputStream os) {
+ final void setOrbStream(org.omg.CORBA_2_3.portable.InputStream os) {
orbStream = os;
}
- public final org.omg.CORBA_2_3.portable.InputStream getOrbStream() {
+ final org.omg.CORBA_2_3.portable.InputStream getOrbStream() {
return orbStream;
}
@@ -327,11 +327,11 @@
return (javax.rmi.CORBA.ValueHandler) vhandler;
}
- public final void increaseRecursionDepth(){
+ final void increaseRecursionDepth(){
recursionDepth++;
}
- public final int decreaseRecursionDepth(){
+ final int decreaseRecursionDepth(){
return --recursionDepth;
}
--- corba/src/share/classes/com/sun/corba/se/impl/io/IIOPOutputStream.java 2012-08-10 09:10:18.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/io/IIOPOutputStream.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2004, 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
@@ -124,19 +124,19 @@
}
}
- public final void setOrbStream(org.omg.CORBA_2_3.portable.OutputStream os) {
+ final void setOrbStream(org.omg.CORBA_2_3.portable.OutputStream os) {
orbStream = os;
}
- public final org.omg.CORBA_2_3.portable.OutputStream getOrbStream() {
+ final org.omg.CORBA_2_3.portable.OutputStream getOrbStream() {
return orbStream;
}
- public final void increaseRecursionDepth(){
+ final void increaseRecursionDepth(){
recursionDepth++;
}
- public final int decreaseRecursionDepth(){
+ final int decreaseRecursionDepth(){
return --recursionDepth;
}
--- corba/src/share/classes/com/sun/corba/se/impl/io/InputStreamHook.java 2012-08-10 09:10:18.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/io/InputStreamHook.java 2013-06-22 09:39:21.000000000 -0700
@@ -251,7 +251,7 @@
}
protected abstract byte getStreamFormatVersion();
- protected abstract org.omg.CORBA_2_3.portable.InputStream getOrbStream();
+ abstract org.omg.CORBA_2_3.portable.InputStream getOrbStream();
// Description of possible actions
protected static class ReadObjectState {
--- corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java 2012-08-10 09:10:18.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java 2013-03-09 18:08:34.000000000 -0800
@@ -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.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 @@
private static Object noArgsList[] = {};
private static Class noTypesList[] = {};
- private static Hashtable translatedFields;
-
/** true if represents enum type */
private boolean isEnum;
@@ -384,6 +383,55 @@
*/
}
+ 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 @@
* 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 @@
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 @@
private boolean hasExternalizableBlockData;
Method writeObjectMethod;
Method readObjectMethod;
- private Method writeReplaceObjectMethod;
- private Method readResolveObjectMethod;
+ private transient Method writeReplaceObjectMethod;
+ private transient Method readResolveObjectMethod;
private Constructor cons ;
/**
--- corba/src/share/classes/com/sun/corba/se/impl/io/OutputStreamHook.java 2012-08-10 09:10:19.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/io/OutputStreamHook.java 2013-06-22 09:39:21.000000000 -0700
@@ -179,7 +179,7 @@
putFields.write(this);
}
- public abstract org.omg.CORBA_2_3.portable.OutputStream getOrbStream();
+ abstract org.omg.CORBA_2_3.portable.OutputStream getOrbStream();
protected abstract void beginOptionalCustomData();
--- corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java 2012-08-10 09:10:19.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java 2013-03-09 18:08:34.000000000 -0800
@@ -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.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 @@
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 @@
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 @@
}
}
- /**
- * 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 @@
return RepositoryId.cache.getId(repId).isSequence();
}
- protected String getOutputStreamClassName() {
+ private String getOutputStreamClassName() {
return "com.sun.corba.se.impl.io.IIOPOutputStream";
}
@@ -843,29 +841,11 @@
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 @@
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 @@
}
- /**
- * 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;
}
}
--- corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java 2012-08-10 09:10:19.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -93,6 +93,22 @@
null, // tk_abstract_interface 32
};
+ static {
+ sun.corba.SharedSecrets.setJavaCorbaAccess(new sun.corba.JavaCorbaAccess() {
+ public ValueHandlerImpl newValueHandlerImpl() {
+ return ValueHandlerImpl.getInstance();
+ }
+ public Class> loadClass(String className) throws ClassNotFoundException {
+ if (Thread.currentThread().getContextClassLoader() != null) {
+ return Thread.currentThread().getContextClassLoader().
+ loadClass(className);
+ } else {
+ return ClassLoader.getSystemClassLoader().loadClass(className);
+ }
+ }
+ });
+ }
+
public static String getSignature(ValueMember member)
throws ClassNotFoundException {
--- corba/src/share/classes/com/sun/corba/se/impl/ior/EncapsulationUtility.java 2012-08-10 09:10:19.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/ior/EncapsulationUtility.java 2013-06-22 09:39:21.000000000 -0700
@@ -128,7 +128,8 @@
static public void writeEncapsulation( WriteContents obj,
OutputStream os )
{
- EncapsOutputStream out = new EncapsOutputStream( (ORB)os.orb() ) ;
+ EncapsOutputStream out =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream((ORB)os.orb());
out.putEndian() ;
--- corba/src/share/classes/com/sun/corba/se/impl/ior/GenericTaggedProfile.java 2012-08-10 09:10:19.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/ior/GenericTaggedProfile.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -95,7 +95,8 @@
public org.omg.IOP.TaggedProfile getIOPProfile()
{
- EncapsOutputStream os = new EncapsOutputStream( orb ) ;
+ EncapsOutputStream os =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream(orb);
write( os ) ;
InputStream is = (InputStream)(os.create_input_stream()) ;
return org.omg.IOP.TaggedProfileHelper.read( is ) ;
--- corba/src/share/classes/com/sun/corba/se/impl/ior/IORImpl.java 2012-08-10 09:10:19.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/ior/IORImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -213,7 +213,8 @@
{
StringWriter bs;
- MarshalOutputStream s = new EncapsOutputStream(factory);
+ MarshalOutputStream s =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream(factory);
s.putEndian();
write( (OutputStream)s );
bs = new StringWriter();
@@ -237,7 +238,8 @@
}
public org.omg.IOP.IOR getIOPIOR() {
- EncapsOutputStream os = new EncapsOutputStream(factory);
+ EncapsOutputStream os =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream(factory);
write(os);
InputStream is = (InputStream) (os.create_input_stream());
return org.omg.IOP.IORHelper.read(is);
--- corba/src/share/classes/com/sun/corba/se/impl/ior/ObjectKeyImpl.java 2012-08-10 09:10:20.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/ior/ObjectKeyImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -87,7 +87,8 @@
public byte[] getBytes( org.omg.CORBA.ORB orb )
{
- EncapsOutputStream os = new EncapsOutputStream( (ORB)orb ) ;
+ EncapsOutputStream os =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream((ORB)orb);
write( os ) ;
return os.toByteArray() ;
}
--- corba/src/share/classes/com/sun/corba/se/impl/ior/TaggedComponentFactoryFinderImpl.java 2012-08-10 09:10:21.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/ior/TaggedComponentFactoryFinderImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -61,7 +61,8 @@
public TaggedComponent create( org.omg.CORBA.ORB orb,
org.omg.IOP.TaggedComponent comp )
{
- EncapsOutputStream os = new EncapsOutputStream( (ORB)orb ) ;
+ EncapsOutputStream os =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream((ORB)orb);
org.omg.IOP.TaggedComponentHelper.write( os, comp ) ;
InputStream is = (InputStream)(os.create_input_stream() ) ;
// Skip the component ID: we just wrote it out above
--- corba/src/share/classes/com/sun/corba/se/impl/ior/iiop/IIOPProfileImpl.java 2012-08-10 09:10:22.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/ior/iiop/IIOPProfileImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -247,7 +247,8 @@
public org.omg.IOP.TaggedProfile getIOPProfile()
{
- EncapsOutputStream os = new EncapsOutputStream( orb ) ;
+ EncapsOutputStream os =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream(orb);
os.write_long( getId() ) ;
write( os ) ;
InputStream is = (InputStream)(os.create_input_stream()) ;
--- corba/src/share/classes/com/sun/corba/se/impl/ior/iiop/IIOPProfileTemplateImpl.java 2012-08-10 09:10:22.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/ior/iiop/IIOPProfileTemplateImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -132,8 +132,9 @@
// Note that this cannot be accomplished with a codec!
// Use the byte order of the given stream
- OutputStream encapsulatedOS = new EncapsOutputStream( (ORB)os.orb(),
- ((CDROutputStream)os).isLittleEndian() ) ;
+ OutputStream encapsulatedOS =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream(
+ (ORB)os.orb(), ((CDROutputStream)os).isLittleEndian() ) ;
okeyTemplate.write( id, encapsulatedOS ) ;
EncapsulationUtility.writeOutputStream( encapsulatedOS, os ) ;
--- corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java 2012-08-10 09:10:23.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -109,9 +109,9 @@
import com.sun.corba.se.impl.util.Utility;
import com.sun.corba.se.impl.util.IdentityHashtable;
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;
/**
* Provides utility methods that can be used by stubs and ties to
@@ -125,7 +125,8 @@
// 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);
@@ -259,7 +260,7 @@
return new MarshalException(message,inner);
} else if (ex instanceof ACTIVITY_REQUIRED) {
try {
- Class cl = ORBClassLoader.loadClass(
+ Class> cl = SharedSecrets.getJavaCorbaAccess().loadClass(
"javax.activity.ActivityRequiredException");
Class[] params = new Class[2];
params[0] = java.lang.String.class;
@@ -275,7 +276,7 @@
}
} else if (ex instanceof ACTIVITY_COMPLETED) {
try {
- Class cl = ORBClassLoader.loadClass(
+ Class> cl = SharedSecrets.getJavaCorbaAccess().loadClass(
"javax.activity.ActivityCompletedException");
Class[] params = new Class[2];
params[0] = java.lang.String.class;
@@ -291,7 +292,7 @@
}
} else if (ex instanceof INVALID_ACTIVITY) {
try {
- Class cl = ORBClassLoader.loadClass(
+ Class> cl = SharedSecrets.getJavaCorbaAccess().loadClass(
"javax.activity.InvalidActivityException");
Class[] params = new Class[2];
params[0] = java.lang.String.class;
--- corba/src/share/classes/com/sun/corba/se/impl/orb/ORBDataParserImpl.java 2012-08-10 09:10:31.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orb/ORBDataParserImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -48,7 +48,6 @@
import com.sun.corba.se.impl.encoding.CodeSetComponentInfo ;
import com.sun.corba.se.impl.legacy.connection.USLPort;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader ;
import com.sun.corba.se.impl.orbutil.ORBConstants ;
import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
--- corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java 2012-08-10 09:10:31.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -152,7 +152,6 @@
import com.sun.corba.se.impl.oa.poa.BadServerIdHandler;
import com.sun.corba.se.impl.oa.poa.DelegateImpl;
import com.sun.corba.se.impl.oa.poa.POAFactory;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.impl.orbutil.ORBConstants;
import com.sun.corba.se.impl.orbutil.ORBUtility;
import com.sun.corba.se.impl.orbutil.StackImpl;
@@ -551,7 +550,7 @@
public synchronized org.omg.CORBA.portable.OutputStream create_output_stream()
{
checkShutdownState();
- return new EncapsOutputStream(this);
+ return sun.corba.OutputStreamFactory.newEncapsOutputStream(this);
}
/**
@@ -840,7 +839,7 @@
// backward compatability 4365188
CodeBase cb;
- ValueHandler vh = ORBUtility.createValueHandler(this);
+ ValueHandler vh = ORBUtility.createValueHandler();
cb = (CodeBase)vh.getRunTimeCodeBase();
return ORBUtility.connectAndGetIOR( this, cb ) ;
--- corba/src/share/classes/com/sun/corba/se/impl/orb/ORBSingleton.java 2012-08-10 09:10:31.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orb/ORBSingleton.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2009, 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
@@ -149,7 +149,7 @@
}
public OutputStream create_output_stream() {
- return new EncapsOutputStream(this);
+ return sun.corba.OutputStreamFactory.newEncapsOutputStream(this);
}
public TypeCode create_struct_tc(String id,
--- corba/src/share/classes/com/sun/corba/se/impl/orb/ParserTable.java 2012-08-10 09:10:31.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orb/ParserTable.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -78,7 +78,6 @@
import com.sun.corba.se.impl.legacy.connection.USLPort ;
import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
import com.sun.corba.se.impl.oa.poa.BadServerIdHandler ;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader ;
import com.sun.corba.se.impl.orbutil.ORBConstants ;
import com.sun.corba.se.impl.protocol.giopmsgheaders.KeyAddr ;
import com.sun.corba.se.impl.protocol.giopmsgheaders.ProfileAddr ;
@@ -86,6 +85,8 @@
import com.sun.corba.se.impl.transport.DefaultIORToSocketInfoImpl;
import com.sun.corba.se.impl.transport.DefaultSocketFactoryImpl;
+import sun.corba.SharedSecrets;
+
/** Initialize the parser data for the standard ORB parser. This is used both
* to implement ORBDataParserImpl and to provide the basic testing framework
* for ORBDataParserImpl.
@@ -640,8 +641,8 @@
String param = (String)value ;
try {
- Class legacySocketFactoryClass =
- ORBClassLoader.loadClass(param);
+ Class> legacySocketFactoryClass =
+ SharedSecrets.getJavaCorbaAccess().loadClass(param);
// For security reasons avoid creating an instance if
// this socket factory class is not one that would fail
// the class cast anyway.
@@ -670,7 +671,8 @@
String param = (String)value ;
try {
- Class socketFactoryClass = ORBClassLoader.loadClass(param);
+ Class> socketFactoryClass =
+ SharedSecrets.getJavaCorbaAccess().loadClass(param);
// For security reasons avoid creating an instance if
// this socket factory class is not one that would fail
// the class cast anyway.
@@ -699,7 +701,8 @@
String param = (String)value ;
try {
- Class iorToSocketInfoClass = ORBClassLoader.loadClass(param);
+ Class> iorToSocketInfoClass =
+ SharedSecrets.getJavaCorbaAccess().loadClass(param);
// For security reasons avoid creating an instance if
// this socket factory class is not one that would fail
// the class cast anyway.
@@ -728,7 +731,8 @@
String param = (String)value ;
try {
- Class iiopPrimaryToContactInfoClass = ORBClassLoader.loadClass(param);
+ Class> iiopPrimaryToContactInfoClass =
+ SharedSecrets.getJavaCorbaAccess().loadClass(param);
// For security reasons avoid creating an instance if
// this socket factory class is not one that would fail
// the class cast anyway.
@@ -757,8 +761,8 @@
String param = (String)value ;
try {
- Class contactInfoListFactoryClass =
- ORBClassLoader.loadClass(param);
+ Class> contactInfoListFactoryClass =
+ SharedSecrets.getJavaCorbaAccess().loadClass(param);
// For security reasons avoid creating an instance if
// this socket factory class is not one that would fail
// the class cast anyway.
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java 2012-08-10 09:10:32.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java 1969-12-31 16:00:00.000000000 -0800
@@ -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();
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java 2012-08-10 09:10:32.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java 1969-12-31 16:00:00.000000000 -0800
@@ -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);
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java 2012-08-10 09:10:32.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java 1969-12-31 16:00:00.000000000 -0800
@@ -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);
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java 2012-08-10 09:10:32.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java 1969-12-31 16:00:00.000000000 -0800
@@ -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);
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBClassLoader.java 2012-08-10 09:10:33.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBClassLoader.java 1969-12-31 16:00:00.000000000 -0800
@@ -1,47 +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;
-
-/**
- * Based on feedback from bug report 4452016, all class loading
- * in the ORB is isolated here. It is acceptable to use
- * Class.forName only when one is certain that the desired class
- * should come from the core JDK.
- */
-public class ORBClassLoader
-{
- public static Class loadClass(String className)
- throws ClassNotFoundException
- {
- return ORBClassLoader.getClassLoader().loadClass(className);
- }
-
- public static ClassLoader getClassLoader() {
- if (Thread.currentThread().getContextClassLoader() != null)
- return Thread.currentThread().getContextClassLoader();
- else
- return ClassLoader.getSystemClassLoader();
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java 2012-08-10 09:10:33.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -90,6 +90,8 @@
import com.sun.corba.se.impl.logging.OMGSystemException ;
import com.sun.corba.se.impl.ior.iiop.JavaSerializationComponent;
+import sun.corba.SharedSecrets;
+
/**
* Handy class full of static functions that don't belong in util.Utility for pure ORB reasons.
*/
@@ -160,45 +162,13 @@
}
/**
- * 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.
@@ -294,8 +264,8 @@
{
try {
String name = classNameOf(strm.read_string());
- SystemException ex
- = (SystemException)ORBClassLoader.loadClass(name).newInstance();
+ SystemException ex = (SystemException)SharedSecrets.
+ getJavaCorbaAccess().loadClass(name).newInstance();
ex.minor = strm.read_long();
ex.completed = CompletionStatus.from_int(strm.read_long());
return ex;
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java 2012-08-10 09:10:33.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java 2013-03-09 18:08:34.000000000 -0800
@@ -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 @@
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.
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java 2012-08-10 09:10:33.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java 1969-12-31 16:00:00.000000000 -0800
@@ -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);
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java 2012-08-10 09:10:34.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java 1969-12-31 16:00:00.000000000 -0800
@@ -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);
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java 2012-08-10 09:10:34.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java 1969-12-31 16:00:00.000000000 -0800
@@ -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;
- }
-
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java 2012-08-10 09:10:34.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java 1969-12-31 16:00:00.000000000 -0800
@@ -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;
- }
-
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java 2012-08-10 09:10:34.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java 2013-03-09 18:08:34.000000000 -0800
@@ -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 @@
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 @@
}
/**
- * 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 @@
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;
- }
}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java 2012-08-10 09:10:34.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java 1969-12-31 16:00:00.000000000 -0800
@@ -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 +")");
- }
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java 2012-08-10 09:10:34.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java 1969-12-31 16:00:00.000000000 -0800
@@ -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;
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java 2012-08-10 09:10:35.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java 1969-12-31 16:00:00.000000000 -0800
@@ -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;
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java 2012-08-10 09:10:35.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java 1969-12-31 16:00:00.000000000 -0800
@@ -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";
- }
-}
--- corba/src/share/classes/com/sun/corba/se/impl/protocol/CorbaMessageMediatorImpl.java 2012-08-10 09:10:41.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/protocol/CorbaMessageMediatorImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -1794,8 +1794,7 @@
if (msg.getGIOPVersion().lessThan(GIOPVersion.V1_2)) {
// locate msgs 1.0 & 1.1 :=> grow,
- // REVISIT - build from factory
- outputObject = new CDROutputObject(
+ outputObject = sun.corba.OutputStreamFactory.newCDROutputObject(
(ORB) messageMediator.getBroker(),
this,
GIOPVersion.V1_0,
@@ -1804,8 +1803,7 @@
ORBConstants.STREAM_FORMAT_VERSION_1);
} else {
// 1.2 :=> stream
- // REVISIT - build from factory
- outputObject = new CDROutputObject(
+ outputObject = sun.corba.OutputStreamFactory.newCDROutputObject(
(ORB) messageMediator.getBroker(),
messageMediator,
reply,
@@ -1959,7 +1957,8 @@
ReplyMessage.NEEDS_ADDRESSING_MODE,
null, null);
// REVISIT: via acceptor factory.
- CDROutputObject outputObject = new CDROutputObject(
+ CDROutputObject outputObject =
+ sun.corba.OutputStreamFactory.newCDROutputObject(
(ORB)messageMediator.getBroker(),
this,
messageMediator.getGIOPVersion(),
@@ -2126,7 +2125,7 @@
ex.printStackTrace(pw);
pw.flush(); // NOTE: you must flush or baos will be empty.
EncapsOutputStream encapsOutputStream =
- new EncapsOutputStream((ORB)mediator.getBroker());
+ sun.corba.OutputStreamFactory.newEncapsOutputStream((ORB)mediator.getBroker());
encapsOutputStream.putEndian();
encapsOutputStream.write_wstring(baos.toString());
UnknownServiceContext serviceContext =
@@ -2203,12 +2202,11 @@
// REVISIT = do not use null.
//
if (messageMediator.getConnection() == null) {
- // REVISIT - needs factory
replyOutputObject =
- new CDROutputObject(orb, messageMediator,
- messageMediator.getReplyHeader(),
- messageMediator.getStreamFormatVersion(),
- BufferManagerFactory.GROW);
+ sun.corba.OutputStreamFactory.newCDROutputObject(orb,
+ messageMediator, messageMediator.getReplyHeader(),
+ messageMediator.getStreamFormatVersion(),
+ BufferManagerFactory.GROW);
} else {
replyOutputObject = messageMediator.getConnection().getAcceptor()
.createOutputObject(messageMediator.getBroker(), messageMediator);
--- corba/src/share/classes/com/sun/corba/se/impl/protocol/giopmsgheaders/LocateReplyMessage_1_2.java 2012-08-10 09:10:43.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/protocol/giopmsgheaders/LocateReplyMessage_1_2.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -41,7 +41,6 @@
import com.sun.corba.se.impl.orbutil.ORBUtility;
import com.sun.corba.se.impl.orbutil.ORBConstants;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.spi.logging.CORBALogDomains ;
import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
--- corba/src/share/classes/com/sun/corba/se/impl/protocol/giopmsgheaders/MessageBase.java 2012-08-10 09:10:45.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/protocol/giopmsgheaders/MessageBase.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -60,9 +60,10 @@
import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
import com.sun.corba.se.impl.orbutil.ORBUtility;
import com.sun.corba.se.impl.orbutil.ORBConstants;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.impl.protocol.AddressingDispositionException;
+import sun.corba.SharedSecrets;
+
/**
* This class acts as the base class for the various GIOP message types. This
* also serves as a factory to create various message types. We currently
@@ -909,7 +910,8 @@
SystemException sysEx = null;
try {
- Class clazz = ORBClassLoader.loadClass(exClassName);
+ Class> clazz =
+ SharedSecrets.getJavaCorbaAccess().loadClass(exClassName);
if (message == null) {
sysEx = (SystemException) clazz.newInstance();
} else {
--- corba/src/share/classes/com/sun/corba/se/impl/protocol/giopmsgheaders/ReplyMessage_1_0.java 2012-08-10 09:10:46.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/protocol/giopmsgheaders/ReplyMessage_1_0.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -37,7 +37,6 @@
import com.sun.corba.se.spi.servicecontext.ServiceContexts;
import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
import com.sun.corba.se.impl.orbutil.ORBUtility;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.spi.ior.IOR;
import com.sun.corba.se.impl.encoding.CDRInputStream;
--- corba/src/share/classes/com/sun/corba/se/impl/protocol/giopmsgheaders/ReplyMessage_1_1.java 2012-08-10 09:10:46.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/protocol/giopmsgheaders/ReplyMessage_1_1.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -37,7 +37,6 @@
import com.sun.corba.se.spi.servicecontext.ServiceContexts;
import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
import com.sun.corba.se.impl.orbutil.ORBUtility;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.spi.ior.IOR;
import com.sun.corba.se.impl.encoding.CDRInputStream;
--- corba/src/share/classes/com/sun/corba/se/impl/transport/CorbaContactInfoBase.java 2012-08-10 09:10:48.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/transport/CorbaContactInfoBase.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2004, 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
@@ -214,7 +214,7 @@
messageMediator;
OutputObject outputObject =
- new CDROutputObject(orb, messageMediator,
+ sun.corba.OutputStreamFactory.newCDROutputObject(orb, messageMediator,
corbaMessageMediator.getRequestHeader(),
corbaMessageMediator.getStreamFormatVersion());
--- corba/src/share/classes/com/sun/corba/se/impl/transport/SharedCDRContactInfoImpl.java 2012-08-10 09:10:50.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/transport/SharedCDRContactInfoImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 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
@@ -134,7 +134,7 @@
messageMediator;
// NOTE: GROW.
OutputObject outputObject =
- new CDROutputObject(orb, messageMediator,
+ sun.corba.OutputStreamFactory.newCDROutputObject(orb, messageMediator,
corbaMessageMediator.getRequestHeader(),
corbaMessageMediator.getStreamFormatVersion(),
BufferManagerFactory.GROW);
--- corba/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java 2012-08-10 09:10:50.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -534,9 +534,9 @@
{
CorbaMessageMediator corbaMessageMediator = (CorbaMessageMediator)
messageMediator;
- return new CDROutputObject((ORB) broker, corbaMessageMediator,
- corbaMessageMediator.getReplyHeader(),
- corbaMessageMediator.getStreamFormatVersion());
+ return sun.corba.OutputStreamFactory.newCDROutputObject((ORB) broker,
+ corbaMessageMediator, corbaMessageMediator.getReplyHeader(),
+ corbaMessageMediator.getStreamFormatVersion());
}
////////////////////////////////////////////////////
--- corba/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java 2012-08-10 09:10:50.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -1588,8 +1588,8 @@
{
// REVISIT: See comments in CDROutputObject constructor.
CDROutputObject outputObject =
- new CDROutputObject((ORB)orb, null, giopVersion, this, msg,
- ORBConstants.STREAM_FORMAT_VERSION_1);
+ sun.corba.OutputStreamFactory.newCDROutputObject((ORB)orb, null, giopVersion,
+ this, msg, ORBConstants.STREAM_FORMAT_VERSION_1);
msg.write(outputObject);
outputObject.writeTo(this);
--- corba/src/share/classes/com/sun/corba/se/spi/ior/TaggedComponentBase.java 2012-08-10 09:10:59.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/spi/ior/TaggedComponentBase.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -42,7 +42,8 @@
public org.omg.IOP.TaggedComponent getIOPComponent(
org.omg.CORBA.ORB orb )
{
- EncapsOutputStream os = new EncapsOutputStream( (ORB)orb ) ;
+ EncapsOutputStream os =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream((ORB)orb);
write( os ) ;
InputStream is = (InputStream)(os.create_input_stream() ) ;
return org.omg.IOP.TaggedComponentHelper.read( is ) ;
--- corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java 2012-08-10 09:11:09.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -97,7 +97,8 @@
import com.sun.corba.se.impl.presentation.rmi.PresentationManagerImpl ;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader ;
+import sun.awt.AppContext;
+import sun.corba.SharedSecrets;
public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
implements Broker, TypeCodeFactory
@@ -173,14 +174,7 @@
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 ) ;
@@ -207,7 +201,7 @@
try {
// First try the configured class name, if any
- Class cls = ORBClassLoader.loadClass( className ) ;
+ Class> cls = SharedSecrets.getJavaCorbaAccess().loadClass( className ) ;
sff = (PresentationManager.StubFactoryFactory)cls.newInstance() ;
} catch (Exception exc) {
// Use the default. Log the error as a warning.
@@ -218,12 +212,13 @@
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 @@
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 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 ThreadPoolManager getThreadPoolManager();
public abstract CopierManager getCopierManager() ;
+
}
// End of file.
--- corba/src/share/classes/com/sun/corba/se/spi/orb/OperationFactory.java 2012-08-10 09:11:10.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/spi/orb/OperationFactory.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -35,9 +35,10 @@
import com.sun.corba.se.spi.logging.CORBALogDomains ;
import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
-import com.sun.corba.se.impl.orbutil.ORBClassLoader ;
import com.sun.corba.se.impl.orbutil.ObjectUtility ;
+import sun.corba.SharedSecrets;
+
/** This is a static factory class for commonly used operations
* for property parsing. The following operations are supported:
*
@@ -247,7 +248,8 @@
String className = getString( value ) ;
try {
- Class result = ORBClassLoader.loadClass( className ) ;
+ Class> result =
+ SharedSecrets.getJavaCorbaAccess().loadClass( className ) ;
return result ;
} catch (Exception exc) {
ORBUtilSystemException wrapper = ORBUtilSystemException.get(
--- corba/src/share/classes/com/sun/corba/se/spi/servicecontext/ServiceContext.java 2012-08-10 09:11:11.000000000 -0700
+++ corba/src/share/classes/com/sun/corba/se/spi/servicecontext/ServiceContext.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2003, 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
@@ -92,7 +92,8 @@
*/
public void write(OutputStream s, GIOPVersion gv) throws SystemException
{
- EncapsOutputStream os = new EncapsOutputStream( (ORB)(s.orb()), gv ) ;
+ EncapsOutputStream os =
+ sun.corba.OutputStreamFactory.newEncapsOutputStream((ORB)(s.orb()), gv);
os.putEndian() ;
writeData( os ) ;
byte[] data = os.toByteArray() ;
--- corba/src/share/classes/org/omg/CORBA_2_3/portable/OutputStream.java 2012-08-10 09:11:49.000000000 -0700
+++ corba/src/share/classes/org/omg/CORBA_2_3/portable/OutputStream.java 2013-06-22 09:39:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2000, 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
@@ -31,6 +31,10 @@
package org.omg.CORBA_2_3.portable;
+import java.io.SerializablePermission;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
/**
* OutputStream provides interface for writing of all of the mapped IDL type
* to the stream. It extends org.omg.CORBA.portable.OutputStream, and defines
@@ -43,6 +47,40 @@
public abstract class OutputStream extends org.omg.CORBA.portable.OutputStream {
+ private static final String ALLOW_SUBCLASS_PROP = "jdk.corba.allowOutputStreamSubclass";
+ private static final boolean allowSubclass = AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public Boolean run() {
+ String prop = System.getProperty(ALLOW_SUBCLASS_PROP);
+ return prop == null ? false :
+ (prop.equalsIgnoreCase("false") ? false : true);
+ }
+ });
+
+ private static Void checkPermission() {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ if (!allowSubclass)
+ sm.checkPermission(new
+ SerializablePermission("enableSubclassImplementation"));
+ }
+ return null;
+ }
+ private OutputStream(Void ignore) { }
+
+ /**
+ * Create a new instance of this class.
+ *
+ * throw SecurityException if SecurityManager is installed and
+ * enableSubclassImplementation SerializablePermission
+ * is not granted or jdk.corba.allowOutputStreamSubclass system
+ * property is either not set or is set to 'false'
+ */
+ public OutputStream() {
+ this(checkPermission());
+ }
+
/**
* Marshals a value type to the output stream.
* @param value is the acutal value to write
--- corba/src/share/classes/sun/corba/JavaCorbaAccess.java 1969-12-31 16:00:00.000000000 -0800
+++ corba/src/share/classes/sun/corba/JavaCorbaAccess.java 2013-06-22 09:39:21.000000000 -0700
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2012, 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 sun.corba;
+
+import com.sun.corba.se.impl.io.ValueHandlerImpl;
+
+public interface JavaCorbaAccess {
+ public ValueHandlerImpl newValueHandlerImpl();
+ public Class> loadClass(String className) throws ClassNotFoundException;
+}
--- corba/src/share/classes/sun/corba/OutputStreamFactory.java 1969-12-31 16:00:00.000000000 -0800
+++ corba/src/share/classes/sun/corba/OutputStreamFactory.java 2013-06-22 09:39:21.000000000 -0700
@@ -0,0 +1,149 @@
+/*
+ * 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 sun.corba;
+
+import com.sun.corba.se.impl.corba.AnyImpl;
+import com.sun.corba.se.impl.encoding.BufferManagerWrite;
+import com.sun.corba.se.impl.encoding.CDROutputObject;
+import com.sun.corba.se.impl.encoding.EncapsOutputStream;
+import com.sun.corba.se.impl.encoding.TypeCodeOutputStream;
+import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
+
+import com.sun.corba.se.pept.protocol.MessageMediator;
+
+import com.sun.corba.se.spi.orb.ORB;
+import com.sun.corba.se.spi.transport.CorbaConnection;
+import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
+import com.sun.corba.se.spi.protocol.CorbaMessageMediator;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+public final class OutputStreamFactory {
+
+ private OutputStreamFactory() {
+ }
+
+ public static TypeCodeOutputStream newTypeCodeOutputStream(
+ final ORB orb) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public TypeCodeOutputStream run() {
+ return new TypeCodeOutputStream(orb);
+ }
+ });
+ }
+
+ public static TypeCodeOutputStream newTypeCodeOutputStream(
+ final ORB orb, final boolean littleEndian) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public TypeCodeOutputStream run() {
+ return new TypeCodeOutputStream(orb, littleEndian);
+ }
+ });
+ }
+
+ public static EncapsOutputStream newEncapsOutputStream(
+ final ORB orb) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public EncapsOutputStream run() {
+ return new EncapsOutputStream(
+ (com.sun.corba.se.spi.orb.ORB)orb);
+ }
+ });
+ }
+
+ public static EncapsOutputStream newEncapsOutputStream(
+ final ORB orb, final GIOPVersion giopVersion) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public EncapsOutputStream run() {
+ return new EncapsOutputStream(
+ (com.sun.corba.se.spi.orb.ORB)orb, giopVersion);
+ }
+ });
+ }
+
+ public static EncapsOutputStream newEncapsOutputStream(
+ final ORB orb, final boolean isLittleEndian) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public EncapsOutputStream run() {
+ return new EncapsOutputStream(
+ (com.sun.corba.se.spi.orb.ORB)orb, isLittleEndian);
+ }
+ });
+ }
+
+ public static CDROutputObject newCDROutputObject(
+ final ORB orb, final MessageMediator messageMediator,
+ final Message header, final byte streamFormatVersion) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public CDROutputObject run() {
+ return new CDROutputObject(orb, messageMediator,
+ header, streamFormatVersion);
+ }
+ });
+ }
+
+ public static CDROutputObject newCDROutputObject(
+ final ORB orb, final MessageMediator messageMediator,
+ final Message header, final byte streamFormatVersion,
+ final int strategy) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public CDROutputObject run() {
+ return new CDROutputObject(orb, messageMediator,
+ header, streamFormatVersion, strategy);
+ }
+ });
+ }
+
+ public static CDROutputObject newCDROutputObject(
+ final ORB orb, final CorbaMessageMediator mediator,
+ final GIOPVersion giopVersion, final CorbaConnection connection,
+ final Message header, final byte streamFormatVersion) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction() {
+ @Override
+ public CDROutputObject run() {
+ return new CDROutputObject(orb, mediator,
+ giopVersion, connection, header, streamFormatVersion);
+ }
+ });
+ }
+
+}
--- corba/src/share/classes/sun/corba/SharedSecrets.java 1969-12-31 16:00:00.000000000 -0800
+++ corba/src/share/classes/sun/corba/SharedSecrets.java 2013-03-09 18:08:34.000000000 -0800
@@ -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;
+ }
+
+}
--- hotspot/.hgtags 2012-08-10 09:20:36.000000000 -0700
+++ hotspot/.hgtags 2013-04-28 16:29:15.000000000 -0700
@@ -182,6 +182,7 @@
38fa55e5e79232d48f1bb8cf27d88bc094c9375a hs21-b16
81d815b05abb564aa1f4100ae13491c949b9a07e jdk7-b147
81d815b05abb564aa1f4100ae13491c949b9a07e hs21-b17
+f1a18ada5853af49fce54d43dd5a5b67dc291470 7u0
9b0ca45cd756d538c4c30afab280a91868eee1a5 jdk7u2-b01
0cc8a70952c368e06de2adab1f2649a408f5e577 jdk8-b01
31e253c1da429124bb87570ab095d9bc89850d0a jdk8-b02
@@ -318,5 +319,69 @@
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
--- hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java 2012-08-10 09:21:14.000000000 -0700
+++ hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java 2013-04-28 16:29:16.000000000 -0700
@@ -33,6 +33,7 @@
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.*;
--- hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java 2012-08-10 09:21:38.000000000 -0700
+++ hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java 2013-04-28 16:29:16.000000000 -0700
@@ -35,6 +35,7 @@
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.*;
--- hotspot/make/bsd/Makefile 2012-08-10 09:22:55.000000000 -0700
+++ hotspot/make/bsd/Makefile 2013-04-28 16:29:16.000000000 -0700
@@ -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_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 @@
# 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
--- hotspot/make/bsd/makefiles/buildtree.make 2012-08-10 09:22:57.000000000 -0700
+++ hotspot/make/bsd/makefiles/buildtree.make 2013-04-28 16:29:16.000000000 -0700
@@ -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 @@
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 @@
$(QUIETLY) ( \
$(BUILDTREE_COMMENT); \
echo "JDK=${JAVA_HOME}"; \
- ) > $@
+ ) > $@
.dbxrc: $(BUILDTREE_MAKE)
@echo Creating $@ ...
--- hotspot/make/bsd/makefiles/defs.make 2012-08-10 09:22:57.000000000 -0700
+++ hotspot/make/bsd/makefiles/defs.make 2013-04-28 16:29:16.000000000 -0700
@@ -86,7 +86,7 @@
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 @@
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 @@
# 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 @@
$(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 =
--- hotspot/make/bsd/makefiles/gcc.make 2012-08-10 09:22:57.000000000 -0700
+++ hotspot/make/bsd/makefiles/gcc.make 2013-04-28 16:29:16.000000000 -0700
@@ -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/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 @@
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 @@
ifdef MINIMIZE_RAM_USAGE
CFLAGS += -DMINIMIZE_RAM_USAGE
endif
+
+ifdef CROSS_COMPILE_ARCH
+ STRIP = $(ALT_COMPILER_PATH)/strip
+else
+ STRIP = strip
+endif
--- hotspot/make/bsd/makefiles/jsig.make 2012-08-10 09:22:58.000000000 -0700
+++ hotspot/make/bsd/makefiles/jsig.make 2013-04-28 16:29:16.000000000 -0700
@@ -36,9 +36,16 @@
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 @@
$(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
--- hotspot/make/bsd/makefiles/launcher.make 2012-08-10 09:22:58.000000000 -0700
+++ hotspot/make/bsd/makefiles/launcher.make 2013-04-28 16:29:16.000000000 -0700
@@ -50,7 +50,7 @@
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
--- hotspot/make/bsd/makefiles/mapfile-vers-debug 2012-08-10 09:22:58.000000000 -0700
+++ hotspot/make/bsd/makefiles/mapfile-vers-debug 2013-04-28 16:29:16.000000000 -0700
@@ -221,6 +221,7 @@
JVM_SetArrayElement;
JVM_SetClassSigners;
JVM_SetLength;
+ JVM_SetNativeThreadName;
JVM_SetPrimitiveArrayElement;
JVM_SetProtectionDomain;
JVM_SetSockOpt;
@@ -244,24 +245,6 @@
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;
--- hotspot/make/bsd/makefiles/mapfile-vers-product 2012-08-10 09:22:58.000000000 -0700
+++ hotspot/make/bsd/makefiles/mapfile-vers-product 2013-04-28 16:29:16.000000000 -0700
@@ -221,6 +221,7 @@
JVM_SetArrayElement;
JVM_SetClassSigners;
JVM_SetLength;
+ JVM_SetNativeThreadName;
JVM_SetPrimitiveArrayElement;
JVM_SetProtectionDomain;
JVM_SetSockOpt;
@@ -244,24 +245,6 @@
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;
--- hotspot/make/bsd/makefiles/ppc.make 2012-08-10 09:22:58.000000000 -0700
+++ hotspot/make/bsd/makefiles/ppc.make 2013-04-28 16:29:16.000000000 -0700
@@ -28,3 +28,6 @@
# Must also specify if CPU is big endian
CFLAGS += -DVM_BIG_ENDIAN
+ifdef E500V2
+ASFLAGS += -Wa,-mspe -Wa,--defsym -Wa,E500V2=1
+endif
--- hotspot/make/bsd/makefiles/saproc.make 2012-08-10 09:22:59.000000000 -0700
+++ hotspot/make/bsd/makefiles/saproc.make 2013-04-28 16:29:16.000000000 -0700
@@ -36,6 +36,11 @@
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 @@
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 @@
-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
--- hotspot/make/bsd/makefiles/vm.make 2012-08-10 09:22:59.000000000 -0700
+++ hotspot/make/bsd/makefiles/vm.make 2013-04-28 16:29:16.000000000 -0700
@@ -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 @@
# 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 @@
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 @@
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)/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 @@
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"
#----------------------------------------------------------------------
--- hotspot/make/hotspot_version 2012-08-10 09:23:01.000000000 -0700
+++ hotspot/make/hotspot_version 2013-04-28 16:29:12.000000000 -0700
@@ -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
--- hotspot/make/solaris/makefiles/defs.make 2012-08-10 09:23:12.000000000 -0700
+++ hotspot/make/solaris/makefiles/defs.make 2013-04-28 16:29:16.000000000 -0700
@@ -194,8 +194,8 @@
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)
--- hotspot/src/cpu/sparc/vm/globals_sparc.hpp 2012-08-10 09:23:56.000000000 -0700
+++ hotspot/src/cpu/sparc/vm/globals_sparc.hpp 2013-04-28 16:29:16.000000000 -0700
@@ -71,7 +71,11 @@
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
--- hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp 2012-08-10 09:23:58.000000000 -0700
+++ hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp 2013-03-03 08:48:48.000000000 -0800
@@ -698,6 +698,17 @@
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 @@
"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 @@
// 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);
--- hotspot/src/cpu/x86/vm/methodHandles_x86.cpp 2012-08-10 09:24:07.000000000 -0700
+++ hotspot/src/cpu/x86/vm/methodHandles_x86.cpp 2013-03-03 08:48:48.000000000 -0800
@@ -691,6 +691,14 @@
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 @@
"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 @@
// 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 @@
// 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 @@
// 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;
--- hotspot/src/os/bsd/vm/decoder_bsd.cpp 1969-12-31 16:00:00.000000000 -0800
+++ hotspot/src/os/bsd/vm/decoder_bsd.cpp 2013-04-28 16:29:16.000000000 -0700
@@ -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;
+}
+
--- hotspot/src/os/bsd/vm/os_bsd.cpp 2012-08-10 09:24:18.000000000 -0700
+++ hotspot/src/os/bsd/vm/os_bsd.cpp 2013-04-28 16:29:16.000000000 -0700
@@ -2341,14 +2341,14 @@
}
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 @@
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 @@
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 @@
#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 @@
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 @@
if (rp == NULL)
return;
}
+#endif
}
}
}
@@ -2817,7 +2844,11 @@
}
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) {
--- hotspot/src/os/bsd/vm/os_bsd.hpp 2012-08-10 09:24:18.000000000 -0700
+++ hotspot/src/os/bsd/vm/os_bsd.hpp 2013-04-28 16:29:16.000000000 -0700
@@ -103,6 +103,12 @@
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();
--- hotspot/src/os/bsd/vm/os_bsd.inline.hpp 2012-08-10 09:24:18.000000000 -0700
+++ hotspot/src/os/bsd/vm/os_bsd.inline.hpp 2013-04-28 16:29:16.000000000 -0700
@@ -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
--- hotspot/src/os/bsd/vm/thread_bsd.inline.hpp 2012-08-10 09:24:18.000000000 -0700
+++ hotspot/src/os/bsd/vm/thread_bsd.inline.hpp 2013-04-28 16:29:16.000000000 -0700
@@ -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
--- hotspot/src/os/posix/vm/os_posix.cpp 2012-08-10 09:24:20.000000000 -0700
+++ hotspot/src/os/posix/vm/os_posix.cpp 2013-04-28 16:29:16.000000000 -0700
@@ -75,6 +75,47 @@
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 @@
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) {
--- hotspot/src/os/windows/vm/os_windows.cpp 2012-08-10 09:24:30.000000000 -0700
+++ hotspot/src/os/windows/vm/os_windows.cpp 2013-04-28 16:29:12.000000000 -0700
@@ -2941,6 +2941,36 @@
}
}
+// 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");
--- hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp 2012-08-10 09:24:32.000000000 -0700
+++ hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp 2013-04-28 16:29:17.000000000 -0700
@@ -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 */ \
--- hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp 2012-08-10 09:24:33.000000000 -0700
+++ hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp 2013-04-28 16:29:17.000000000 -0700
@@ -24,7 +24,7 @@
*/
#if defined(_ALLBSD_SOURCE) && !defined(__APPLE__) && !defined(__NetBSD__)
-#include
+# include
# include /* For pthread_attr_get_np */
#endif
--- hotspot/src/share/vm/compiler/compilerOracle.cpp 2012-08-10 09:26:19.000000000 -0700
+++ hotspot/src/share/vm/compiler/compilerOracle.cpp 2013-03-03 08:48:48.000000000 -0800
@@ -575,7 +575,7 @@
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 @@
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);
--- hotspot/src/share/vm/interpreter/linkResolver.cpp 2012-08-10 09:27:05.000000000 -0700
+++ hotspot/src/share/vm/interpreter/linkResolver.cpp 2013-04-28 16:29:17.000000000 -0700
@@ -712,7 +712,7 @@
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
--- hotspot/src/share/vm/oops/cpCacheOop.cpp 2012-08-10 09:27:18.000000000 -0700
+++ hotspot/src/share/vm/oops/cpCacheOop.cpp 2013-04-28 16:29:13.000000000 -0700
@@ -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 @@
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 @@
}
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 @@
}
}
}
+
+// 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);
+ }
+ }
+}
--- hotspot/src/share/vm/oops/cpCacheOop.hpp 2012-08-10 09:27:18.000000000 -0700
+++ hotspot/src/share/vm/oops/cpCacheOop.hpp 2013-04-28 16:29:13.000000000 -0700
@@ -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 @@
// 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 @@
// 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
--- hotspot/src/share/vm/oops/klassVtable.cpp 2012-08-10 09:27:23.000000000 -0700
+++ hotspot/src/share/vm/oops/klassVtable.cpp 2013-04-28 16:29:13.000000000 -0700
@@ -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 @@
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 @@
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 @@
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
--- hotspot/src/share/vm/oops/klassVtable.hpp 2012-08-10 09:27:23.000000000 -0700
+++ hotspot/src/share/vm/oops/klassVtable.hpp 2013-04-28 16:29:13.000000000 -0700
@@ -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 @@
// 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 @@
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 @@
// 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();
--- hotspot/src/share/vm/oops/methodOop.cpp 2012-08-10 09:27:25.000000000 -0700
+++ hotspot/src/share/vm/oops/methodOop.cpp 2013-04-28 16:29:13.000000000 -0700
@@ -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 @@
}
-//-----------------------------------------------------------------------------------
-// Non-product code
-
-#ifndef PRODUCT
class SignatureTypePrinter : public SignatureTypeNames {
private:
outputStream* _st;
@@ -1386,6 +1382,10 @@
}
+//-----------------------------------------------------------------------------------
+// Non-product code
+
+#ifndef PRODUCT
void methodOopDesc::print_codes_on(outputStream* st) const {
print_codes_on(0, code_size(), st);
}
--- hotspot/src/share/vm/oops/methodOop.hpp 2012-08-10 09:27:26.000000000 -0700
+++ hotspot/src/share/vm/oops/methodOop.hpp 2013-04-28 16:29:13.000000000 -0700
@@ -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 @@
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,
--- hotspot/src/share/vm/opto/library_call.cpp 2012-08-10 09:27:37.000000000 -0700
+++ hotspot/src/share/vm/opto/library_call.cpp 2013-04-28 16:29:13.000000000 -0700
@@ -3931,7 +3931,8 @@
}
}
}
- 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 @@
push(result);
return true;
}
-
--- hotspot/src/share/vm/opto/loopTransform.cpp 2012-08-10 09:27:38.000000000 -0700
+++ hotspot/src/share/vm/opto/loopTransform.cpp 2013-03-03 08:48:48.000000000 -0800
@@ -2733,6 +2733,8 @@
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 @@
#endif
}
}
+*/
// Redirect the old control and memory edges that are outside the loop.
Node* exit = head->loopexit()->proj_out(0);
--- hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp 2012-08-10 09:27:50.000000000 -0700
+++ hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp 2013-04-28 16:29:14.000000000 -0700
@@ -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 @@
// 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 @@
}
}
-#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
--- hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp 2012-08-10 09:27:50.000000000 -0700
+++ hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp 2013-04-28 16:29:14.000000000 -0700
@@ -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 @@
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,
--- hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp 2012-08-10 09:27:50.000000000 -0700
+++ hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp 2013-04-28 16:29:14.000000000 -0700
@@ -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); \
--- hotspot/src/share/vm/prims/methodHandles.cpp 2012-08-10 09:27:52.000000000 -0700
+++ hotspot/src/share/vm/prims/methodHandles.cpp 2013-04-28 16:29:14.000000000 -0700
@@ -645,6 +645,13 @@
}
}
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 @@
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");
--- hotspot/src/share/vm/runtime/arguments.cpp 2012-08-10 09:27:53.000000000 -0700
+++ hotspot/src/share/vm/runtime/arguments.cpp 2013-04-28 16:29:17.000000000 -0700
@@ -829,6 +829,9 @@
} 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 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;
--- hotspot/src/share/vm/runtime/atomic.cpp 2012-08-10 09:27:53.000000000 -0700
+++ hotspot/src/share/vm/runtime/atomic.cpp 2013-04-28 16:29:17.000000000 -0700
@@ -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
--- hotspot/src/share/vm/runtime/globals.hpp 2012-08-10 09:27:59.000000000 -0700
+++ hotspot/src/share/vm/runtime/globals.hpp 2013-04-28 16:29:17.000000000 -0700
@@ -3902,7 +3902,10 @@
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
--- hotspot/src/share/vm/runtime/os.hpp 2012-08-10 09:28:05.000000000 -0700
+++ hotspot/src/share/vm/runtime/os.hpp 2013-04-28 16:29:17.000000000 -0700
@@ -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 @@
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 @@
# 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"
--- hotspot/src/share/vm/runtime/thread.cpp 2012-08-10 09:28:14.000000000 -0700
+++ hotspot/src/share/vm/runtime/thread.cpp 2013-04-28 16:29:17.000000000 -0700
@@ -3555,6 +3555,9 @@
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();
--- hotspot/src/share/vm/runtime/virtualspace.cpp 2012-08-10 09:28:16.000000000 -0700
+++ hotspot/src/share/vm/runtime/virtualspace.cpp 2013-04-28 16:29:17.000000000 -0700
@@ -340,20 +340,9 @@
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)) {
--- hotspot/src/share/vm/utilities/accessFlags.cpp 2012-08-10 09:28:53.000000000 -0700
+++ hotspot/src/share/vm/utilities/accessFlags.cpp 2013-04-28 16:29:15.000000000 -0700
@@ -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 @@
} 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 @@
if (is_obsolete ()) st->print("{obsolete} " );
}
-#endif
-
void accessFlags_init() {
assert(sizeof(AccessFlags) == sizeof(jint), "just checking size of flags");
}
--- hotspot/src/share/vm/utilities/accessFlags.hpp 2012-08-10 09:28:53.000000000 -0700
+++ hotspot/src/share/vm/utilities/accessFlags.hpp 2013-04-28 16:29:15.000000000 -0700
@@ -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 @@
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) {
--- hotspot/test/compiler/5091921/Test7005594.sh 2012-08-10 09:28:58.000000000 -0700
+++ hotspot/test/compiler/5091921/Test7005594.sh 2013-04-28 16:29:17.000000000 -0700
@@ -71,6 +71,9 @@
# 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
--- hotspot/test/compiler/7158807/Test7158807.java 1969-12-31 16:00:00.000000000 -0800
+++ hotspot/test/compiler/7158807/Test7158807.java 2013-03-03 08:48:48.000000000 -0800
@@ -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) {
+ }
+ }
+ }
+}
+
--- hotspot/test/gc/6941923/test6941923.sh 2012-08-10 09:29:15.000000000 -0700
+++ hotspot/test/gc/6941923/test6941923.sh 2013-04-28 16:29:17.000000000 -0700
@@ -9,7 +9,7 @@
## skip on windows
OS=`uname -s`
case "$OS" in
- SunOS | Linux )
+ SunOS | Linux | *BSD )
NULL=/dev/null
PS=":"
FS="/"
--- hotspot/test/runtime/7020373/Test7020373.sh 2012-08-10 09:29:17.000000000 -0700
+++ hotspot/test/runtime/7020373/Test7020373.sh 2013-04-28 16:29:17.000000000 -0700
@@ -32,7 +32,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux )
+ SunOS | Linux | *BSD | Darwin )
NULL=/dev/null
PS=":"
FS="/"
--- hotspot/test/runtime/7110720/Test7110720.sh 2012-08-10 09:29:18.000000000 -0700
+++ hotspot/test/runtime/7110720/Test7110720.sh 2013-04-28 16:29:17.000000000 -0700
@@ -37,7 +37,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux )
+ SunOS | Linux | *BSD )
FS="/"
RM=/bin/rm
CP=/bin/cp
--- hotspot/test/runtime/7158800/BadUtf8.java 2012-08-10 09:29:18.000000000 -0700
+++ hotspot/test/runtime/7158800/BadUtf8.java 1969-12-31 16:00:00.000000000 -0800
@@ -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");
- }
- }
-}
--- hotspot/test/runtime/7158800/InternTest.java 2012-08-10 09:29:18.000000000 -0700
+++ hotspot/test/runtime/7158800/InternTest.java 1969-12-31 16:00:00.000000000 -0800
@@ -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();
- }
-}
-
-
--- hotspot/test/runtime/7158800/Test7158800.sh 2012-08-10 09:29:19.000000000 -0700
+++ hotspot/test/runtime/7158800/Test7158800.sh 2013-04-28 16:29:17.000000000 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux )
+ SunOS | Linux | *BSD )
NULL=/dev/null
PS=":"
FS="/"
--- hotspot/test/runtime/7158804/Test7158804.sh 1969-12-31 16:00:00.000000000 -0800
+++ hotspot/test/runtime/7158804/Test7158804.sh 2013-03-03 08:48:48.000000000 -0800
@@ -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
--- hotspot/test/runtime/7162488/Test7162488.sh 1969-12-31 16:00:00.000000000 -0800
+++ hotspot/test/runtime/7162488/Test7162488.sh 2013-03-03 08:48:48.000000000 -0800
@@ -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"
+
--- jaxp/.hgtags 2012-08-10 09:35:08.000000000 -0700
+++ jaxp/.hgtags 2013-06-22 09:41:30.000000000 -0700
@@ -123,6 +123,7 @@
bcd31fa1e3c6f51b4fdd427ef905188cdac57164 jdk7-b146
067fb18071e3872698f6218724958bd0cebf30a3 jdk7u1-b01
fc268cd1dd5d2e903ccd4b0275e1f9c2461ed30c jdk7-b147
+3170972bd3928a331c4c64a5c0c9632077fb399a 7u0
104ca42e1e7ca66b074a4619ce6420f15d8f454d jdk7u1-b02
64e323faadf65018c1ffc8bb9c97f7b664e87347 jdk7u1-b03
2256c20e66857f80cacda14ffdbc0979c929d7f8 jdk7u1-b04
@@ -197,5 +198,81 @@
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
+f7d8d2c003a10c38beac2f57e77d19303c71d6fc jdk7u17-b32
+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
+a320a590b4cac6eeff53829bde520ef46880b006 jdk7u21-b12
+5704dc942da676677a820d16c9a08fc6cad5b3bb jdk7u25-b01
+f9c1fe7cd1194e785807f07005369631b35b28d8 jdk7u25-b02
+fe858d7d6a13829d0ef0a1f762bd0e769cd24fa1 jdk7u25-b03
+1a2822a1d6a40c6e469f4089f39e41f642a87843 jdk7u25-b04
+e927605d1678c5d94adfc44183160d6c4df05b8b jdk7u25-b05
+8dfb4db227e7795120c072781927ba7d35186559 jdk7u25-b06
+ad2732999848b6e57f564d85e18ddebab6315ac2 jdk7u25-b07
+df9def2569705ebe316b50e673f847d2ec47eccf jdk7u25-b08
+5952538d55e624132f97400332a50b71880c874c jdk7u25-b09
+aa00dd983dd0f5b07269d0648a0325e9b3e0d957 jdk7u25-b10
--- jaxp/src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java 2012-08-10 09:35:19.000000000 -0700
+++ jaxp/src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java 2013-04-28 16:29:20.000000000 -0700
@@ -63,6 +63,7 @@
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 @@
* 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 @@
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
--- jaxp/src/com/sun/org/apache/bcel/internal/util/Class2HTML.java 2012-08-10 09:36:04.000000000 -0700
+++ jaxp/src/com/sun/org/apache/bcel/internal/util/Class2HTML.java 2013-04-28 16:29:20.000000000 -0700
@@ -82,6 +82,7 @@
* 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 @@
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 {
--- jaxp/src/com/sun/org/apache/bcel/internal/util/ClassPath.java 2012-08-10 09:36:04.000000000 -0700
+++ jaxp/src/com/sun/org/apache/bcel/internal/util/ClassPath.java 2013-04-28 16:29:20.000000000 -0700
@@ -66,6 +66,7 @@
* 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 @@
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 @@
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 @@
String name = tok.nextToken();
File file = new File(name);
- if(file.exists())
+ if(SecuritySupport.getFileExists(file)) {
list.add(name);
+ }
}
}
}
@@ -159,9 +161,9 @@
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 @@
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 @@
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 {
--- jaxp/src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java 2012-08-10 09:36:05.000000000 -0700
+++ jaxp/src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java 2013-04-28 16:29:20.000000000 -0700
@@ -72,6 +72,7 @@
* java com.sun.org.apache.bcel.internal.util.JavaWrapper -Dbcel.classloader=foo.MyLoader <real.class.name> [arguments]
*
*
+ * @version $Id: JavaWrapper.java,v 1.3 2007-07-19 04:34:52 ofung Exp $
* @author M. Dahm
* @see ClassLoader
*/
@@ -79,7 +80,7 @@
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";
--- jaxp/src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java 1969-12-31 16:00:00.000000000 -0800
+++ jaxp/src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java 2013-04-28 16:29:20.000000000 -0700
@@ -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() {
+ }
+}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLMessages.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLMessages.java 2013-04-28 16:29:20.000000000 -0700
@@ -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
-{
+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";
-
- /**
- * 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);
-
- if (XSLTBundle != null)
+ /**
+ * 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";
+
+ /**
+ * 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);
+ 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.";
- }
-
- /**
- * 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)
+ /**
+ * 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.";
- }
}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java 2012-08-10 09:36:07.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java 2013-04-28 16:29:20.000000000 -0700
@@ -1449,68 +1449,5 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java 2012-08-10 09:36:08.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java 2012-08-10 09:36:08.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java 2012-08-10 09:36:08.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java 2013-04-28 16:29:20.000000000 -0700
@@ -1448,68 +1448,4 @@
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;
- }
-
-
-}
--- jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java 2012-08-10 09:36:09.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java 2013-04-28 16:29:20.000000000 -0700
@@ -54,6 +54,8 @@
//
// 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 @@
//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;
}
--- jaxp/src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java 2012-08-10 09:36:09.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java 2013-04-28 16:29:20.000000000 -0700
@@ -32,10 +32,14 @@
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 @@
}
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 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 @@
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 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 @@
});
}
- 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 @@
}
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() {
+ }
}
--- jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java 2012-08-10 09:36:09.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
// 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 @@
{
// 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 @@
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 @@
//@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 @@
{
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
--- jaxp/src/com/sun/org/apache/xalan/internal/xslt/Process.java 2012-08-10 09:36:09.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xslt/Process.java 2013-04-28 16:29:20.000000000 -0700
@@ -57,6 +57,7 @@
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 @@
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";
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java 2012-08-10 09:36:18.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java 2013-04-28 16:29:20.000000000 -0700
@@ -410,7 +410,7 @@
}
}
catch (TypeCheckError e) {
- reportError(ERROR, new ErrorMsg(e));
+ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
}
}
@@ -430,7 +430,7 @@
}
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 @@
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;
}
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java 2012-08-10 09:36:22.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java 2013-04-28 16:29:20.000000000 -0700
@@ -41,10 +41,12 @@
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 @@
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 @@
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 @@
}
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 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 @@
String parentDir = outFile.getParent();
if (parentDir != null) {
File parentFile = new File(parentDir);
- if (!parentFile.exists())
+ if (!SecuritySupport.getFileExists(parentFile))
parentFile.mkdirs();
}
}
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java 2012-08-10 09:36:23.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java 2013-04-28 16:29:20.000000000 -0700
@@ -997,7 +997,12 @@
"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."}
};
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java 2012-08-10 09:36:25.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
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 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 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 @@
_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 @@
_params[1] = param2;
}
+ public Throwable getCause() {
+ return _cause;
+ }
+
private String getFileName(SyntaxTreeNode node) {
Stylesheet stylesheet = node.getStylesheet();
if (stylesheet != null)
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java 2012-08-10 09:36:26.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
private static char filesep;
static {
- String temp = System.getProperty("file.separator", "/");
+ String temp = SecuritySupport.getSystemProperty("file.separator", "/");
filesep = temp.charAt(0);
}
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java 2012-08-10 09:36:28.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java 2013-04-28 16:29:20.000000000 -0700
@@ -33,6 +33,7 @@
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 @@
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
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java 2012-08-10 09:36:29.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
static {
String resource = "com.sun.org.apache.xalan.internal.xsltc.runtime.ErrorMessages";
- m_bundle = ResourceBundle.getBundle(resource);
+ m_bundle = SecuritySupport.getResourceBundle(resource);
}
/**
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java 2012-08-10 09:36:31.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
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;
}
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java 2012-08-10 09:36:32.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java 2013-04-28 16:29:20.000000000 -0700
@@ -43,6 +43,7 @@
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 @@
*/
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 @@
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();
--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java 2012-08-10 09:36:32.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java 2013-04-28 16:29:20.000000000 -0700
@@ -73,7 +73,7 @@
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 @@
// 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 @@
// 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);
--- jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java 2012-08-10 09:36:33.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
* @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 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");
}
}
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2012-08-10 09:36:39.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2013-04-28 16:29:20.000000000 -0700
@@ -51,6 +51,7 @@
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 @@
// get the user.dir property
String userDir = "";
try {
- userDir = System.getProperty("user.dir");
+ userDir = SecuritySupport.getSystemProperty("user.dir");
}
catch (SecurityException se) {
}
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java 2012-08-10 09:36:42.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
*
* @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 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);
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java 2012-08-10 09:36:52.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java 2012-08-10 09:36:52.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java 2012-08-10 09:36:52.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java 2012-08-10 09:36:52.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java 2012-08-10 09:36:52.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java 2012-08-10 09:36:52.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java 2012-08-10 09:36:53.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java 2012-08-10 09:36:53.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java 2012-08-10 09:36:53.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java 2012-08-10 09:36:53.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java 2012-08-10 09:36:53.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java 2013-04-28 16:29:20.000000000 -0700
@@ -26,6 +26,7 @@
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 @@
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java 2012-08-10 09:36:59.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
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) {
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java 2012-08-10 09:37:02.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
* @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 @@
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);
--- jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java 2012-08-10 09:37:14.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java 2012-08-10 09:37:18.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java 2012-08-10 09:37:19.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java 2012-08-10 09:37:20.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
*
* @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 @@
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
--- jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java 2012-08-10 09:37:21.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java 2013-04-28 16:29:20.000000000 -0700
@@ -48,6 +48,7 @@
//
// 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 @@
//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) {
--- jaxp/src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java 2012-08-10 09:37:21.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java 2013-04-28 16:29:20.000000000 -0700
@@ -29,6 +29,10 @@
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 @@
});
}
+ /**
+ * 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() {
--- jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java 2012-08-10 09:37:22.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
*
* @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 @@
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);
--- jaxp/src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java 2012-08-10 09:37:27.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,6 +24,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;
/**
* XPointerMessageFormatter provides error messages for the XPointer Framework
@@ -31,6 +32,7 @@
*
* @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 @@
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);
--- jaxp/src/com/sun/org/apache/xml/internal/dtm/DTMManager.java 2012-08-10 09:37:37.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/dtm/DTMManager.java 2013-04-28 16:29:20.000000000 -0700
@@ -27,6 +27,7 @@
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 @@
{
try
{
- debug = System.getProperty("dtm.debug") != null;
+ debug = SecuritySupport.getSystemProperty("dtm.debug") != null;
}
catch (SecurityException ex){}
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java 2012-08-10 09:37:40.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java 2012-08-10 09:37:40.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -443,67 +440,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -443,67 +440,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_pt_BR.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_pt_BR.java 2013-04-28 16:29:20.000000000 -0700
@@ -25,9 +25,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -463,67 +460,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -443,67 +440,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -452,68 +449,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -443,67 +440,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java 2013-04-28 16:29:20.000000000 -0700
@@ -24,9 +24,6 @@
import java.util.ListResourceBundle;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* Set up error messages.
@@ -453,67 +450,4 @@
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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLMessages.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLMessages.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 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 @@
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;
- }
}
--- jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java 2012-08-10 09:37:41.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
// 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 @@
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()) {
--- jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java 2012-08-10 09:37:42.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
/** 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 @@
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 @@
* @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 @@
* 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 @@
* 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 @@
* 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 String queryCatalogClassName () {
- String className = System.getProperty(pClassname);
+ String className = SecuritySupport.getSystemProperty(pClassname);
if (className == null) {
if (resources==null) readProperties();
--- jaxp/src/com/sun/org/apache/xml/internal/resolver/Resolver.java 2012-08-10 09:37:42.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/resolver/Resolver.java 2013-04-28 16:29:20.000000000 -0700
@@ -33,6 +33,7 @@
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 @@
*/
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 @@
*/
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()) {
--- jaxp/src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java 2012-08-10 09:37:47.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java 2013-04-28 16:29:20.000000000 -0700
@@ -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 @@
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() ) {
--- jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2012-08-10 09:37:52.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2013-04-28 16:29:20.000000000 -0700
@@ -219,7 +219,7 @@
// 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 @@
try
{
- urlString = System.getProperty(ENCODINGS_PROP, "");
+ urlString = SecuritySupport.getSystemProperty(ENCODINGS_PROP, "");
}
catch (SecurityException e)
{
--- jaxp/src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java 2012-08-10 09:37:56.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
String value = null;
try
{
- value = System.getProperty(key);
+ value = SecuritySupport.getSystemProperty(key);
}
catch (SecurityException se)
{
@@ -484,7 +485,7 @@
String newValue = null;
try
{
- newValue = System.getProperty(newKey);
+ newValue = SecuritySupport.getSystemProperty(newKey);
}
catch (SecurityException se)
{
--- jaxp/src/com/sun/org/apache/xml/internal/serializer/ToStream.java 2012-08-10 09:38:02.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/serializer/ToStream.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
* 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.
--- jaxp/src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java 2012-08-10 09:38:02.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
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 @@
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
--- jaxp/src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java 2012-08-10 09:38:06.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
* 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 @@
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 @@
}
/**
- * 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 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 @@
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;
- }
}
--- jaxp/src/com/sun/org/apache/xml/internal/utils/TreeWalker.java 2012-08-10 09:38:11.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/utils/TreeWalker.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
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 @@
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 @@
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
--- jaxp/src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java 2012-08-10 09:38:12.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/**
* The default (english) resource bundle.
+ *
* @xsl.usage internal
*/
-public class XResourceBundle extends ListResourceBundle
-{
+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);
+ /**
+ * 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"},};
}
- 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, "");
- }
- }
- }
-
- /**
- * 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" },
- };
- }
}
--- jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java 2012-08-10 09:38:25.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java 2013-04-28 16:29:21.000000000 -0700
@@ -102,7 +102,7 @@
try
{
- result = System.getProperty(propName);
+ result = SecuritySupport.getSystemProperty(propName);
if (null == result)
{
@@ -124,7 +124,7 @@
{
try
{
- result = System.getProperty(fullName);
+ result = SecuritySupport.getSystemProperty(fullName);
if (null == result)
{
@@ -170,7 +170,6 @@
try
{
// Use SecuritySupport class to provide priveleged access to property file
-
InputStream is = SecuritySupport.getResourceAsStream(ObjectFactory.findClassLoader(),
file);
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java 2012-08-10 09:38:31.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2012-08-10 09:38:31.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java 2012-08-10 09:38:31.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java 2012-08-10 09:38:31.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java 2012-08-10 09:38:31.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java 2012-08-10 09:38:31.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java 2012-08-10 09:38:32.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_pt_BR.java 2012-08-10 09:38:32.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_pt_BR.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java 2012-08-10 09:38:32.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java 2012-08-10 09:38:32.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java 2012-08-10 09:38:32.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
/** 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;
- }
-
}
--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java 2012-08-10 09:38:32.000000000 -0700
+++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java 2013-04-28 16:29:21.000000000 -0700
@@ -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);
+public class XPATHMessages extends XMLMessages {
- if (XPATHBundle != null)
+ /**
+ * 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 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) {
+ XPATHBundle = SecuritySupport.getResourceBundle(XPATH_ERROR_RESOURCES);
+ }
- if (XPATHBundle != null)
- {
- return createXPATHMsg(XPATHBundle, msgKey, args);
+ if (XPATHBundle != null) {
+ return createXPATHMsg(XPATHBundle, msgKey, args);
+ } else {
+ return "Could not load any resource bundles.";
+ }
}
- 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)
+ /**
+ * 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
{
- 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 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
{
- 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;
+ String fmsg = null;
+ boolean throwex = false;
+ String msg = null;
- if (throwex)
- {
- throw new RuntimeException(fmsg);
- }
+ if (msgKey != null) {
+ msg = fResourceBundle.getString(msgKey);
+ }
+
+ if (msg == null) {
+ msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE);
+ throwex = true;
+ }
- return fmsg;
- }
+ 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;
+ }
}
--- jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java 2012-08-10 09:38:32.000000000 -0700
+++ jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java 2013-04-28 16:29:21.000000000 -0700
@@ -36,6 +36,7 @@
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 @@
// get the user.dir property
String userDir = "";
try {
- userDir = System.getProperty("user.dir");
+ userDir = SecuritySupport.getSystemProperty("user.dir");
}
catch (SecurityException se) {
}
--- jaxp/src/com/sun/xml/internal/stream/writers/WriterUtility.java 2012-08-10 09:38:35.000000000 -0700
+++ jaxp/src/com/sun/xml/internal/stream/writers/WriterUtility.java 2013-04-28 16:29:21.000000000 -0700
@@ -32,6 +32,7 @@
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 @@
private CharsetEncoder getDefaultEncoder(){
try{
- String encoding = System.getProperty("file.encoding");
+ String encoding = SecuritySupport.getSystemProperty("file.encoding");
if(encoding != null){
return Charset.forName(encoding).newEncoder();
}
--- jaxp/src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java 2012-08-10 09:38:36.000000000 -0700
+++ jaxp/src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java 2013-04-28 16:29:21.000000000 -0700
@@ -53,6 +53,7 @@
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 @@
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 {
--- jaxp/src/javax/xml/datatype/FactoryFinder.java 2012-08-10 09:38:38.000000000 -0700
+++ jaxp/src/javax/xml/datatype/FactoryFinder.java 2013-04-28 16:29:21.000000000 -0700
@@ -44,6 +44,7 @@
* @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 @@
* 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 @@
* @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 @@
// First try the Context ClassLoader
ClassLoader cl = ss.getContextClassLoader();
+ boolean useBSClsLoader = false;
if (cl != null) {
is = ss.getResourceAsStream(cl, serviceId);
@@ -251,11 +289,13 @@
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 @@
// 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
--- jaxp/src/javax/xml/parsers/FactoryFinder.java 2012-08-10 09:38:39.000000000 -0700
+++ jaxp/src/javax/xml/parsers/FactoryFinder.java 2013-04-28 16:29:21.000000000 -0700
@@ -42,7 +42,7 @@
* @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 @@
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();
--- jaxp/src/javax/xml/stream/FactoryFinder.java 2012-08-10 09:38:41.000000000 -0700
+++ jaxp/src/javax/xml/stream/FactoryFinder.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
* @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 @@
* 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 @@
* @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 @@
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 @@
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 @@
// First try the Context ClassLoader
ClassLoader cl = ss.getContextClassLoader();
+ boolean useBSClsLoader = false;
if (cl != null) {
is = ss.getResourceAsStream(cl, serviceId);
@@ -283,11 +320,13 @@
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 @@
// 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
--- jaxp/src/javax/xml/transform/FactoryFinder.java 2012-08-10 09:38:44.000000000 -0700
+++ jaxp/src/javax/xml/transform/FactoryFinder.java 2013-04-28 16:29:21.000000000 -0700
@@ -43,6 +43,7 @@
* @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 @@
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 @@
providerClass.getDeclaredMethod(
"newTransformerFactoryNoServiceLoader"
);
- return creationMethod.invoke(null, null);
+ return creationMethod.invoke(null, (Object[])null);
} catch (NoSuchMethodException exc) {
return null;
} catch (Exception exc) {
--- jaxp/src/javax/xml/validation/SchemaFactoryFinder.java 2012-08-10 09:38:49.000000000 -0700
+++ jaxp/src/javax/xml/validation/SchemaFactoryFinder.java 2013-04-28 16:29:21.000000000 -0700
@@ -54,6 +54,7 @@
* 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 @@
}
}
- /**
- // 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 @@
*/
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 @@
providerClass.getDeclaredMethod(
"newXMLSchemaFactoryNoServiceLoader"
);
- return creationMethod.invoke(null, null);
+ return creationMethod.invoke(null, (Object[])null);
} catch (NoSuchMethodException exc) {
return null;
} catch (Exception exc) {
--- jaxp/src/javax/xml/xpath/XPathFactoryFinder.java 2012-08-10 09:38:54.000000000 -0700
+++ jaxp/src/javax/xml/xpath/XPathFactoryFinder.java 2013-04-28 16:29:21.000000000 -0700
@@ -48,6 +48,7 @@
* @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 @@
*/
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 @@
providerClass.getDeclaredMethod(
"newXPathFactoryNoServiceLoader"
);
- return creationMethod.invoke(null, null);
+ return creationMethod.invoke(null, (Object[])null);
} catch (NoSuchMethodException exc) {
return null;
} catch (Exception exc) {
--- jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java 2012-08-10 09:38:59.000000000 -0700
+++ jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java 2013-04-28 16:29:21.000000000 -0700
@@ -104,6 +104,8 @@
*/
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 @@
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);
--- jaxp/src/org/xml/sax/helpers/NewInstance.java 2012-08-10 09:39:17.000000000 -0700
+++ jaxp/src/org/xml/sax/helpers/NewInstance.java 2013-04-28 16:29:21.000000000 -0700
@@ -54,9 +54,10 @@
* 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 @@
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 @@
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());
- }
- }
}
--- jaxp/src/org/xml/sax/helpers/ParserAdapter.java 2012-08-10 09:39:17.000000000 -0700
+++ jaxp/src/org/xml/sax/helpers/ParserAdapter.java 2013-04-28 16:29:21.000000000 -0700
@@ -74,13 +74,14 @@
*
* @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 @@
{
super();
- String driver = System.getProperty("org.xml.sax.parser");
+ String driver = ss.getSystemProperty("org.xml.sax.parser");
try {
setup(ParserFactory.makeParser());
--- jaxp/src/org/xml/sax/helpers/ParserFactory.java 2012-08-10 09:39:17.000000000 -0700
+++ jaxp/src/org/xml/sax/helpers/ParserFactory.java 2013-04-28 16:29:21.000000000 -0700
@@ -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 @@
* 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 @@
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 @@
ClassCastException
{
return (Parser) NewInstance.newInstance (
- NewInstance.getClassLoader (), className);
+ ss.getContextClassLoader(), className);
}
}
--- jaxp/src/org/xml/sax/helpers/SecuritySupport.java 1969-12-31 16:00:00.000000000 -0800
+++ jaxp/src/org/xml/sax/helpers/SecuritySupport.java 2013-04-28 16:29:21.000000000 -0700
@@ -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();
+ }
+
+}
--- jaxp/src/org/xml/sax/helpers/XMLReaderFactory.java 2012-08-10 09:39:17.000000000 -0700
+++ jaxp/src/org/xml/sax/helpers/XMLReaderFactory.java 2013-04-28 16:29:21.000000000 -0700
@@ -34,8 +34,6 @@
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 @@
}
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 @@
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 @@
// 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 @@
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)
--- jaxws/.hgtags 2012-08-10 09:46:32.000000000 -0700
+++ jaxws/.hgtags 2013-06-22 09:41:40.000000000 -0700
@@ -123,6 +123,7 @@
05469dd4c3662c454f8a019e492543add60795cc jdk7-b146
c01bfd68d0528bc88348813c4d75d7f5c62bc4e2 jdk7u1-b01
d13b1f877bb5ed8dceb2f7ec10365d1db5f70b2d jdk7-b147
+ce6378e3c791c56b98cbf161804a07d0225b41c0 7u0
4c24f7019ce939a452154a83151294ad7da66a9d jdk7u1-b02
272778f529d11081f548f37fcd6a7aec0b11a8dd jdk7u1-b03
48b06a6e6f46e5bcd610f4bed57cd5067cf31f8c jdk7u1-b04
@@ -197,5 +198,81 @@
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
+52810f8d2dc09ef2b5e6089435f7050c9f7def11 jdk7u17-b32
+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
+d4eba65d0f776b77ef137022cd7bf49dc3b88a3e jdk7u21-b12
+238b59ffddce3b1d7d19114006ae3be0e72b5eed jdk7u25-b01
+8797b25cbeb3005336483063cef2377849bc2088 jdk7u25-b02
+4635a58db6b028f78a30c972ac47f9c5577bedfd jdk7u25-b03
+57d4548795c39e19099fc0a760d7887f83b1564f jdk7u25-b04
+35882693ee358e3a8b92d632dafa98e05fe72437 jdk7u25-b05
+c141079e609653ec700d2e71f16be4a5859e9a42 jdk7u25-b06
+f8e4e84e2dc4dcdaa360a7e9a4d2e0268558d84d jdk7u25-b07
+7ff0c910fb96680d0570b3d29492e15ffb5b279b jdk7u25-b08
+0cd0d4e7331f7fc9f9ee77f2275113571bcf67cf jdk7u25-b09
+105cdfd4f40837917d0065e3e58052d2854df7da jdk7u25-b10
--- jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/AverageRangeStatisticImpl.java 2012-08-10 09:46:46.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/AverageRangeStatisticImpl.java 2013-06-22 09:39:22.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -27,7 +27,6 @@
package com.sun.org.glassfish.external.statistics.impl;
-import java.util.concurrent.atomic.AtomicLong;
import java.util.Map;
import java.lang.reflect.*;
import com.sun.org.glassfish.external.statistics.AverageRangeStatistic;
@@ -139,6 +138,8 @@
// todo: equals implementation
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ checkMethod(method);
+
Object result;
try {
result = method.invoke(this, args);
@@ -147,7 +148,6 @@
} catch (Exception e) {
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
- } finally {
}
return result;
}
--- jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/BoundaryStatisticImpl.java 2012-08-10 09:46:46.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/BoundaryStatisticImpl.java 2013-06-22 09:39:22.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -27,7 +27,6 @@
package com.sun.org.glassfish.external.statistics.impl;
import com.sun.org.glassfish.external.statistics.BoundaryStatistic;
-import java.util.concurrent.atomic.AtomicLong;
import java.util.Map;
import java.lang.reflect.*;
@@ -81,6 +80,8 @@
// todo: equals implementation
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {
+ checkMethod(m);
+
Object result;
try {
result = m.invoke(this, args);
@@ -89,7 +90,6 @@
} catch (Exception e) {
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
- } finally {
}
return result;
}
--- jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/BoundedRangeStatisticImpl.java 2012-08-10 09:46:46.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/BoundedRangeStatisticImpl.java 2013-06-22 09:39:22.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -27,7 +27,6 @@
package com.sun.org.glassfish.external.statistics.impl;
import com.sun.org.glassfish.external.statistics.BoundedRangeStatistic;
-import java.util.concurrent.atomic.AtomicLong;
import java.util.Map;
import java.lang.reflect.*;
@@ -145,6 +144,8 @@
// todo: equals implementation
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {
+ checkMethod(m);
+
Object result;
try {
result = m.invoke(this, args);
@@ -153,7 +154,6 @@
} catch (Exception e) {
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
- } finally {
}
return result;
}
--- jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/CountStatisticImpl.java 2012-08-10 09:46:46.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/CountStatisticImpl.java 2013-06-22 09:39:22.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -26,7 +26,6 @@
package com.sun.org.glassfish.external.statistics.impl;
import com.sun.org.glassfish.external.statistics.CountStatistic;
-import java.util.concurrent.atomic.AtomicLong;
import java.util.Map;
import java.lang.reflect.*;
@@ -103,6 +102,8 @@
// todo: equals implementation
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {
+ checkMethod(m);
+
Object result;
try {
result = m.invoke(this, args);
@@ -111,7 +112,6 @@
} catch (Exception e) {
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
- } finally {
}
return result;
}
--- jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/RangeStatisticImpl.java 2012-08-10 09:46:46.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/RangeStatisticImpl.java 2013-06-22 09:39:22.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -27,7 +27,6 @@
package com.sun.org.glassfish.external.statistics.impl;
import com.sun.org.glassfish.external.statistics.RangeStatistic;
-import java.util.concurrent.atomic.AtomicLong;
import java.util.Map;
import java.lang.reflect.*;
@@ -125,6 +124,8 @@
// todo: equals implementation
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {
+ checkMethod(m);
+
Object result;
try {
result = m.invoke(this, args);
@@ -133,7 +134,6 @@
} catch (Exception e) {
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
- } finally {
}
return result;
}
--- jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/StatisticImpl.java 2012-08-10 09:46:46.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/StatisticImpl.java 2013-06-22 09:39:22.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -26,8 +26,8 @@
package com.sun.org.glassfish.external.statistics.impl;
import com.sun.org.glassfish.external.statistics.Statistic;
-import java.io.Serializable;
-import java.util.concurrent.atomic.AtomicLong;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -133,4 +133,13 @@
protected static boolean isValidString(String str) {
return (str!=null && str.length()>0);
}
+
+ protected void checkMethod(Method method) {
+ if (method == null || method.getDeclaringClass() == null
+ || !Statistic.class.isAssignableFrom(method.getDeclaringClass())
+ || Modifier.isStatic(method.getModifiers())) {
+ throw new RuntimeException("Invalid method on invoke");
+ }
+ }
+
}
--- jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/StringStatisticImpl.java 2012-08-10 09:46:46.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/StringStatisticImpl.java 2013-06-22 09:39:22.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -90,6 +90,8 @@
// todo: equals implementation
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {
+ checkMethod(m);
+
Object result;
try {
result = m.invoke(this, args);
@@ -98,7 +100,6 @@
} catch (Exception e) {
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
- } finally {
}
return result;
}
--- jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/TimeStatisticImpl.java 2012-08-10 09:46:46.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/org/glassfish/external/statistics/impl/TimeStatisticImpl.java 2013-06-22 09:39:22.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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,7 +28,6 @@
package com.sun.org.glassfish.external.statistics.impl;
import com.sun.org.glassfish.external.statistics.TimeStatistic;
-import java.util.concurrent.atomic.AtomicLong;
import java.util.Map;
import java.lang.reflect.*;
@@ -145,6 +144,8 @@
// todo: equals implementation
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {
+ checkMethod(m);
+
Object result;
try {
result = m.invoke(this, args);
@@ -153,7 +154,6 @@
} catch (Exception e) {
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
- } finally {
}
return result;
}
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java 2012-08-10 09:48:50.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java 2013-04-28 16:29:22.000000000 -0700
@@ -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 @@
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 @@
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.
*/
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java 2012-08-10 09:50:08.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java 2013-04-28 16:29:22.000000000 -0700
@@ -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 @@
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 @@
}
// 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 @@
return new MemoryData(buf, config);
}
}
+
}
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java 1969-12-31 16:00:00.000000000 -0800
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java 2013-04-28 16:29:22.000000000 -0700
@@ -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);
+ }
+ }
+
+ }
+
+
+}
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java 2012-08-10 09:50:57.000000000 -0700
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java 2013-04-28 16:29:22.000000000 -0700
@@ -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.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.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.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.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 @@
}
}
- 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 @@
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.
*/
--- jaxws/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java 2012-08-10 09:51:59.000000000 -0700
+++ jaxws/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java 2013-04-28 16:29:22.000000000 -0700
@@ -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 @@
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 @@
* a system property
* @exception SOAPException if there is a SOAP error
*/
- static Object find(String factId)
+ static Object find(String factoryId)
+ throws SOAPException
+ {
+ 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
{
- final ClassLoader classLoader;
- final String factoryId = factId;
+ 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 @@
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 @@
} 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;
+ private static Class safeLoadClass(String className,
+ ClassLoader classLoader)
+ throws ClassNotFoundException {
+ try {
+ // 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));
+ }
+ }
- ClassLoader classLoader;
- try {
- classLoader = Thread.currentThread().getContextClassLoader();
- } catch (Exception x) {
- throw new SOAPException(x.toString(), x);
- }
+ 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);
- if (fallbackClassName == null) {
- throw new SOAPException(
- "Provider for " + factoryId + " cannot be found", null);
+ 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);
}
}
--- jaxws/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java 2012-08-10 09:51:59.000000000 -0700
+++ jaxws/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java 2013-04-28 16:29:22.000000000 -0700
@@ -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 @@
*/
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 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) {
--- jaxws/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java 2012-08-10 09:51:59.000000000 -0700
+++ jaxws/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java 2013-04-28 16:29:22.000000000 -0700
@@ -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 @@
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";
/**
--- jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java 2012-08-10 09:51:59.000000000 -0700
+++ jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java 2013-04-28 16:29:22.000000000 -0700
@@ -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 @@
* 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";
/**
--- jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java 2012-08-10 09:52:00.000000000 -0700
+++ jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java 2013-04-28 16:29:22.000000000 -0700
@@ -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 @@
"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 @@
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);
--- langtools/.hgtags 2012-08-10 10:39:19.000000000 -0700
+++ langtools/.hgtags 2013-06-22 09:42:04.000000000 -0700
@@ -123,6 +123,7 @@
9425dd4f53d5bfcd992d9aecea0eb7d8b2d4f62b jdk7-b146
d34578643d1c6c752d4a6b5e79c6ab1b60850b4a jdk7u1-b01
58bc532d63418ac3c9b42460d89cdaf595c6f3e1 jdk7-b147
+23aadf169f085b180803bcdc53baad4ae870f75b 7u0
cd2cc8b5edb045b950aed46d159b4fb8fc2fd1df jdk7u1-b02
82820a30201dbf4b80f1916f3d0f4a92ad21b61a jdk7u1-b03
baa2c13c70fea3d6e259a34f0903197fdceb64b5 jdk7u1-b04
@@ -197,5 +198,81 @@
a35ca56cf8d09b92511f0cd71208a2ea05c8a338 jdk7u6-b21
4f3aafa690d1fcb18693fc4085049eeffe4778f7 jdk7u6-b22
dd3e29d8892fcaba6d76431d5fa9d49e7c088f76 jdk7u6-b23
-a35ca56cf8d09b92511f0cd71208a2ea05c8a338 jdk7u8-b01
-41bc8da868e58f7182d26b2ab9b6f8a4b09894ed jdk7u8-b02
+6aac89e84fc96d15bb78b13aa71c9e6b73d7237e jdk7u6-b24
+bcd1d067d525065630deb98b678bc00b499adbe1 jdk7u6-b30
+2d6017454236d4e95aad7feaff5fc92a612598f4 jdk7u6-b31
+2d6017454236d4e95aad7feaff5fc92a612598f4 jdk7u7-b10
+27041587508dbc4e08c956ba98a11ce0d5608dc4 jdk7u7-b30
+b92a9f4f6bce4ec500ed3adb8203e6424b579f94 jdk7u7-b11
+f0fd7463f02ea681ca53022d6d0d425ec1584b34 jdk7u7-b31
+6bfc26fc14a0650805dd6583048db0b4f8669844 jdk7u7-b01
+0d4cb328938002fa9a2efc8190ea97beae3230a9 jdk7u7-b02
+04848e261e42c697cb70401f8059186434855f33 jdk7u9-b03
+0000000000000000000000000000000000000000 jdk7u7-b01
+6bfc26fc14a0650805dd6583048db0b4f8669844 jdk7u9-b01
+0000000000000000000000000000000000000000 jdk7u7-b02
+0d4cb328938002fa9a2efc8190ea97beae3230a9 jdk7u9-b02
+9148cdb9a18b55ad7d51bb9644b6db812de34eea jdk7u9-b04
+1de4a0865a714076b4922a9a7119adb98aee23f2 jdk7u9-b05
+5d1a6a593fa17933683b34ea3a55c7d13c028a13 jdk7u9-b31
+acd27fc7fcf3e9dc0a1ae7e101cc036e960b6295 jdk7u9-b32
+8dfbebb98865d822ddd9e0b9641d21e8bdb8a866 jdk7u10-b10
+01c6dde274bd520067264231b3015c37e8e62d24 jdk7u10-b11
+1fb02747d3bce646374c2cab95048c516cec6b01 jdk7u10-b12
+14735b3d8bdffc7892f1db04b6262bdaad2eb9d7 jdk7u10-b13
+f555fcdbd07156ee11b25fb4ac106065bbf496b4 jdk7u10-b14
+dfcd16ac3fbcabed815b8ef4e792716cce0bce21 jdk7u10-b15
+eaa8a0141c35edc382d7ce0b1148912db8422b16 jdk7u10-b16
+7101b3e80e96b000b0b4f0bd7fe4dd7910d02f74 jdk7u10-b17
+4f529e320d83f517a55065b4710c7f1e5ff692c9 jdk7u10-b18
+1e5aed8511b9bea5c2ebe51a2d9094be8bac73cc jdk7u10-b30
+db426c20b06918feeeaa036d52a5096c2bb646b0 jdk7u10-b31
+b01338429ab6821f44d19601de433b538942b53d jdk7u11-b20
+aeef1c7e43bc2d4a0960ebf42b642f7a34ec8afc jdk7u11-b21
+92de02b43596ea1d01c87d56dbc9acc0960a90c3 jdk7u11-b32
+309b5ccd0501d48fa7eed29e45197b4101de4683 jdk7u11-b33
+eaa8a0141c35edc382d7ce0b1148912db8422b16 jdk7u11-b03
+e8071ede35dc5948f5ed127941be192a4a8c1ebd jdk7u11-b04
+17b9bb22f3fd6a624879a29a3fc4b252327c113d jdk7u11-b05
+96c8b3b817aa3e672f78f1d5006616104378ff29 jdk7u11-b06
+c5d3dabddff76c92425cbf6a99ed4e066d16b4fd jdk7u11-b07
+a0d9abc405580d6fa0ae217fab96608285a38c41 jdk7u11-b08
+a778aaf53c52f78c92f29a1220d9f46de94c9247 jdk7u13-b09
+761b933e269693fd689c2af5d8317201b2172dbb jdk7u13-b10
+8a12629ea21378f96666628f472cd9a6936a4933 jdk7u13-b30
+761b933e269693fd689c2af5d8317201b2172dbb jdk7u13-b20
+1298307076c2f0c2a4acd3a2a132cbe98d399009 jdk7u15-b01
+8db0105f00ce9fe6899ece52d46d78995111c456 jdk7u15-b02
+b00c1580ffa95d9edd567835e1b9a77cf8ca2af6 jdk7u15-b30
+2c82a733594aef14f7a91a910c6b7b20e6220078 jdk7u15-b31
+5639dfc55f771823fab02438e5c89c6b18f57d07 jdk7u15-b33
+c160d7d1616d099afad0986b7d06aee2d9405e57 jdk7u15-b03
+a778aaf53c52f78c92f29a1220d9f46de94c9247 jdk7u15-b32
+edfcf07c2877af8efa649e514167b22b7f6fc0b4 jdk7u17-b01
+2782a1c60faf7585dee0af0ef585aeed3288e521 jdk7u17-b02
+0abc443a68676c7231b274a324d27204c735acac jdk7u17-b30
+1a9b32d36ff86136549f20156cf3e821295228a0 jdk7u17-b31
+a91bdaf125d89b8b2c6ff86c8055aab3b7d2546c jdk7u17-b32
+8a12629ea21378f96666628f472cd9a6936a4933 jdk7u21-b01
+82103a284427a2512fe884d8f232f1a83d46beb6 jdk7u21-b02
+9adfe6a84c3884d5c24f6655e89546a6e0a80129 jdk7u21-b03
+71704143744ee46f105bf1bf3e4b7aecaf9c1003 jdk7u21-b04
+0970c229028499d5348d77712edf42d712538441 jdk7u21-b05
+5e0127eb56c3f70bdf67a5b2c57cf218838371ae jdk7u21-b06
+08034557136e484b3a7c4d0ec9b21e57ea9cd30b jdk7u21-b07
+f3c75c441d5623186e43de0b5a645e12fc360c29 jdk7u21-b08
+b6c7a18b668b85bdc41914b2b354c1928deb659e jdk7u21-b09
+de06078efe709392d7faf44803d54b74599f6bda jdk7u21-b10
+e120818fc321b5d9d8573a58bf5f6a6eb7471229 jdk7u21-b11
+ff6f8ab2635c6e0b0f6bb1a68dca48b4fc31b107 jdk7u21-b30
+a87ad97e80ae1861143b477d8a8990dc6ecc9173 jdk7u21-b12
+884621bb9042cd4a06e230307f1e26f1c518346d jdk7u25-b01
+1311e3618232058b09fe7ea25eda4af8d3fe6807 jdk7u25-b02
+8dc40e209a12638ea18bb7ee436051768afa5d39 jdk7u25-b03
+d7f974b867c4cf771ab749871c2ff4d3f869f13f jdk7u25-b04
+e8d01d8ee8f547f97d8670157ddf5a798459b85a jdk7u25-b05
+25489e38393b7c70fb826069d50860fbc409d11d jdk7u25-b06
+11fd425a3ebee6fa02bd684d356300b3619e5e7a jdk7u25-b07
+edaa697ef947de30b940bef0a546590d09c99cd3 jdk7u25-b08
+17ee569d0c0130824ba27bc1b090114e6075c5f2 jdk7u25-b09
+41c1b02cd6a8fa7746752cc911da3dd4d380098d jdk7u25-b10
--- langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java 2012-08-10 10:39:24.000000000 -0700
+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java 2013-06-22 09:39:33.000000000 -0700
@@ -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
@@ -312,8 +312,41 @@
String scriptCode = DocletConstants.NL + " targetPage = \"\" + window.location.search;" + DocletConstants.NL +
" if (targetPage != \"\" && targetPage != \"undefined\")" + DocletConstants.NL +
" targetPage = targetPage.substring(1);" + DocletConstants.NL +
- " if (targetPage.indexOf(\":\") != -1)" + DocletConstants.NL +
+ " if (targetPage.indexOf(\":\") != -1 || (targetPage != \"\" && !validURL(targetPage)))" + DocletConstants.NL +
" targetPage = \"undefined\";" + DocletConstants.NL +
+ " function validURL(url) {" + DocletConstants.NL +
+ " if (!(url.indexOf(\".html\") == url.length - 5))" + DocletConstants.NL +
+ " return false;" + DocletConstants.NL +
+ " var allowNumber = false;" + DocletConstants.NL +
+ " var allowSep = false;" + DocletConstants.NL +
+ " var seenDot = false;" + DocletConstants.NL +
+ " for (var i = 0; i < url.length - 5; i++) {" + DocletConstants.NL +
+ " var ch = url.charAt(i);" + DocletConstants.NL +
+ " if ('a' <= ch && ch <= 'z' ||" + DocletConstants.NL +
+ " 'A' <= ch && ch <= 'Z' ||" + DocletConstants.NL +
+ " ch == '$' ||" + DocletConstants.NL +
+ " ch == '_') {" + DocletConstants.NL +
+ " allowNumber = true;" + DocletConstants.NL +
+ " allowSep = true;" + DocletConstants.NL +
+ " } else if ('0' <= ch && ch <= '9'" + DocletConstants.NL +
+ " || ch == '-') {" + DocletConstants.NL +
+ " if (!allowNumber)" + DocletConstants.NL +
+ " return false;" + DocletConstants.NL +
+ " } else if (ch == '/' || ch == '.') {" + DocletConstants.NL +
+ " if (!allowSep)" + DocletConstants.NL +
+ " return false;" + DocletConstants.NL +
+ " allowNumber = false;" + DocletConstants.NL +
+ " allowSep = false;" + DocletConstants.NL +
+ " if (ch == '.')" + DocletConstants.NL +
+ " seenDot = true;" + DocletConstants.NL +
+ " if (ch == '/' && seenDot)" + DocletConstants.NL +
+ " return false;" + DocletConstants.NL +
+ " } else {" + DocletConstants.NL +
+ " return false;"+ DocletConstants.NL +
+ " }" + DocletConstants.NL +
+ " }" + DocletConstants.NL +
+ " return true;" + DocletConstants.NL +
+ " }" + DocletConstants.NL +
" function loadFrames() {" + DocletConstants.NL +
" if (targetPage != \"\" && targetPage != \"undefined\")" + DocletConstants.NL +
" top.classFrame.location = top.targetPage;" + DocletConstants.NL +
--- langtools/test/Makefile 2012-08-10 10:39:30.000000000 -0700
+++ langtools/test/Makefile 2013-06-22 09:42:04.000000000 -0700
@@ -42,6 +42,14 @@
ARCH=i586
endif
endif
+ifeq ($(findstring BSD,$(OSNAME)), BSD)
+ PLATFORM = bsd
+ JT_PLATFORM = linux
+ ARCH = $(shell uname -m)
+ ifeq ($(ARCH), i386)
+ ARCH=i586
+ endif
+endif
ifeq ($(OSNAME), Windows_NT)
PLATFORM = windows
JT_PLATFORM = win32
@@ -101,7 +109,7 @@
ifdef JPRT_JAVA_HOME
JT_JAVA = $(JPRT_JAVA_HOME)
else
- JT_JAVA = $(SLASH_JAVA)/re/jdk/1.6.0/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
+ JT_JAVA = $(TEST_ROOT)/../../build/$(PLATFORM)-$(ARCH)
endif
# Default JDK to test
@@ -196,7 +204,9 @@
# The test directories to run
DEFAULT_TESTDIRS = .
-TESTDIRS = $(DEFAULT_TESTDIRS)
+ifndef TESTDIRS
+ TESTDIRS = $(DEFAULT_TESTDIRS)
+endif
# Root of all test results
TEST_OUTPUT_DIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools
--- langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java 2012-08-10 10:39:33.000000000 -0700
+++ langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java 2013-06-22 09:39:33.000000000 -0700
@@ -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
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4665566 4855876 7025314
+ * @bug 4665566 4855876 7025314 8012375
* @summary Verify that the output has the right javascript.
* @author jamieh
* @library ../lib/
@@ -35,7 +35,7 @@
public class TestJavascript extends JavadocTester {
//Test information.
- private static final String BUG_ID = "4665566-4855876";
+ private static final String BUG_ID = "4665566-4855876-8012375";
//Javadoc arguments.
private static final String[] ARGS = new String[] {
@@ -53,8 +53,41 @@
" targetPage = \"\" + window.location.search;" + NL +
" if (targetPage != \"\" && targetPage != \"undefined\")" + NL +
" targetPage = targetPage.substring(1);" + NL +
- " if (targetPage.indexOf(\":\") != -1)" + NL +
+ " if (targetPage.indexOf(\":\") != -1 || (targetPage != \"\" && !validURL(targetPage)))" + NL +
" targetPage = \"undefined\";" + NL +
+ " function validURL(url) {" + NL +
+ " if (!(url.indexOf(\".html\") == url.length - 5))" + NL +
+ " return false;" + NL +
+ " var allowNumber = false;" + NL +
+ " var allowSep = false;" + NL +
+ " var seenDot = false;" + NL +
+ " for (var i = 0; i < url.length - 5; i++) {" + NL +
+ " var ch = url.charAt(i);" + NL +
+ " if ('a' <= ch && ch <= 'z' ||" + NL +
+ " 'A' <= ch && ch <= 'Z' ||" + NL +
+ " ch == '$' ||" + NL +
+ " ch == '_') {" + NL +
+ " allowNumber = true;" + NL +
+ " allowSep = true;" + NL +
+ " } else if ('0' <= ch && ch <= '9'" + NL +
+ " || ch == '-') {" + NL +
+ " if (!allowNumber)" + NL +
+ " return false;" + NL +
+ " } else if (ch == '/' || ch == '.') {" + NL +
+ " if (!allowSep)" + NL +
+ " return false;" + NL +
+ " allowNumber = false;" + NL +
+ " allowSep = false;" + NL +
+ " if (ch == '.')" + NL +
+ " seenDot = true;" + NL +
+ " if (ch == '/' && seenDot)" + NL +
+ " return false;" + NL +
+ " } else {" + NL +
+ " return false;" + NL +
+ " }" + NL +
+ " }" + NL +
+ " return true;" + NL +
+ " }" + NL +
" function loadFrames() {" + NL +
" if (targetPage != \"\" && targetPage != \"undefined\")" + NL +
" top.classFrame.location = top.targetPage;" + NL +
--- langtools/test/tools/javac/4846262/Test.sh 2012-08-10 10:39:38.000000000 -0700
+++ langtools/test/tools/javac/4846262/Test.sh 2013-06-22 09:42:04.000000000 -0700
@@ -44,7 +44,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
FS="/"
;;
CYGWIN* )
--- langtools/test/tools/javac/6302184/T6302184.sh 2012-08-10 10:39:38.000000000 -0700
+++ langtools/test/tools/javac/6302184/T6302184.sh 2013-06-22 09:42:04.000000000 -0700
@@ -41,7 +41,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
FS="/"
;;
CYGWIN* )
--- langtools/test/tools/javac/ClassPathTest/ClassPathTest.sh 2012-08-10 10:39:41.000000000 -0700
+++ langtools/test/tools/javac/ClassPathTest/ClassPathTest.sh 2013-06-22 09:42:04.000000000 -0700
@@ -56,7 +56,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
FS="/"
;;
Windows* )
--- langtools/test/tools/javac/ExtDirs/ExtDirs.sh 2012-08-10 10:39:43.000000000 -0700
+++ langtools/test/tools/javac/ExtDirs/ExtDirs.sh 2013-06-22 09:42:04.000000000 -0700
@@ -54,7 +54,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
PS=":"
FS="/"
;;
--- langtools/test/tools/javac/MissingInclude.sh 2012-08-10 10:39:44.000000000 -0700
+++ langtools/test/tools/javac/MissingInclude.sh 2013-06-22 09:42:04.000000000 -0700
@@ -47,7 +47,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
FS="/"
;;
Windows* )
--- langtools/test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh 2012-08-10 10:39:45.000000000 -0700
+++ langtools/test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh 2013-06-22 09:42:04.000000000 -0700
@@ -52,7 +52,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
PS=":"
FS="/"
;;
--- langtools/test/tools/javac/T5090006/compiler.sh 2012-08-10 10:39:47.000000000 -0700
+++ langtools/test/tools/javac/T5090006/compiler.sh 2013-06-22 09:42:04.000000000 -0700
@@ -47,7 +47,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
FS="/"
;;
Windows* )
--- langtools/test/tools/javac/apt.sh 2012-08-10 10:39:53.000000000 -0700
+++ langtools/test/tools/javac/apt.sh 2013-06-22 09:42:04.000000000 -0700
@@ -38,7 +38,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
NULL=/dev/null
PS=":"
FS="/"
--- langtools/test/tools/javac/constDebug/ConstDebug.sh 2012-08-10 10:39:55.000000000 -0700
+++ langtools/test/tools/javac/constDebug/ConstDebug.sh 2013-06-22 09:42:04.000000000 -0700
@@ -47,7 +47,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
PS=":"
FS="/"
;;
--- langtools/test/tools/javac/fatalErrors/NoJavaLang.sh 2012-08-10 10:40:03.000000000 -0700
+++ langtools/test/tools/javac/fatalErrors/NoJavaLang.sh 2013-06-22 09:42:04.000000000 -0700
@@ -48,7 +48,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
FS="/"
;;
CYGWIN* )
--- langtools/test/tools/javac/innerClassFile/Driver.sh 2012-08-10 10:40:14.000000000 -0700
+++ langtools/test/tools/javac/innerClassFile/Driver.sh 2013-06-22 09:42:04.000000000 -0700
@@ -53,7 +53,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
FS="/"
;;
Windows* )
--- langtools/test/tools/javac/javazip/Test.sh 2012-08-10 10:40:14.000000000 -0700
+++ langtools/test/tools/javac/javazip/Test.sh 2013-06-22 09:42:04.000000000 -0700
@@ -41,7 +41,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
FS="/"
SCR=`pwd`
;;
--- langtools/test/tools/javac/links/links.sh 2012-08-10 10:40:15.000000000 -0700
+++ langtools/test/tools/javac/links/links.sh 2013-06-22 09:42:04.000000000 -0700
@@ -53,7 +53,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
NULL=/dev/null
PS=":"
FS="/"
--- langtools/test/tools/javac/newlines/Newlines.sh 2012-08-10 10:40:17.000000000 -0700
+++ langtools/test/tools/javac/newlines/Newlines.sh 2013-06-22 09:42:04.000000000 -0700
@@ -50,7 +50,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
FS="/"
;;
Windows* )
--- langtools/test/tools/javac/processing/6348499/T6348499.java 2012-08-10 10:40:18.000000000 -0700
+++ langtools/test/tools/javac/processing/6348499/T6348499.java 2013-04-28 16:29:40.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -47,6 +47,7 @@
public static void main(String... args) {
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes");
+ String testClassPath = System.getProperty("test.class.path", testClasses);
String A_java = new File(testSrc, "A.java").getPath();
JavacTool tool = JavacTool.create();
MyDiagListener dl = new MyDiagListener();
@@ -55,7 +56,7 @@
fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "A.java")));
Iterable opts = Arrays.asList("-proc:only",
"-processor", "A",
- "-processorpath", testClasses);
+ "-processorpath", testClassPath);
StringWriter out = new StringWriter();
JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
task.call();
--- langtools/test/tools/javac/processing/6414633/T6414633.java 2012-08-10 10:40:18.000000000 -0700
+++ langtools/test/tools/javac/processing/6414633/T6414633.java 2013-04-28 16:29:40.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -43,20 +43,20 @@
public static void main(String... args) {
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes", ".");
+ String testClassPath = System.getProperty("test.class.path", testClasses);
JavacTool tool = JavacTool.create();
MyDiagListener dl = new MyDiagListener();
StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
try {
- fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(new File(testClasses)));
+ fm.setLocation(StandardLocation.CLASS_PATH, pathToFiles(testClassPath));
} catch (IOException e) {
throw new AssertionError(e);
}
Iterable extends JavaFileObject> files =
fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, A.class.getName()+".java")));
String[] opts = { "-proc:only",
- "-processor", A.class.getName(),
- "-classpath", testClasses + System.getProperty("path.separator") + "../../lib" };
+ "-processor", A.class.getName() };
JavacTask task = tool.getTask(null, fm, dl, Arrays.asList(opts), null, files);
task.call();
@@ -65,6 +65,15 @@
throw new AssertionError(dl.diags + " diagnostics reported");
}
+ private static List pathToFiles(String path) {
+ List list = new ArrayList();
+ for (String s: path.split(File.pathSeparator)) {
+ if (!s.isEmpty())
+ list.add(new File(s));
+ }
+ return list;
+ }
+
private static class MyDiagListener implements DiagnosticListener
{
public void report(Diagnostic d) {
--- langtools/test/tools/javac/processing/6430209/T6430209.java 2012-08-10 10:40:18.000000000 -0700
+++ langtools/test/tools/javac/processing/6430209/T6430209.java 2013-04-28 16:29:40.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -56,6 +56,7 @@
// -proc:only -processor b6341534 -cp . ./src/*.java
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes") + System.getProperty("path.separator") + "../../lib";
+ String testClassPath = System.getProperty("test.class.path", testClasses);
JavacTool tool = JavacTool.create();
MyDiagListener dl = new MyDiagListener();
StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
@@ -64,7 +65,7 @@
new File(testSrc, "test0.java"), new File(testSrc, "test1.java")));
Iterable opts = Arrays.asList("-proc:only",
"-processor", "b6341534",
- "-processorpath", testClasses);
+ "-processorpath", testClassPath);
StringWriter out = new StringWriter();
JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
task.call();
--- langtools/test/tools/javac/processing/T6920317.java 2012-08-10 10:40:19.000000000 -0700
+++ langtools/test/tools/javac/processing/T6920317.java 2013-04-28 16:29:40.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -156,7 +156,9 @@
String expect = null;
opts.add("-processorpath");
- opts.add(System.getProperty("test.classes"));
+ String testClasses = System.getProperty("test.classes");
+ String testClassPath = System.getProperty("test.class.path", testClasses);
+ opts.add(testClassPath);
opts.add("-processor");
opts.add(Processor.class.getName());
opts.add("-proc:only");
--- langtools/test/tools/javac/stackmap/T4955930.sh 2012-08-10 10:40:22.000000000 -0700
+++ langtools/test/tools/javac/stackmap/T4955930.sh 2013-06-22 09:42:04.000000000 -0700
@@ -41,7 +41,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
FS="/"
;;
Windows_95 | Windows_98 | Windows_NT )
--- langtools/test/tools/javac/unicode/SupplementaryJavaID6.sh 2012-08-10 10:40:25.000000000 -0700
+++ langtools/test/tools/javac/unicode/SupplementaryJavaID6.sh 2013-06-22 09:42:04.000000000 -0700
@@ -55,7 +55,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | Darwin | *BSD )
if [ -d /usr/lib/locale/en_US.UTF-8 -o -d /usr/lib/locale/en_US.utf8 ]
then
ENV="env LANG=en_US.UTF-8"
--- langtools/test/tools/javah/6257087/foo.sh 2012-08-10 10:40:28.000000000 -0700
+++ langtools/test/tools/javah/6257087/foo.sh 2013-06-22 09:42:04.000000000 -0700
@@ -41,7 +41,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
PS=":"
FS="/"
;;
--- langtools/test/tools/javah/ConstMacroTest.sh 2012-08-10 10:40:28.000000000 -0700
+++ langtools/test/tools/javah/ConstMacroTest.sh 2013-06-22 09:42:04.000000000 -0700
@@ -56,7 +56,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin )
+ SunOS | Linux | *BSD | Darwin )
PS=":"
FS="/"
;;
--- langtools/test/tools/javah/MissingParamClassTest.sh 2012-08-10 10:40:28.000000000 -0700
+++ langtools/test/tools/javah/MissingParamClassTest.sh 2013-06-22 09:42:04.000000000 -0700
@@ -58,7 +58,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
PS=":"
FS="/"
;;
--- langtools/test/tools/javah/ReadOldClass.sh 2012-08-10 10:40:28.000000000 -0700
+++ langtools/test/tools/javah/ReadOldClass.sh 2013-06-22 09:42:04.000000000 -0700
@@ -43,7 +43,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
PS=":"
FS="/"
;;
--- langtools/test/tools/javap/pathsep.sh 2012-08-10 10:40:29.000000000 -0700
+++ langtools/test/tools/javap/pathsep.sh 2013-06-22 09:42:04.000000000 -0700
@@ -40,7 +40,7 @@
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
+ SunOS | Linux | *BSD | Darwin | CYGWIN* )
FS="/"
;;
Windows* )
--- make/scripts/normalizer.pl 2012-08-10 09:07:04.000000000 -0700
+++ make/scripts/normalizer.pl 1969-12-31 16:00:00.000000000 -0800
@@ -1,208 +0,0 @@
-#!/usr/bin/perl
-
-#
-# Copyright (c) 2009, 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.
-#
-
-#
-# Parses java files:
-# 1. Removes from the end of lines spaces and TABs
-# 2. Replaces TABs by spaces
-# 3. Replaces all NewLine separators by Unix NewLine separators
-# 4. Makes one and only one empty line at the end of each file
-
-if ($#ARGV < 0) {
- &usage;
-
- die;
-}
-
-use Cwd 'abs_path';
-
-my @extensions = ("java");
-
-# Read options
-my $dirpos = 0;
-
-while ($dirpos < $#ARGV) {
- if ($ARGV[$dirpos] eq "-e") {
- @extensions = split(/,/, $ARGV[$dirpos + 1]);
- } else {
- last;
- }
-
- $dirpos += 2;
-}
-
-if ($dirpos > $#ARGV) {
- &usage;
-
- die;
-}
-
-use Cwd;
-my $currdir = getcwd;
-
-my $allfiles = 0;
-
-my $filecount = 0;
-
-my @tabvalues;
-
-# Init tabvalues
-push (@tabvalues, " ");
-
-for (my $i = 1; $i < 8; $i++) {
- push(@tabvalues, $tabvalues[$i - 1] . " ");
-}
-
-open(FILELIST, ">$currdir/filelist") or die "Failed while open $currdir/filelist: $!\n";
-
-while ($dirpos <= $#ARGV) {
- use File::Find;
-
- find(\&parse_file, abs_path($ARGV[$dirpos]));
-
- $dirpos += 1;
-}
-
-close(FILELIST);
-
-use Cwd 'chdir';
-chdir $currdir;
-
-print "Checked $allfiles file(s)\n";
-print "Modified $filecount file(s)\n";
-print "See results in the file $currdir/filelist\n";
-
-sub parse_file {
- my $filename = $File::Find::name;
-
- # Skip directories
- return if -d;
-
- # Skip SCCS files
- return if ($filename =~ /\/SCCS\//);
-
- # Skip files with invalid extensions
- my $accepted = 0;
- foreach my $ext (@extensions) {
- if ($_ =~ /\.$ext$/i) {
- $accepted = 1;
-
- last;
- }
- }
- return if ($accepted == 0);
-
- use File::Basename;
- my $dirname = dirname($filename);
-
- use Cwd 'chdir';
- chdir $dirname;
-
- open(FILE, $filename) or die "Failed while open $filename: $!\n";
-
- # Read file
- my @content;
- my $line;
- my $emptylinescount = 0;
- my $modified = 0;
-
- while ($line = ) {
- my $originalline = $line;
-
- # Process line
-
- # Remove from the end of the line spaces and return character
- while ($line =~ /\s$/) {
- chop($line);
- }
-
- # Replace TABs
- for (my $i = 0; $i < length($line); $i++) {
- if (substr($line, $i, 1) =~ /\t/) {
- $line = substr($line, 0, $i) . $tabvalues[7 - ($i % 8)] . substr($line, $i + 1);
- }
- }
-
- if (length($line) == 0) {
- $emptylinescount++;
- } else {
- while ($emptylinescount > 0) {
- push(@content, "");
-
- $emptylinescount--;
- }
-
- push(@content, $line);
- }
-
- if ($originalline ne ($line . "\n")) {
- $modified = 1;
- }
-
- }
-
- $allfiles++;
-
- if ($emptylinescount > 0) {
- $modified = 1;
- }
-
- close(FILE);
-
- if ($modified != 0) {
- # Write file
- open(FILE, ">$filename") or die "Failed while open $filename: $!\n";
-
- for (my $i = 0; $i <= $#content; $i++) {
- print FILE "$content[$i]\n";
- }
-
- close(FILE);
-
- # Print name from current dir
- if (index($filename, $currdir) == 0) {
- print FILELIST substr($filename, length($currdir) + 1);
- } else {
- print FILELIST $filename;
- }
- print FILELIST "\n";
-
- $filecount++;
-
- print "$filename: modified\n";
- }
-}
-
-sub usage {
- print "Usage:\n";
- print " normalizer.pl [-options] [dir2 dir3 ...]\n";
- print " Available options:\n";
- print " -e comma separated files extensions. By default accepts only java files\n";
- print "\n";
- print "Examples:\n";
- print " normalizer.pl -e c,cpp,h,hpp .\n";
-}
-
-