i#32546# - Java UnoRuntime.getUniqueKey/generateOid do not work reliably

In the Java UNO bridge, UnoRuntime.generateOid() generated the
object-specific part of the OID using java.lang.Object.hashCode(),
which is only 32 bits long, and is commonly overriden and could thus
return values from an even smaller range, so OID collisions were quite
likely.

This changes UnoRuntime.generateOid() to use 128 bit UUIDs for the
object-specific part of the OID, and store these in an object => oid
java.util.WeakHashMap, making OID collisions almost impossible.

Patch by: me
Suggested by: Stephan Bergmann (stephan dot bergmann dot secondary at
googlemail dot com)

(cherry picked from commit 6dd83d1c6c5c580d14ca3d0458be4020603ba118)

Change-Id: I8e851a7a69ac2defefa15e9a00118d8f9fc0da95
Reviewed-on: https://gerrit.libreoffice.org/41576
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
1 file changed
tree: b3238993bd52e4fb54822503e0621692ef553ea9
  1. .git-hooks/
  2. accessibility/
  3. afms/
  4. android/
  5. animations/
  6. apache-commons/
  7. apple_remote/
  8. autodoc/
  9. avmedia/
  10. basctl/
  11. basebmp/
  12. basegfx/
  13. basic/
  14. bean/
  15. beanshell/
  16. bin/
  17. binaryurp/
  18. bluez_bluetooth/
  19. boost/
  20. bridges/
  21. cairo/
  22. canvas/
  23. chart2/
  24. cli_ure/
  25. clucene/
  26. codemaker/
  27. comphelper/
  28. compilerplugins/
  29. config/
  30. configmgr/
  31. connectivity/
  32. cosv/
  33. cppcanvas/
  34. cppu/
  35. cppuhelper/
  36. cppunit/
  37. cpputools/
  38. crashrep/
  39. cross_tail_build/
  40. cross_toolset/
  41. ct2n/
  42. cui/
  43. curl/
  44. dbaccess/
  45. desktop/
  46. distro-configs/
  47. dmake/
  48. drawinglayer/
  49. dtrans/
  50. editeng/
  51. embeddedobj/
  52. embedserv/
  53. epm/
  54. eventattacher/
  55. expat/
  56. extensions/
  57. external/
  58. extras/
  59. fileaccess/
  60. filter/
  61. fontconfig/
  62. forms/
  63. formula/
  64. fpicker/
  65. framework/
  66. freetype/
  67. graphite/
  68. helpcompiler/
  69. hsqldb/
  70. hunspell/
  71. hwpfilter/
  72. hyphen/
  73. i18npool/
  74. i18nutil/
  75. icon-themes/
  76. icu/
  77. idl/
  78. idlc/
  79. instsetoo_native/
  80. io/
  81. ios/
  82. javaunohelper/
  83. jfreereport/
  84. jpeg/
  85. jurt/
  86. jvmaccess/
  87. jvmfwk/
  88. l10ntools/
  89. languagetool/
  90. lcms2/
  91. libcdr/
  92. libcmis/
  93. libexttextcat/
  94. liblangtag/
  95. libmspub/
  96. liborcus/
  97. libpng/
  98. librelogo/
  99. libvisio/
  100. libwpd/
  101. libwpg/
  102. libwps/
  103. libxml2/
  104. libxmlsec/
  105. libxslt/
  106. lingucomponent/
  107. linguistic/
  108. lotuswordpro/
  109. lpsolve/
  110. m4/
  111. MathMLDTD/
  112. mdds/
  113. Mesa/
  114. more_fonts/
  115. moz/
  116. mysqlc/
  117. mysqlcppconn/
  118. mythes/
  119. neon/
  120. nlpsolver/
  121. np_sdk/
  122. nss/
  123. o3tl/
  124. odk/
  125. offapi/
  126. officecfg/
  127. oovbaapi/
  128. oox/
  129. openldap/
  130. openssl/
  131. package/
  132. packimages/
  133. padmin/
  134. postgresql/
  135. postprocess/
  136. psprint_config/
  137. python3/
  138. pyuno/
  139. qadevOOo/
  140. readlicense_oo/
  141. redland/
  142. registry/
  143. remotebridges/
  144. reportbuilder/
  145. reportdesign/
  146. rhino/
  147. ridljar/
  148. rsc/
  149. sal/
  150. salhelper/
  151. sane/
  152. sax/
  153. sc/
  154. scaddins/
  155. sccomp/
  156. scp2/
  157. scripting/
  158. sd/
  159. sdext/
  160. setup_native/
  161. sfx2/
  162. shell/
  163. slideshow/
  164. smoketest/
  165. solenv/
  166. soltools/
  167. sot/
  168. starmath/
  169. stoc/
  170. store/
  171. svgio/
  172. svl/
  173. svtools/
  174. svx/
  175. sw/
  176. swext/
  177. sysui/
  178. tail_build/
  179. test/
  180. testtools/
  181. tomcat/
  182. toolkit/
  183. tools/
  184. touch/
  185. tubes/
  186. twain/
  187. ucb/
  188. ucbhelper/
  189. ucpp/
  190. udkapi/
  191. udm/
  192. unixODBC/
  193. UnoControls/
  194. unodevtools/
  195. unoil/
  196. unotest/
  197. unotools/
  198. unoxml/
  199. ure/
  200. uui/
  201. vbahelper/
  202. vcl/
  203. vigra/
  204. wizards/
  205. writerfilter/
  206. writerperfect/
  207. x11_extensions/
  208. xmerge/
  209. xmlhelp/
  210. xmloff/
  211. xmlreader/
  212. xmlscript/
  213. xmlsecurity/
  214. xpdf/
  215. xsltml/
  216. zlib/
  217. .gitattributes
  218. .gitignore
  219. .gitmodules
  220. .gitreview
  221. autogen.sh
  222. bootstrap
  223. config.guess
  224. config.sub
  225. config_host.mk.in
  226. configure.ac
  227. COPYING
  228. COPYING.LGPL
  229. COPYING.MPL
  230. download
  231. download.lst
  232. g
  233. install-sh
  234. Library_merged.mk
  235. logerrit
  236. Makefile
  237. Makefile.fetch
  238. Makefile.post
  239. Makefile.top
  240. Module_cross_tail_build.mk
  241. Module_tail_build.mk
  242. oowintool
  243. README.Android
  244. README.cross
  245. README.Solaris
  246. README.solver
  247. Repository.mk
  248. RepositoryExternal.mk
  249. RepositoryFixes.mk
  250. RepositoryModule_ooo.mk
  251. TEMPLATE.SOURCECODE.HEADER
  252. unusedcode.easy
  253. unusedcode.exclude
  254. unusedcode.README