testautoa 0.4.0.pre16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (717) hide show
  1. data/.calabash_settings +1 -0
  2. data/CHANGES.txt +254 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +8 -0
  5. data/Rakefile +51 -0
  6. data/bin/calabash-android +101 -0
  7. data/bin/calabash-android-build.rb +43 -0
  8. data/bin/calabash-android-console.rb +29 -0
  9. data/bin/calabash-android-generate.rb +20 -0
  10. data/bin/calabash-android-helpers.rb +46 -0
  11. data/bin/calabash-android-run.rb +41 -0
  12. data/bin/calabash-android-setup.rb +29 -0
  13. data/calabash-android.gemspec +25 -0
  14. data/doc/calabash-android-help.txt +25 -0
  15. data/epl-v10.html +261 -0
  16. data/features-skeleton/my_first.feature +5 -0
  17. data/features-skeleton/step_definitions/calabash_steps.rb +1 -0
  18. data/features-skeleton/support/app_installation_hooks.rb +36 -0
  19. data/features-skeleton/support/app_life_cycle_hooks.rb +14 -0
  20. data/features-skeleton/support/env.rb +1 -0
  21. data/features-skeleton/support/hooks.rb +0 -0
  22. data/irbrc +37 -0
  23. data/lib/calabash-android/calabash_steps.rb +19 -0
  24. data/lib/calabash-android/canned_steps.md +283 -0
  25. data/lib/calabash-android/color_helper.rb +13 -0
  26. data/lib/calabash-android/cucumber.rb +9 -0
  27. data/lib/calabash-android/helpers.rb +159 -0
  28. data/lib/calabash-android/lib/AXMLPrinter2.jar +0 -0
  29. data/lib/calabash-android/lib/TestServer.apk +0 -0
  30. data/lib/calabash-android/lib/manifest_extractor.jar +0 -0
  31. data/lib/calabash-android/lib/screenShotTaker.jar +0 -0
  32. data/lib/calabash-android/lib/unsign.jar +0 -0
  33. data/lib/calabash-android/management/adb.rb +0 -0
  34. data/lib/calabash-android/management/app_installation.rb +1 -0
  35. data/lib/calabash-android/operations.rb +611 -0
  36. data/lib/calabash-android/steps/additions_manual_steps.rb +11 -0
  37. data/lib/calabash-android/steps/app_steps.rb +10 -0
  38. data/lib/calabash-android/steps/assert_steps.rb +44 -0
  39. data/lib/calabash-android/steps/check_box_steps.rb +3 -0
  40. data/lib/calabash-android/steps/context_menu_steps.rb +12 -0
  41. data/lib/calabash-android/steps/date_picker_steps.rb +8 -0
  42. data/lib/calabash-android/steps/enter_text_steps.rb +27 -0
  43. data/lib/calabash-android/steps/l10n_steps.rb +19 -0
  44. data/lib/calabash-android/steps/list_steps.rb +40 -0
  45. data/lib/calabash-android/steps/location_steps.rb +19 -0
  46. data/lib/calabash-android/steps/map_steps.rb +61 -0
  47. data/lib/calabash-android/steps/navigation_steps.rb +46 -0
  48. data/lib/calabash-android/steps/press_button_steps.rb +35 -0
  49. data/lib/calabash-android/steps/progress_steps.rb +71 -0
  50. data/lib/calabash-android/steps/rotation_steps.rb +7 -0
  51. data/lib/calabash-android/steps/screenshot_steps.rb +11 -0
  52. data/lib/calabash-android/steps/search_steps.rb +7 -0
  53. data/lib/calabash-android/steps/spinner_steps.rb +3 -0
  54. data/lib/calabash-android/steps/time_picker_steps.rb +8 -0
  55. data/lib/calabash-android/version.rb +5 -0
  56. data/lib/calabash-android/wait_helpers.rb +93 -0
  57. data/lib/calabash-android.rb +2 -0
  58. data/test-server/AndroidManifest.xml +29 -0
  59. data/test-server/build.xml +144 -0
  60. data/test-server/calabash-js/src/calabash.js +125 -0
  61. data/test-server/calabash-js/src/set_text.js +133 -0
  62. data/test-server/instrumentation-backend/.classpath +10 -0
  63. data/test-server/instrumentation-backend/.gitignore +1 -0
  64. data/test-server/instrumentation-backend/.project +33 -0
  65. data/test-server/instrumentation-backend/.settings/org.eclipse.jdt.core.prefs +11 -0
  66. data/test-server/instrumentation-backend/AndroidManifest.xml +17 -0
  67. data/test-server/instrumentation-backend/antlr/UIQuery.g +113 -0
  68. data/test-server/instrumentation-backend/antlr/UIQuery.tokens +12 -0
  69. data/test-server/instrumentation-backend/antlr.sh +2 -0
  70. data/test-server/instrumentation-backend/assets/foo.bar +0 -0
  71. data/test-server/instrumentation-backend/build-libs/antlr-3.4-complete.jar +0 -0
  72. data/test-server/instrumentation-backend/build-libs/junit.jar +0 -0
  73. data/test-server/instrumentation-backend/build.xml +56 -0
  74. data/test-server/instrumentation-backend/libs/robotium-solo-3.6.jar +0 -0
  75. data/test-server/instrumentation-backend/project.properties +11 -0
  76. data/test-server/instrumentation-backend/res/drawable-hdpi/ic_launcher.png +0 -0
  77. data/test-server/instrumentation-backend/res/drawable-ldpi/ic_launcher.png +0 -0
  78. data/test-server/instrumentation-backend/res/drawable-mdpi/ic_launcher.png +0 -0
  79. data/test-server/instrumentation-backend/res/layout/main.xml +12 -0
  80. data/test-server/instrumentation-backend/res/values/strings.xml +7 -0
  81. data/test-server/instrumentation-backend/src/com/jayway/android/robotium/solo/MapViewUtils.java +328 -0
  82. data/test-server/instrumentation-backend/src/com/jayway/android/robotium/solo/PublicViewFetcher.java +11 -0
  83. data/test-server/instrumentation-backend/src/com/jayway/android/robotium/solo/SoloEnhanced.java +97 -0
  84. data/test-server/instrumentation-backend/src/org/antlr/runtime/ANTLRFileStream.java +78 -0
  85. data/test-server/instrumentation-backend/src/org/antlr/runtime/ANTLRInputStream.java +70 -0
  86. data/test-server/instrumentation-backend/src/org/antlr/runtime/ANTLRReaderStream.java +95 -0
  87. data/test-server/instrumentation-backend/src/org/antlr/runtime/ANTLRStringStream.java +230 -0
  88. data/test-server/instrumentation-backend/src/org/antlr/runtime/BaseRecognizer.java +894 -0
  89. data/test-server/instrumentation-backend/src/org/antlr/runtime/BitSet.java +325 -0
  90. data/test-server/instrumentation-backend/src/org/antlr/runtime/BufferedTokenStream.java +272 -0
  91. data/test-server/instrumentation-backend/src/org/antlr/runtime/CharStream.java +57 -0
  92. data/test-server/instrumentation-backend/src/org/antlr/runtime/CharStreamState.java +45 -0
  93. data/test-server/instrumentation-backend/src/org/antlr/runtime/ClassicToken.java +141 -0
  94. data/test-server/instrumentation-backend/src/org/antlr/runtime/CommonToken.java +191 -0
  95. data/test-server/instrumentation-backend/src/org/antlr/runtime/CommonTokenStream.java +153 -0
  96. data/test-server/instrumentation-backend/src/org/antlr/runtime/DFA.java +250 -0
  97. data/test-server/instrumentation-backend/src/org/antlr/runtime/EarlyExitException.java +41 -0
  98. data/test-server/instrumentation-backend/src/org/antlr/runtime/FailedPredicateException.java +54 -0
  99. data/test-server/instrumentation-backend/src/org/antlr/runtime/IntStream.java +122 -0
  100. data/test-server/instrumentation-backend/src/org/antlr/runtime/LegacyCommonTokenStream.java +394 -0
  101. data/test-server/instrumentation-backend/src/org/antlr/runtime/Lexer.java +340 -0
  102. data/test-server/instrumentation-backend/src/org/antlr/runtime/MismatchedNotSetException.java +41 -0
  103. data/test-server/instrumentation-backend/src/org/antlr/runtime/MismatchedRangeException.java +45 -0
  104. data/test-server/instrumentation-backend/src/org/antlr/runtime/MismatchedSetException.java +44 -0
  105. data/test-server/instrumentation-backend/src/org/antlr/runtime/MismatchedTokenException.java +45 -0
  106. data/test-server/instrumentation-backend/src/org/antlr/runtime/MismatchedTreeNodeException.java +49 -0
  107. data/test-server/instrumentation-backend/src/org/antlr/runtime/MissingTokenException.java +56 -0
  108. data/test-server/instrumentation-backend/src/org/antlr/runtime/NoViableAltException.java +57 -0
  109. data/test-server/instrumentation-backend/src/org/antlr/runtime/Parser.java +98 -0
  110. data/test-server/instrumentation-backend/src/org/antlr/runtime/ParserRuleReturnScope.java +52 -0
  111. data/test-server/instrumentation-backend/src/org/antlr/runtime/RecognitionException.java +180 -0
  112. data/test-server/instrumentation-backend/src/org/antlr/runtime/RecognizerSharedState.java +144 -0
  113. data/test-server/instrumentation-backend/src/org/antlr/runtime/RuleReturnScope.java +42 -0
  114. data/test-server/instrumentation-backend/src/org/antlr/runtime/SerializedGrammar.java +204 -0
  115. data/test-server/instrumentation-backend/src/org/antlr/runtime/Token.java +92 -0
  116. data/test-server/instrumentation-backend/src/org/antlr/runtime/TokenRewriteStream.java +569 -0
  117. data/test-server/instrumentation-backend/src/org/antlr/runtime/TokenSource.java +54 -0
  118. data/test-server/instrumentation-backend/src/org/antlr/runtime/TokenStream.java +75 -0
  119. data/test-server/instrumentation-backend/src/org/antlr/runtime/UnbufferedTokenStream.java +82 -0
  120. data/test-server/instrumentation-backend/src/org/antlr/runtime/UnwantedTokenException.java +53 -0
  121. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/BlankDebugEventListener.java +77 -0
  122. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugEventHub.java +292 -0
  123. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugEventListener.java +323 -0
  124. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugEventRepeater.java +88 -0
  125. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugEventSocketProxy.java +358 -0
  126. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugParser.java +101 -0
  127. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugTokenStream.java +156 -0
  128. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugTreeAdaptor.java +250 -0
  129. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugTreeNodeStream.java +155 -0
  130. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/DebugTreeParser.java +112 -0
  131. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/ParseTreeBuilder.java +109 -0
  132. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/Profiler.java +772 -0
  133. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/RemoteDebugEventSocketListener.java +541 -0
  134. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/TraceDebugEventListener.java +108 -0
  135. data/test-server/instrumentation-backend/src/org/antlr/runtime/debug/Tracer.java +69 -0
  136. data/test-server/instrumentation-backend/src/org/antlr/runtime/misc/DoubleKeyMap.java +62 -0
  137. data/test-server/instrumentation-backend/src/org/antlr/runtime/misc/FastQueue.java +100 -0
  138. data/test-server/instrumentation-backend/src/org/antlr/runtime/misc/IntArray.java +87 -0
  139. data/test-server/instrumentation-backend/src/org/antlr/runtime/misc/LookaheadStream.java +161 -0
  140. data/test-server/instrumentation-backend/src/org/antlr/runtime/misc/Stats.java +189 -0
  141. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/BaseTree.java +349 -0
  142. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/BaseTreeAdaptor.java +279 -0
  143. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/BufferedTreeNodeStream.java +489 -0
  144. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/CommonErrorNode.java +108 -0
  145. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/CommonTree.java +185 -0
  146. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/CommonTreeAdaptor.java +168 -0
  147. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/CommonTreeNodeStream.java +171 -0
  148. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/ParseTree.java +119 -0
  149. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/RewriteCardinalityException.java +47 -0
  150. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/RewriteEarlyExitException.java +39 -0
  151. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/RewriteEmptyStreamException.java +35 -0
  152. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/RewriteRuleElementStream.java +210 -0
  153. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/RewriteRuleNodeStream.java +70 -0
  154. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/RewriteRuleSubtreeStream.java +86 -0
  155. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/RewriteRuleTokenStream.java +76 -0
  156. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/Tree.java +127 -0
  157. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeAdaptor.java +263 -0
  158. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeFilter.java +135 -0
  159. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeIterator.java +132 -0
  160. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeNodeStream.java +106 -0
  161. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeParser.java +169 -0
  162. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreePatternLexer.java +135 -0
  163. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreePatternParser.java +154 -0
  164. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeRewriter.java +124 -0
  165. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeRuleReturnScope.java +41 -0
  166. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeVisitor.java +69 -0
  167. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeVisitorAction.java +47 -0
  168. data/test-server/instrumentation-backend/src/org/antlr/runtime/tree/TreeWizard.java +531 -0
  169. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/CalabashInstrumentationTestRunner.java +37 -0
  170. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/ClearAppData.java +63 -0
  171. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +64 -0
  172. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java +95 -0
  173. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java +90 -0
  174. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +83 -0
  175. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java +130 -0
  176. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/WakeUp.java +30 -0
  177. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Action.java +11 -0
  178. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Actions.java +112 -0
  179. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java +222 -0
  180. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NanoHTTPD.java +1094 -0
  181. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NullAction.java +23 -0
  182. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/FinishOpenedActivities.java +19 -0
  183. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/GetOpenedActivities.java +31 -0
  184. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/GoBackToActivity.java +67 -0
  185. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/SetActivityOrientation.java +41 -0
  186. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java +22 -0
  187. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java +27 -0
  188. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonDescription.java +40 -0
  189. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonNumber.java +22 -0
  190. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/WaitForButton.java +47 -0
  191. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/checkbox/ToggleCheckboxNumber.java +22 -0
  192. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressText.java +22 -0
  193. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuById.java +26 -0
  194. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByIndex.java +22 -0
  195. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java +26 -0
  196. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/ClickOnScreen.java +31 -0
  197. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Drag.java +40 -0
  198. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/DragCoordinates.java +28 -0
  199. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +34 -0
  200. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/TouchCoordinates.java +28 -0
  201. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/InspectCurrentDialog.java +76 -0
  202. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/ListActions.java +26 -0
  203. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/l10n/L10nHelper.java +31 -0
  204. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/l10n/PressElement.java +48 -0
  205. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/l10n/WaitForElement.java +47 -0
  206. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/GetListData.java +85 -0
  207. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/GetListItemProperties.java +194 -0
  208. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/GetListItemText.java +136 -0
  209. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/LongPressListItems.java +22 -0
  210. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/PressListItems.java +22 -0
  211. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +138 -0
  212. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/GetMapBounds.java +27 -0
  213. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/GetMapCenter.java +27 -0
  214. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/GetMapMarker.java +31 -0
  215. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/GetMapMarkers.java +48 -0
  216. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/GetMapZoom.java +19 -0
  217. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/PanMapTo.java +23 -0
  218. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/SetMapCenter.java +23 -0
  219. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/SetMapZoom.java +34 -0
  220. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/TapAwayFromMarkers.java +28 -0
  221. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/map/TapMapMarker.java +29 -0
  222. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollDown.java +22 -0
  223. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollUp.java +22 -0
  224. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/search/EnterQueryByIndex.java +24 -0
  225. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/DownKey.java +24 -0
  226. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/EnterKey.java +24 -0
  227. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/GoBack.java +22 -0
  228. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/LeftKey.java +24 -0
  229. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/PressMenu.java +26 -0
  230. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/RightKey.java +24 -0
  231. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java +24 -0
  232. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/UpKey.java +24 -0
  233. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/GetSelectedSpinnerItemText.java +36 -0
  234. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java +43 -0
  235. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertGridViewContainsNoDuplicates.java +72 -0
  236. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertText.java +31 -0
  237. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertTextOfSpecificTextViewByContentDescription.java +32 -0
  238. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextById.java +30 -0
  239. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextByIndex.java +22 -0
  240. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextFieldByContentDescription.java +33 -0
  241. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClickOnText.java +22 -0
  242. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByContentDescription.java +32 -0
  243. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextById.java +30 -0
  244. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByIndex.java +22 -0
  245. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/GetTextById.java +42 -0
  246. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByContentDescription.java +33 -0
  247. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByIndex.java +24 -0
  248. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByContentDescription.java +34 -0
  249. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByIndex.java +26 -0
  250. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/version/Version.java +31 -0
  251. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/AssertViewProperty.java +141 -0
  252. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewByDescription.java +46 -0
  253. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java +56 -0
  254. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/GetActivityName.java +32 -0
  255. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/GetViewProperty.java +101 -0
  256. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/HasView.java +31 -0
  257. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/IsCurrentActivityFocused.java +40 -0
  258. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/IsEnabled.java +30 -0
  259. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/LongPressOnViewById.java +34 -0
  260. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/Press.java +89 -0
  261. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/SelectTab.java +110 -0
  262. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/Wait.java +24 -0
  263. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForDialogClose.java +21 -0
  264. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForProgress.java +47 -0
  265. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForScreen.java +54 -0
  266. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForTab.java +108 -0
  267. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForText.java +37 -0
  268. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForView.java +43 -0
  269. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForViewById.java +51 -0
  270. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +180 -0
  271. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +53 -0
  272. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +55 -0
  273. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +121 -0
  274. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteAsyncJavascript.java +77 -0
  275. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java +75 -0
  276. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/GetLoadProgress.java +21 -0
  277. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/GetUrl.java +21 -0
  278. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java +44 -0
  279. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +70 -0
  280. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +104 -0
  281. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +87 -0
  282. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +69 -0
  283. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +47 -0
  284. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java +40 -0
  285. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java +222 -0
  286. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java +7 -0
  287. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java +56 -0
  288. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java +181 -0
  289. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/QueryResult.java +27 -0
  290. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +19 -0
  291. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java +22 -0
  292. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java +93 -0
  293. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +1713 -0
  294. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +771 -0
  295. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/BeginsWithRelation.java +45 -0
  296. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ComparisonOperator.java +54 -0
  297. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ContainsRelation.java +41 -0
  298. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/EndsWithRelation.java +42 -0
  299. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/InvalidUIQueryException.java +10 -0
  300. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/LikeRelation.java +79 -0
  301. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java +100 -0
  302. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java +8 -0
  303. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java +142 -0
  304. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicate.java +147 -0
  305. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicateRelation.java +5 -0
  306. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +202 -0
  307. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryDirection.java +15 -0
  308. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java +99 -0
  309. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +271 -0
  310. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java +32 -0
  311. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java +413 -0
  312. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java +90 -0
  313. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java +29 -0
  314. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonEncoding.java +47 -0
  315. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonFactory.java +937 -0
  316. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerationException.java +28 -0
  317. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerator.java +1197 -0
  318. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonLocation.java +141 -0
  319. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonNode.java +879 -0
  320. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParseException.java +23 -0
  321. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParser.java +1434 -0
  322. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonProcessingException.java +80 -0
  323. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonStreamContext.java +122 -0
  324. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonToken.java +161 -0
  325. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/ObjectCodec.java +157 -0
  326. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/PrettyPrinter.java +166 -0
  327. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/SerializableString.java +54 -0
  328. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Version.java +90 -0
  329. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Versioned.java +20 -0
  330. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JacksonAnnotation.java +20 -0
  331. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnyGetter.java +25 -0
  332. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnySetter.java +24 -0
  333. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAutoDetect.java +148 -0
  334. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonBackReference.java +41 -0
  335. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonCreator.java +19 -0
  336. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonGetter.java +35 -0
  337. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnore.java +57 -0
  338. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreProperties.java +48 -0
  339. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreType.java +33 -0
  340. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonManagedReference.java +41 -0
  341. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonMethod.java +90 -0
  342. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonProperty.java +38 -0
  343. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonPropertyOrder.java +46 -0
  344. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonRawValue.java +33 -0
  345. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSetter.java +33 -0
  346. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSubTypes.java +44 -0
  347. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeInfo.java +236 -0
  348. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeName.java +28 -0
  349. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonUnwrapped.java +76 -0
  350. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonValue.java +46 -0
  351. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonWriteNullProperties.java +34 -0
  352. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/package-info.java +16 -0
  353. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatDetector.java +176 -0
  354. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatMatcher.java +117 -0
  355. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/InputAccessor.java +130 -0
  356. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/MatchStrength.java +64 -0
  357. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/package-info.java +8 -0
  358. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ByteSourceBootstrapper.java +518 -0
  359. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/DefaultPrettyPrinter.java +13 -0
  360. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Indenter.java +23 -0
  361. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonGeneratorBase.java +570 -0
  362. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonNumericParserBase.java +20 -0
  363. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserBase.java +1067 -0
  364. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserMinimalBase.java +539 -0
  365. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonReadContext.java +188 -0
  366. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonWriteContext.java +178 -0
  367. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParser.java +1815 -0
  368. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParserBase.java +228 -0
  369. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/StreamBasedParserBase.java +197 -0
  370. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8Generator.java +1757 -0
  371. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8StreamParser.java +2966 -0
  372. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/WriterBasedGenerator.java +1815 -0
  373. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/package-info.java +6 -0
  374. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/BaseReader.java +117 -0
  375. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/CharacterEscapes.java +73 -0
  376. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/IOContext.java +239 -0
  377. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/InputDecorator.java +67 -0
  378. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/JsonStringEncoder.java +408 -0
  379. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/MergedStream.java +145 -0
  380. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberInput.java +303 -0
  381. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberOutput.java +398 -0
  382. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/OutputDecorator.java +40 -0
  383. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SegmentedStringWriter.java +104 -0
  384. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SerializedString.java +114 -0
  385. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF32Reader.java +214 -0
  386. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF8Writer.java +387 -0
  387. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/package.html +4 -0
  388. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AbstractTypeResolver.java +63 -0
  389. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AnnotationIntrospector.java +1485 -0
  390. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanDescription.java +171 -0
  391. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanProperty.java +123 -0
  392. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanPropertyDefinition.java +66 -0
  393. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ClassIntrospector.java +117 -0
  394. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualDeserializer.java +38 -0
  395. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualKeyDeserializer.java +33 -0
  396. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualSerializer.java +38 -0
  397. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationConfig.java +926 -0
  398. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationContext.java +262 -0
  399. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationProblemHandler.java +56 -0
  400. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerFactory.java +356 -0
  401. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerProvider.java +185 -0
  402. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Deserializers.java +339 -0
  403. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/HandlerInstantiator.java +115 -0
  404. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/InjectableValues.java +85 -0
  405. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonDeserializer.java +166 -0
  406. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonMappingException.java +335 -0
  407. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializable.java +34 -0
  408. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializableWithType.java +22 -0
  409. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializer.java +138 -0
  410. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializer.java +31 -0
  411. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializers.java +21 -0
  412. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MapperConfig.java +1154 -0
  413. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingIterator.java +190 -0
  414. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingJsonFactory.java +81 -0
  415. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Module.java +255 -0
  416. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectMapper.java +2885 -0
  417. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectReader.java +958 -0
  418. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectWriter.java +554 -0
  419. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/PropertyNamingStrategy.java +258 -0
  420. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableDeserializer.java +23 -0
  421. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableSerializer.java +23 -0
  422. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/RuntimeJsonMappingException.java +21 -0
  423. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializationConfig.java +1041 -0
  424. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerFactory.java +198 -0
  425. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerProvider.java +552 -0
  426. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Serializers.java +137 -0
  427. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeDeserializer.java +118 -0
  428. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeSerializer.java +164 -0
  429. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonInject.java +30 -0
  430. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonStdImpl.java +25 -0
  431. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonCachable.java +32 -0
  432. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonDeserialize.java +109 -0
  433. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonFilter.java +31 -0
  434. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonRootName.java +29 -0
  435. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonSerialize.java +216 -0
  436. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeIdResolver.java +35 -0
  437. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeResolver.java +28 -0
  438. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonValueInstantiator.java +26 -0
  439. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonView.java +37 -0
  440. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/NoClass.java +19 -0
  441. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/package-info.java +5 -0
  442. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/AbstractDeserializer.java +102 -0
  443. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializer.java +28 -0
  444. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializers.java +11 -0
  445. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BasicDeserializerFactory.java +894 -0
  446. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializer.java +1537 -0
  447. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerBuilder.java +277 -0
  448. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerFactory.java +1474 -0
  449. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerModifier.java +58 -0
  450. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CollectionDeserializer.java +47 -0
  451. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ContainerDeserializer.java +14 -0
  452. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CustomDeserializerFactory.java +227 -0
  453. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/DateDeserializer.java +9 -0
  454. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumDeserializer.java +15 -0
  455. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumResolver.java +17 -0
  456. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/FromStringDeserializer.java +13 -0
  457. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/JsonNodeDeserializer.java +54 -0
  458. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/MapDeserializer.java +44 -0
  459. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableAnyProperty.java +177 -0
  460. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableBeanProperty.java +827 -0
  461. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializationContext.java +326 -0
  462. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializer.java +94 -0
  463. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializerProvider.java +494 -0
  464. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializers.java +119 -0
  465. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializer.java +12 -0
  466. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializers.java +11 -0
  467. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdScalarDeserializer.java +13 -0
  468. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ThrowableDeserializer.java +13 -0
  469. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/UntypedObjectDeserializer.java +9 -0
  470. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiator.java +280 -0
  471. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiators.java +52 -0
  472. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/BeanPropertyMap.java +257 -0
  473. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorCollector.java +141 -0
  474. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorProperty.java +152 -0
  475. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java +173 -0
  476. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java +117 -0
  477. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValue.java +117 -0
  478. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValueBuffer.java +102 -0
  479. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/UnwrappedPropertyHandler.java +41 -0
  480. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ValueInjector.java +45 -0
  481. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/package-info.java +9 -0
  482. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/package-info.java +5 -0
  483. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicBooleanDeserializer.java +22 -0
  484. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicReferenceDeserializer.java +47 -0
  485. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CalendarDeserializer.java +47 -0
  486. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ClassDeserializer.java +49 -0
  487. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CollectionDeserializer.java +265 -0
  488. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ContainerDeserializerBase.java +37 -0
  489. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/DateDeserializer.java +30 -0
  490. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumDeserializer.java +139 -0
  491. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumMapDeserializer.java +90 -0
  492. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumSetDeserializer.java +89 -0
  493. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java +265 -0
  494. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JavaTypeDeserializer.java +38 -0
  495. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JsonNodeDeserializer.java +314 -0
  496. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/MapDeserializer.java +412 -0
  497. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ObjectArrayDeserializer.java +201 -0
  498. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/PrimitiveArrayDeserializers.java +583 -0
  499. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdDeserializer.java +1136 -0
  500. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java +340 -0
  501. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializers.java +108 -0
  502. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdScalarDeserializer.java +34 -0
  503. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdValueInstantiator.java +392 -0
  504. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringCollectionDeserializer.java +227 -0
  505. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringDeserializer.java +55 -0
  506. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ThrowableDeserializer.java +164 -0
  507. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TimestampDeserializer.java +30 -0
  508. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TokenBufferDeserializer.java +36 -0
  509. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/UntypedObjectDeserializer.java +248 -0
  510. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/package-info.java +15 -0
  511. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/exc/UnrecognizedPropertyException.java +75 -0
  512. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/DOMDeserializer.java +65 -0
  513. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/OptionalHandlerFactory.java +217 -0
  514. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/package-info.java +23 -0
  515. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/Annotated.java +85 -0
  516. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedClass.java +980 -0
  517. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedConstructor.java +143 -0
  518. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedField.java +119 -0
  519. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMember.java +56 -0
  520. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethod.java +188 -0
  521. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethodMap.java +85 -0
  522. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedParameter.java +191 -0
  523. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedWithParams.java +195 -0
  524. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotationMap.java +101 -0
  525. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicBeanDescription.java +615 -0
  526. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicClassIntrospector.java +364 -0
  527. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java +813 -0
  528. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MemberKey.java +83 -0
  529. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MethodFilter.java +12 -0
  530. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java +209 -0
  531. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertiesCollector.java +713 -0
  532. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertyBuilder.java +648 -0
  533. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/VisibilityChecker.java +424 -0
  534. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/package-info.java +12 -0
  535. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/NamedType.java +53 -0
  536. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/SubtypeResolver.java +39 -0
  537. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeIdResolver.java +74 -0
  538. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeResolverBuilder.java +151 -0
  539. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeDeserializer.java +126 -0
  540. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeSerializer.java +110 -0
  541. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeDeserializer.java +37 -0
  542. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeSerializer.java +129 -0
  543. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeDeserializer.java +191 -0
  544. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeSerializer.java +69 -0
  545. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeDeserializer.java +103 -0
  546. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeSerializer.java +121 -0
  547. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/ClassNameIdResolver.java +138 -0
  548. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/MinimalClassNameIdResolver.java +66 -0
  549. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdSubtypeResolver.java +151 -0
  550. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdTypeResolverBuilder.java +202 -0
  551. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeDeserializerBase.java +154 -0
  552. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeIdResolverBase.java +37 -0
  553. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeNameIdResolver.java +154 -0
  554. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeSerializerBase.java +31 -0
  555. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/package-info.java +9 -0
  556. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/package-info.java +10 -0
  557. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleAbstractTypeResolver.java +86 -0
  558. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleDeserializers.java +130 -0
  559. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleKeyDeserializers.java +59 -0
  560. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleModule.java +265 -0
  561. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleSerializers.java +206 -0
  562. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleValueInstantiators.java +45 -0
  563. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/package-info.java +16 -0
  564. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/package-info.java +34 -0
  565. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/AnyGetterWriter.java +48 -0
  566. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ArraySerializers.java +7 -0
  567. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BasicSerializerFactory.java +806 -0
  568. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyFilter.java +30 -0
  569. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyWriter.java +512 -0
  570. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializer.java +126 -0
  571. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerBuilder.java +140 -0
  572. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerFactory.java +780 -0
  573. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerModifier.java +95 -0
  574. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ContainerSerializers.java +8 -0
  575. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/CustomSerializerFactory.java +293 -0
  576. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/EnumSerializer.java +17 -0
  577. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilterProvider.java +23 -0
  578. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilteredBeanPropertyWriter.java +96 -0
  579. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/JdkSerializers.java +11 -0
  580. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/MapSerializer.java +58 -0
  581. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/PropertyBuilder.java +372 -0
  582. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ScalarSerializerBase.java +18 -0
  583. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/SerializerBase.java +23 -0
  584. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdKeySerializer.java +10 -0
  585. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializerProvider.java +852 -0
  586. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializers.java +372 -0
  587. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ToStringSerializer.java +14 -0
  588. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/FailingSerializer.java +43 -0
  589. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/JsonSerializerMap.java +93 -0
  590. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/PropertySerializerMap.java +231 -0
  591. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/ReadOnlyClassToSerializerMap.java +73 -0
  592. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SerializerCache.java +304 -0
  593. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleBeanPropertyFilter.java +109 -0
  594. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleFilterProvider.java +114 -0
  595. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnknownSerializer.java +54 -0
  596. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanPropertyWriter.java +99 -0
  597. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanSerializer.java +76 -0
  598. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/package-info.java +5 -0
  599. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/package-info.java +5 -0
  600. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/AsArraySerializerBase.java +185 -0
  601. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/BeanSerializerBase.java +340 -0
  602. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CalendarSerializer.java +43 -0
  603. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CollectionSerializer.java +113 -0
  604. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ContainerSerializerBase.java +51 -0
  605. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/DateSerializer.java +42 -0
  606. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumMapSerializer.java +218 -0
  607. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSerializer.java +84 -0
  608. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSetSerializer.java +47 -0
  609. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IndexedStringListSerializer.java +116 -0
  610. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/InetAddressSerializer.java +51 -0
  611. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IterableSerializer.java +63 -0
  612. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java +233 -0
  613. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/MapSerializer.java +422 -0
  614. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NonTypedScalarSerializerBase.java +34 -0
  615. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NullSerializer.java +38 -0
  616. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ObjectArraySerializer.java +281 -0
  617. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/RawSerializer.java +52 -0
  618. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ScalarSerializerBase.java +52 -0
  619. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableSerializer.java +99 -0
  620. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableWithTypeSerializer.java +90 -0
  621. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializerBase.java +184 -0
  622. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StaticListSerializerBase.java +46 -0
  623. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdArraySerializers.java +476 -0
  624. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdContainerSerializers.java +249 -0
  625. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdJdkSerializers.java +195 -0
  626. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializer.java +43 -0
  627. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializers.java +95 -0
  628. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringCollectionSerializer.java +119 -0
  629. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringSerializer.java +36 -0
  630. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TimeZoneSerializer.java +38 -0
  631. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ToStringSerializer.java +73 -0
  632. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TokenBufferSerializer.java +66 -0
  633. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ArrayType.java +260 -0
  634. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ClassKey.java +94 -0
  635. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionLikeType.java +204 -0
  636. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionType.java +94 -0
  637. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/HierarchicType.java +88 -0
  638. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapLikeType.java +265 -0
  639. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapType.java +146 -0
  640. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/SimpleType.java +250 -0
  641. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBase.java +148 -0
  642. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBindings.java +351 -0
  643. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeFactory.java +1165 -0
  644. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeModifier.java +38 -0
  645. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeParser.java +134 -0
  646. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/package-info.java +10 -0
  647. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Annotations.java +23 -0
  648. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ArrayBuilders.java +293 -0
  649. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/BeanUtil.java +260 -0
  650. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ClassUtil.java +645 -0
  651. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Comparators.java +48 -0
  652. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumResolver.java +108 -0
  653. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumValues.java +82 -0
  654. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601DateFormat.java +52 -0
  655. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601Utils.java +230 -0
  656. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONPObject.java +105 -0
  657. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONWrappedObject.java +117 -0
  658. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LRUMap.java +28 -0
  659. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LinkedNode.java +45 -0
  660. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Named.java +10 -0
  661. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ObjectBuffer.java +257 -0
  662. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/PrimitiveArrayBuilder.java +180 -0
  663. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Provider.java +21 -0
  664. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/RootNameLookup.java +54 -0
  665. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/StdDateFormat.java +348 -0
  666. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/package-info.java +4 -0
  667. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ArrayNode.java +758 -0
  668. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BaseJsonNode.java +122 -0
  669. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BigIntegerNode.java +104 -0
  670. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BinaryNode.java +136 -0
  671. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BooleanNode.java +84 -0
  672. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ContainerNode.java +185 -0
  673. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DecimalNode.java +96 -0
  674. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DoubleNode.java +106 -0
  675. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/IntNode.java +122 -0
  676. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/JsonNodeFactory.java +222 -0
  677. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/LongNode.java +99 -0
  678. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/MissingNode.java +97 -0
  679. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NodeCursor.java +222 -0
  680. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NullNode.java +58 -0
  681. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NumericNode.java +72 -0
  682. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ObjectNode.java +696 -0
  683. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/POJONode.java +145 -0
  684. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TextNode.java +299 -0
  685. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TreeTraversingParser.java +383 -0
  686. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ValueNode.java +58 -0
  687. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/package-info.java +8 -0
  688. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/package-info.java +30 -0
  689. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSchema.java +82 -0
  690. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSerializableSchema.java +46 -0
  691. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/SchemaAware.java +25 -0
  692. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/package-info.java +5 -0
  693. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/BytesToNameCanonicalizer.java +969 -0
  694. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/CharsToNameCanonicalizer.java +578 -0
  695. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name.java +50 -0
  696. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name1.java +44 -0
  697. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name2.java +40 -0
  698. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name3.java +39 -0
  699. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/NameN.java +68 -0
  700. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/package-info.java +5 -0
  701. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/JavaType.java +503 -0
  702. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/TypeReference.java +60 -0
  703. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/package-info.java +8 -0
  704. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/BufferRecycler.java +109 -0
  705. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/ByteArrayBuilder.java +294 -0
  706. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/CharTypes.java +237 -0
  707. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/DefaultPrettyPrinter.java +282 -0
  708. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/InternCache.java +49 -0
  709. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonGeneratorDelegate.java +273 -0
  710. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserDelegate.java +251 -0
  711. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserSequence.java +150 -0
  712. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/MinimalPrettyPrinter.java +152 -0
  713. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TextBuffer.java +707 -0
  714. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java +1233 -0
  715. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java +79 -0
  716. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java +4 -0
  717. metadata +868 -0
@@ -0,0 +1,894 @@
1
+ package sh.calaba.org.codehaus.jackson.map.deser;
2
+
3
+ import java.util.*;
4
+ import java.util.concurrent.*;
5
+ import java.util.concurrent.atomic.AtomicReference;
6
+
7
+ import sh.calaba.org.codehaus.jackson.JsonNode;
8
+ import sh.calaba.org.codehaus.jackson.map.*;
9
+ import sh.calaba.org.codehaus.jackson.map.deser.std.AtomicReferenceDeserializer;
10
+ import sh.calaba.org.codehaus.jackson.map.deser.std.CollectionDeserializer;
11
+ import sh.calaba.org.codehaus.jackson.map.deser.std.EnumDeserializer;
12
+ import sh.calaba.org.codehaus.jackson.map.deser.std.EnumMapDeserializer;
13
+ import sh.calaba.org.codehaus.jackson.map.deser.std.EnumSetDeserializer;
14
+ import sh.calaba.org.codehaus.jackson.map.deser.std.JsonNodeDeserializer;
15
+ import sh.calaba.org.codehaus.jackson.map.deser.std.MapDeserializer;
16
+ import sh.calaba.org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer;
17
+ import sh.calaba.org.codehaus.jackson.map.deser.std.PrimitiveArrayDeserializers;
18
+ import sh.calaba.org.codehaus.jackson.map.deser.std.StdKeyDeserializers;
19
+ import sh.calaba.org.codehaus.jackson.map.deser.std.StringCollectionDeserializer;
20
+ import sh.calaba.org.codehaus.jackson.map.ext.OptionalHandlerFactory;
21
+ import sh.calaba.org.codehaus.jackson.map.introspect.*;
22
+ import sh.calaba.org.codehaus.jackson.map.jsontype.NamedType;
23
+ import sh.calaba.org.codehaus.jackson.map.jsontype.TypeResolverBuilder;
24
+ import sh.calaba.org.codehaus.jackson.map.type.*;
25
+ import sh.calaba.org.codehaus.jackson.map.util.EnumResolver;
26
+ import sh.calaba.org.codehaus.jackson.type.JavaType;
27
+
28
+ /**
29
+ * Abstract factory base class that can provide deserializers for standard
30
+ * JDK classes, including collection classes and simple heuristics for
31
+ * "upcasting" commmon collection interface types
32
+ * (such as {@link java.util.Collection}).
33
+ *<p>
34
+ * Since all simple deserializers are eagerly instantiated, and there is
35
+ * no additional introspection or customizability of these types,
36
+ * this factory is stateless.
37
+ */
38
+ public abstract class BasicDeserializerFactory
39
+ extends DeserializerFactory
40
+ {
41
+ /**
42
+ * We will pre-create serializers for common non-structured
43
+ * (that is things other than Collection, Map or array)
44
+ * types. These need not go through factory.
45
+ */
46
+ final static HashMap<ClassKey, JsonDeserializer<Object>> _simpleDeserializers = StdDeserializers.constructAll();
47
+
48
+ /**
49
+ * Set of available key deserializers is currently limited
50
+ * to standard types; and all known instances are storing
51
+ * in this map.
52
+ */
53
+ final static HashMap<JavaType, KeyDeserializer> _keyDeserializers = StdKeyDeserializers.constructAll();
54
+
55
+ /* We do some defaulting for abstract Map classes and
56
+ * interfaces, to avoid having to use exact types or annotations in
57
+ * cases where the most common concrete Maps will do.
58
+ */
59
+ @SuppressWarnings("rawtypes")
60
+ final static HashMap<String, Class<? extends Map>> _mapFallbacks =
61
+ new HashMap<String, Class<? extends Map>>();
62
+ static {
63
+ _mapFallbacks.put(Map.class.getName(), LinkedHashMap.class);
64
+ _mapFallbacks.put(ConcurrentMap.class.getName(), ConcurrentHashMap.class);
65
+ _mapFallbacks.put(SortedMap.class.getName(), TreeMap.class);
66
+
67
+ /* 11-Jan-2009, tatu: Let's see if we can still add support for
68
+ * JDK 1.6 interfaces, even if we run on 1.5. Just need to be
69
+ * more careful with typos, since compiler won't notice any
70
+ * problems...
71
+ */
72
+ _mapFallbacks.put("java.util.NavigableMap", TreeMap.class);
73
+ try {
74
+ Class<?> key = Class.forName("java.util.ConcurrentNavigableMap");
75
+ Class<?> value = Class.forName("java.util.ConcurrentSkipListMap");
76
+ @SuppressWarnings("unchecked")
77
+ Class<? extends Map<?,?>> mapValue = (Class<? extends Map<?,?>>) value;
78
+ _mapFallbacks.put(key.getName(), mapValue);
79
+ } catch (ClassNotFoundException cnfe) { // occurs on 1.5
80
+ }
81
+ }
82
+
83
+ /* We do some defaulting for abstract Collection classes and
84
+ * interfaces, to avoid having to use exact types or annotations in
85
+ * cases where the most common concrete Collection will do.
86
+ */
87
+ @SuppressWarnings("rawtypes")
88
+ final static HashMap<String, Class<? extends Collection>> _collectionFallbacks =
89
+ new HashMap<String, Class<? extends Collection>>();
90
+ static {
91
+ _collectionFallbacks.put(Collection.class.getName(), ArrayList.class);
92
+ _collectionFallbacks.put(List.class.getName(), ArrayList.class);
93
+ _collectionFallbacks.put(Set.class.getName(), HashSet.class);
94
+ _collectionFallbacks.put(SortedSet.class.getName(), TreeSet.class);
95
+ _collectionFallbacks.put(Queue.class.getName(), LinkedList.class);
96
+
97
+ /* 11-Jan-2009, tatu: Let's see if we can still add support for
98
+ * JDK 1.6 interfaces, even if we run on 1.5. Just need to be
99
+ * more careful with typos, since compiler won't notice any
100
+ * problems...
101
+ */
102
+ _collectionFallbacks.put("java.util.Deque", LinkedList.class);
103
+ _collectionFallbacks.put("java.util.NavigableSet", TreeSet.class);
104
+ }
105
+
106
+ /**
107
+ * And finally, we have special array deserializers for primitive
108
+ * array types
109
+ */
110
+ protected final static HashMap<JavaType,JsonDeserializer<Object>> _arrayDeserializers
111
+ = PrimitiveArrayDeserializers.getAll();
112
+
113
+ /**
114
+ * To support external/optional deserializers, we'll use this helper class
115
+ * (as per [JACKSON-386])
116
+ */
117
+ protected OptionalHandlerFactory optionalHandlers = OptionalHandlerFactory.instance;
118
+
119
+ /*
120
+ /**********************************************************
121
+ /* Life cycle
122
+ /**********************************************************
123
+ */
124
+
125
+ protected BasicDeserializerFactory() { }
126
+
127
+ // can't be implemented quite here
128
+ @Override
129
+ public abstract DeserializerFactory withConfig(DeserializerFactory.Config config);
130
+
131
+ /*
132
+ /**********************************************************
133
+ /* Methods for sub-classes to override to provide
134
+ /* custom deserializers (since 1.7)
135
+ /**********************************************************
136
+ */
137
+
138
+ protected abstract JsonDeserializer<?> _findCustomArrayDeserializer(ArrayType type, DeserializationConfig config,
139
+ DeserializerProvider p, BeanProperty property,
140
+ TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
141
+ throws JsonMappingException;
142
+
143
+ protected abstract JsonDeserializer<?> _findCustomCollectionDeserializer(
144
+ CollectionType type, DeserializationConfig config,
145
+ DeserializerProvider p, BasicBeanDescription beanDesc, BeanProperty property,
146
+ TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
147
+ throws JsonMappingException;
148
+
149
+ protected abstract JsonDeserializer<?> _findCustomCollectionLikeDeserializer(
150
+ CollectionLikeType type, DeserializationConfig config,
151
+ DeserializerProvider p, BasicBeanDescription beanDesc, BeanProperty property,
152
+ TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
153
+ throws JsonMappingException;
154
+
155
+ protected abstract JsonDeserializer<?> _findCustomEnumDeserializer(Class<?> type,
156
+ DeserializationConfig config, BasicBeanDescription beanDesc, BeanProperty property)
157
+ throws JsonMappingException;
158
+
159
+ protected abstract JsonDeserializer<?> _findCustomMapDeserializer(MapType type,
160
+ DeserializationConfig config,
161
+ DeserializerProvider p, BasicBeanDescription beanDesc, BeanProperty property,
162
+ KeyDeserializer keyDeser,
163
+ TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
164
+ throws JsonMappingException;
165
+
166
+ protected abstract JsonDeserializer<?> _findCustomMapLikeDeserializer(MapLikeType type,
167
+ DeserializationConfig config,
168
+ DeserializerProvider p, BasicBeanDescription beanDesc, BeanProperty property,
169
+ KeyDeserializer keyDeser,
170
+ TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
171
+ throws JsonMappingException;
172
+
173
+ protected abstract JsonDeserializer<?> _findCustomTreeNodeDeserializer(Class<? extends JsonNode> type,
174
+ DeserializationConfig config, BeanProperty property)
175
+ throws JsonMappingException;
176
+
177
+ /*
178
+ /**********************************************************
179
+ /* JsonDeserializerFactory impl (partial)
180
+ /**********************************************************
181
+ */
182
+
183
+ @Override
184
+ public abstract ValueInstantiator findValueInstantiator(DeserializationConfig config,
185
+ BasicBeanDescription beanDesc)
186
+ throws JsonMappingException;
187
+
188
+ @Override
189
+ public abstract JavaType mapAbstractType(DeserializationConfig config, JavaType type)
190
+ throws JsonMappingException;
191
+
192
+ @Override
193
+ public JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config, DeserializerProvider p,
194
+ ArrayType type, BeanProperty property)
195
+ throws JsonMappingException
196
+ {
197
+ JavaType elemType = type.getContentType();
198
+
199
+ // Very first thing: is deserializer hard-coded for elements?
200
+ JsonDeserializer<Object> contentDeser = elemType.getValueHandler();
201
+ if (contentDeser == null) {
202
+ // Maybe special array type, such as "primitive" arrays (int[] etc)
203
+ JsonDeserializer<?> deser = _arrayDeserializers.get(elemType);
204
+ if (deser != null) {
205
+ /* 23-Nov-2010, tatu: Although not commonly needed, ability to override
206
+ * deserializers for all types (including primitive arrays) is useful
207
+ * so let's allow this
208
+ */
209
+ JsonDeserializer<?> custom = _findCustomArrayDeserializer(type, config, p, property, null, null);
210
+ if (custom != null) {
211
+ return custom;
212
+ }
213
+ return deser;
214
+ }
215
+ // If not, generic one:
216
+ if (elemType.isPrimitive()) { // sanity check
217
+ throw new IllegalArgumentException("Internal error: primitive type ("+type+") passed, no array deserializer found");
218
+ }
219
+ }
220
+ // Then optional type info (1.5): if type has been resolved, we may already know type deserializer:
221
+ TypeDeserializer elemTypeDeser = elemType.getTypeHandler();
222
+ // but if not, may still be possible to find:
223
+ if (elemTypeDeser == null) {
224
+ elemTypeDeser = findTypeDeserializer(config, elemType, property);
225
+ }
226
+ // 23-Nov-2010, tatu: Custom array deserializer?
227
+ JsonDeserializer<?> custom = _findCustomArrayDeserializer(type, config, p, property, elemTypeDeser, contentDeser);
228
+ if (custom != null) {
229
+ return custom;
230
+ }
231
+
232
+ if (contentDeser == null) {
233
+ // 'null' -> arrays have no referring fields
234
+ contentDeser = p.findValueDeserializer(config, elemType, property);
235
+ }
236
+ return new ObjectArrayDeserializer(type, contentDeser, elemTypeDeser);
237
+ }
238
+
239
+ @Override
240
+ public JsonDeserializer<?> createCollectionDeserializer(DeserializationConfig config, DeserializerProvider p,
241
+ CollectionType type, BeanProperty property)
242
+ throws JsonMappingException
243
+ {
244
+ // First: global defaulting:
245
+ type = (CollectionType) mapAbstractType(config, type);
246
+
247
+ Class<?> collectionClass = type.getRawClass();
248
+ BasicBeanDescription beanDesc = config.introspectForCreation(type);
249
+ // Explicit deserializer to use? (@JsonDeserialize.using)
250
+ JsonDeserializer<Object> deser = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
251
+ if (deser != null) {
252
+ return deser;
253
+ }
254
+ // If not, any type modifiers? (@JsonDeserialize.as)
255
+ type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), type, null);
256
+
257
+ JavaType contentType = type.getContentType();
258
+ // Very first thing: is deserializer hard-coded for elements?
259
+ JsonDeserializer<Object> contentDeser = contentType.getValueHandler();
260
+
261
+ // Then optional type info (1.5): if type has been resolved, we may already know type deserializer:
262
+ TypeDeserializer contentTypeDeser = contentType.getTypeHandler();
263
+ // but if not, may still be possible to find:
264
+ if (contentTypeDeser == null) {
265
+ contentTypeDeser = findTypeDeserializer(config, contentType, property);
266
+ }
267
+
268
+ // 23-Nov-2010, tatu: Custom deserializer?
269
+ JsonDeserializer<?> custom = _findCustomCollectionDeserializer(type, config, p, beanDesc, property,
270
+ contentTypeDeser, contentDeser);
271
+ if (custom != null) {
272
+ return custom;
273
+ }
274
+
275
+ if (contentDeser == null) { // not defined by annotation
276
+ // One special type: EnumSet:
277
+ if (EnumSet.class.isAssignableFrom(collectionClass)) {
278
+ return new EnumSetDeserializer(contentType.getRawClass(),
279
+ createEnumDeserializer(config, p, contentType, property));
280
+ }
281
+ // But otherwise we can just use a generic value deserializer:
282
+ // 'null' -> collections have no referring fields
283
+ contentDeser = p.findValueDeserializer(config, contentType, property);
284
+ }
285
+
286
+ /* One twist: if we are being asked to instantiate an interface or
287
+ * abstract Collection, we need to either find something that implements
288
+ * the thing, or give up.
289
+ *
290
+ * Note that we do NOT try to guess based on secondary interfaces
291
+ * here; that would probably not work correctly since casts would
292
+ * fail later on (as the primary type is not the interface we'd
293
+ * be implementing)
294
+ */
295
+ if (type.isInterface() || type.isAbstract()) {
296
+ @SuppressWarnings({ "rawtypes" })
297
+ Class<? extends Collection> fallback = _collectionFallbacks.get(collectionClass.getName());
298
+ if (fallback == null) {
299
+ throw new IllegalArgumentException("Can not find a deserializer for non-concrete Collection type "+type);
300
+ }
301
+ collectionClass = fallback;
302
+ type = (CollectionType) config.constructSpecializedType(type, collectionClass);
303
+ // But if so, also need to re-check creators...
304
+ beanDesc = config.introspectForCreation(type);
305
+ }
306
+ ValueInstantiator inst = findValueInstantiator(config, beanDesc);
307
+ // 13-Dec-2010, tatu: Can use more optimal deserializer if content type is String, so:
308
+ if (contentType.getRawClass() == String.class) {
309
+ // no value type deserializer because Strings are one of natural/native types:
310
+ return new StringCollectionDeserializer(type, contentDeser, inst);
311
+ }
312
+ return new CollectionDeserializer(type, contentDeser, contentTypeDeser, inst);
313
+ }
314
+
315
+ // Copied almost verbatim from "createCollectionDeserializer" -- should try to share more code
316
+ @Override
317
+ public JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationConfig config,
318
+ DeserializerProvider p, CollectionLikeType type, BeanProperty property)
319
+ throws JsonMappingException
320
+ {
321
+ // First: global defaulting:
322
+ type = (CollectionLikeType) mapAbstractType(config, type);
323
+
324
+ Class<?> collectionClass = type.getRawClass();
325
+ BasicBeanDescription beanDesc = config.introspectClassAnnotations(collectionClass);
326
+ // Explicit deserializer to use? (@JsonDeserialize.using)
327
+ JsonDeserializer<Object> deser = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
328
+ if (deser != null) {
329
+ return deser;
330
+ }
331
+ // If not, any type modifiers? (@JsonDeserialize.as)
332
+ type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), type, null);
333
+
334
+ JavaType contentType = type.getContentType();
335
+ // Very first thing: is deserializer hard-coded for elements?
336
+ JsonDeserializer<Object> contentDeser = contentType.getValueHandler();
337
+
338
+ // Then optional type info (1.5): if type has been resolved, we may already know type deserializer:
339
+ TypeDeserializer contentTypeDeser = contentType.getTypeHandler();
340
+ // but if not, may still be possible to find:
341
+ if (contentTypeDeser == null) {
342
+ contentTypeDeser = findTypeDeserializer(config, contentType, property);
343
+ }
344
+ return _findCustomCollectionLikeDeserializer(type, config, p, beanDesc, property,
345
+ contentTypeDeser, contentDeser);
346
+ }
347
+
348
+ @Override
349
+ public JsonDeserializer<?> createMapDeserializer(DeserializationConfig config, DeserializerProvider p,
350
+ MapType type, BeanProperty property)
351
+ throws JsonMappingException
352
+ {
353
+ // First: global defaulting:
354
+ type = (MapType) mapAbstractType(config, type);
355
+
356
+ BasicBeanDescription beanDesc = config.introspectForCreation(type);
357
+ // Explicit deserializer to use? (@JsonDeserialize.using)
358
+ JsonDeserializer<Object> deser = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
359
+ if (deser != null) {
360
+ return deser;
361
+ }
362
+ // If not, any type modifiers? (@JsonDeserialize.as)
363
+ type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), type, null);
364
+ JavaType keyType = type.getKeyType();
365
+ JavaType contentType = type.getContentType();
366
+
367
+ // First: is there annotation-specified deserializer for values?
368
+ @SuppressWarnings("unchecked")
369
+ JsonDeserializer<Object> contentDeser = (JsonDeserializer<Object>) contentType.getValueHandler();
370
+
371
+ // Ok: need a key deserializer (null indicates 'default' here)
372
+ KeyDeserializer keyDes = (KeyDeserializer) keyType.getValueHandler();
373
+ if (keyDes == null) {
374
+ keyDes = p.findKeyDeserializer(config, keyType, property);
375
+ }
376
+ // Then optional type info (1.5); either attached to type, or resolve separately:
377
+ TypeDeserializer contentTypeDeser = contentType.getTypeHandler();
378
+ // but if not, may still be possible to find:
379
+ if (contentTypeDeser == null) {
380
+ contentTypeDeser = findTypeDeserializer(config, contentType, property);
381
+ }
382
+
383
+ // 23-Nov-2010, tatu: Custom deserializer?
384
+ JsonDeserializer<?> custom = _findCustomMapDeserializer(type, config, p, beanDesc, property,
385
+ keyDes, contentTypeDeser, contentDeser);
386
+
387
+ if (custom != null) {
388
+ return custom;
389
+ }
390
+
391
+ if (contentDeser == null) { // nope...
392
+ // 'null' -> maps have no referring fields
393
+ contentDeser = p.findValueDeserializer(config, contentType, property);
394
+ }
395
+ /* Value handling is identical for all,
396
+ * but EnumMap requires special handling for keys
397
+ */
398
+ Class<?> mapClass = type.getRawClass();
399
+ if (EnumMap.class.isAssignableFrom(mapClass)) {
400
+ Class<?> kt = keyType.getRawClass();
401
+ if (kt == null || !kt.isEnum()) {
402
+ throw new IllegalArgumentException("Can not construct EnumMap; generic (key) type not available");
403
+ }
404
+ return new EnumMapDeserializer(keyType.getRawClass(),
405
+ createEnumDeserializer(config, p, keyType, property),
406
+ contentDeser);
407
+ }
408
+
409
+ // Otherwise, generic handler works ok.
410
+
411
+ /* But there is one more twist: if we are being asked to instantiate
412
+ * an interface or abstract Map, we need to either find something
413
+ * that implements the thing, or give up.
414
+ *
415
+ * Note that we do NOT try to guess based on secondary interfaces
416
+ * here; that would probably not work correctly since casts would
417
+ * fail later on (as the primary type is not the interface we'd
418
+ * be implementing)
419
+ */
420
+ if (type.isInterface() || type.isAbstract()) {
421
+ @SuppressWarnings("rawtypes")
422
+ Class<? extends Map> fallback = _mapFallbacks.get(mapClass.getName());
423
+ if (fallback == null) {
424
+ throw new IllegalArgumentException("Can not find a deserializer for non-concrete Map type "+type);
425
+ }
426
+ mapClass = fallback;
427
+ type = (MapType) config.constructSpecializedType(type, mapClass);
428
+ // But if so, also need to re-check creators...
429
+ beanDesc = config.introspectForCreation(type);
430
+ }
431
+ ValueInstantiator inst = findValueInstantiator(config, beanDesc);
432
+ MapDeserializer md = new MapDeserializer(type, inst, keyDes, contentDeser, contentTypeDeser);
433
+ md.setIgnorableProperties(config.getAnnotationIntrospector().findPropertiesToIgnore(beanDesc.getClassInfo()));
434
+ return md;
435
+ }
436
+
437
+ // Copied almost verbatim from "createMapDeserializer" -- should try to share more code
438
+ @Override
439
+ public JsonDeserializer<?> createMapLikeDeserializer(DeserializationConfig config,
440
+ DeserializerProvider p, MapLikeType type, BeanProperty property)
441
+ throws JsonMappingException
442
+ {
443
+ // First: global defaulting:
444
+ type = (MapLikeType) mapAbstractType(config, type);
445
+ BasicBeanDescription beanDesc = config.introspectForCreation(type);
446
+ // Explicit deserializer to use? (@JsonDeserialize.using)
447
+ JsonDeserializer<Object> deser = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
448
+ if (deser != null) {
449
+ return deser;
450
+ }
451
+ // If not, any type modifiers? (@JsonDeserialize.as)
452
+ type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), type, null);
453
+ JavaType keyType = type.getKeyType();
454
+ JavaType contentType = type.getContentType();
455
+
456
+ // First: is there annotation-specified deserializer for values?
457
+ @SuppressWarnings("unchecked")
458
+ JsonDeserializer<Object> contentDeser = (JsonDeserializer<Object>) contentType.getValueHandler();
459
+
460
+ // Ok: need a key deserializer (null indicates 'default' here)
461
+ KeyDeserializer keyDes = (KeyDeserializer) keyType.getValueHandler();
462
+ if (keyDes == null) {
463
+ keyDes = p.findKeyDeserializer(config, keyType, property);
464
+ }
465
+ // Then optional type info (1.5); either attached to type, or resolve separately:
466
+ TypeDeserializer contentTypeDeser = contentType.getTypeHandler();
467
+ // but if not, may still be possible to find:
468
+ if (contentTypeDeser == null) {
469
+ contentTypeDeser = findTypeDeserializer(config, contentType, property);
470
+ }
471
+ return _findCustomMapLikeDeserializer(type, config, p, beanDesc, property,
472
+ keyDes, contentTypeDeser, contentDeser);
473
+ }
474
+
475
+ /**
476
+ * Factory method for constructing serializers of {@link Enum} types.
477
+ */
478
+ @Override
479
+ public JsonDeserializer<?> createEnumDeserializer(DeserializationConfig config, DeserializerProvider p,
480
+ JavaType type, BeanProperty property)
481
+ throws JsonMappingException
482
+ {
483
+ /* 18-Feb-2009, tatu: Must first check if we have a class annotation
484
+ * that should override default deserializer
485
+ */
486
+ BasicBeanDescription beanDesc = config.introspectForCreation(type);
487
+ JsonDeserializer<?> des = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
488
+ if (des != null) {
489
+ return des;
490
+ }
491
+ Class<?> enumClass = type.getRawClass();
492
+ // 23-Nov-2010, tatu: Custom deserializer?
493
+ JsonDeserializer<?> custom = _findCustomEnumDeserializer(enumClass, config, beanDesc, property);
494
+ if (custom != null) {
495
+ return custom;
496
+ }
497
+
498
+ // [JACKSON-193] May have @JsonCreator for static factory method:
499
+ for (AnnotatedMethod factory : beanDesc.getFactoryMethods()) {
500
+ if (config.getAnnotationIntrospector().hasCreatorAnnotation(factory)) {
501
+ int argCount = factory.getParameterCount();
502
+ if (argCount == 1) {
503
+ Class<?> returnType = factory.getRawType();
504
+ // usually should be class, but may be just plain Enum<?> (for Enum.valueOf()?)
505
+ if (returnType.isAssignableFrom(enumClass)) {
506
+ return EnumDeserializer.deserializerForCreator(config, enumClass, factory);
507
+ }
508
+ }
509
+ throw new IllegalArgumentException("Unsuitable method ("+factory+") decorated with @JsonCreator (for Enum type "
510
+ +enumClass.getName()+")");
511
+ }
512
+ }
513
+ return new EnumDeserializer(constructEnumResolver(enumClass, config));
514
+ }
515
+
516
+ @Override
517
+ public JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config, DeserializerProvider p,
518
+ JavaType nodeType, BeanProperty property)
519
+ throws JsonMappingException
520
+ {
521
+ @SuppressWarnings("unchecked")
522
+ Class<? extends JsonNode> nodeClass = (Class<? extends JsonNode>) nodeType.getRawClass();
523
+ // 23-Nov-2010, tatu: Custom deserializer?
524
+ JsonDeserializer<?> custom = _findCustomTreeNodeDeserializer(nodeClass, config, property);
525
+ if (custom != null) {
526
+ return custom;
527
+ }
528
+ return JsonNodeDeserializer.getDeserializer(nodeClass);
529
+ }
530
+
531
+ /**
532
+ * Method called by {@link BeanDeserializerFactory} to see if there might be a standard
533
+ * deserializer registered for given type.
534
+ *
535
+ * @since 1.8
536
+ */
537
+ @SuppressWarnings("unchecked")
538
+ protected JsonDeserializer<Object> findStdBeanDeserializer(DeserializationConfig config,
539
+ DeserializerProvider p, JavaType type, BeanProperty property)
540
+ throws JsonMappingException
541
+ {
542
+ Class<?> cls = type.getRawClass();
543
+ // note: we do NOT check for custom deserializers here; that's for sub-class to do
544
+ JsonDeserializer<Object> deser = _simpleDeserializers.get(new ClassKey(cls));
545
+ if (deser != null) {
546
+ return deser;
547
+ }
548
+
549
+ // [JACKSON-283]: AtomicReference is a rather special type...
550
+ if (AtomicReference.class.isAssignableFrom(cls)) {
551
+ // Must find parameterization
552
+ TypeFactory tf = config.getTypeFactory();
553
+ JavaType[] params = tf.findTypeParameters(type, AtomicReference.class);
554
+ JavaType referencedType;
555
+ if (params == null || params.length < 1) { // untyped (raw)
556
+ referencedType = TypeFactory.unknownType();
557
+ } else {
558
+ referencedType = params[0];
559
+ }
560
+
561
+ JsonDeserializer<?> d2 = new AtomicReferenceDeserializer(referencedType, property);
562
+ return (JsonDeserializer<Object>)d2;
563
+ }
564
+ // [JACKSON-386]: External/optional type handlers are handled somewhat differently
565
+ JsonDeserializer<?> d = optionalHandlers.findDeserializer(type, config, p);
566
+ if (d != null) {
567
+ return (JsonDeserializer<Object>)d;
568
+ }
569
+ return null;
570
+ }
571
+
572
+ @Override
573
+ public TypeDeserializer findTypeDeserializer(DeserializationConfig config, JavaType baseType,
574
+ BeanProperty property)
575
+ throws JsonMappingException
576
+ {
577
+ Class<?> cls = baseType.getRawClass();
578
+ BasicBeanDescription bean = config.introspectClassAnnotations(cls);
579
+ AnnotatedClass ac = bean.getClassInfo();
580
+ AnnotationIntrospector ai = config.getAnnotationIntrospector();
581
+ TypeResolverBuilder<?> b = ai.findTypeResolver(config, ac, baseType);
582
+
583
+ /* Ok: if there is no explicit type info handler, we may want to
584
+ * use a default. If so, config object knows what to use.
585
+ */
586
+ Collection<NamedType> subtypes = null;
587
+ if (b == null) {
588
+ b = config.getDefaultTyper(baseType);
589
+ if (b == null) {
590
+ return null;
591
+ }
592
+ } else {
593
+ subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(ac, config, ai);
594
+ }
595
+ // [JACKSON-505]: May need to figure out default implementation, if none found yet
596
+ // (note: check for abstract type is not 100% mandatory, more of an optimization)
597
+ if ((b.getDefaultImpl() == null) && baseType.isAbstract()) {
598
+ JavaType defaultType = mapAbstractType(config, baseType);
599
+ if (defaultType != null && defaultType.getRawClass() != baseType.getRawClass()) {
600
+ b = b.defaultImpl(defaultType.getRawClass());
601
+ }
602
+ }
603
+ return b.buildTypeDeserializer(config, baseType, subtypes, property);
604
+ }
605
+
606
+ /*
607
+ /**********************************************************
608
+ /* Extended API
609
+ /**********************************************************
610
+ */
611
+
612
+ /**
613
+ * Method called to create a type information deserializer for values of
614
+ * given non-container property, if one is needed.
615
+ * If not needed (no polymorphic handling configured for property), should return null.
616
+ *<p>
617
+ * Note that this method is only called for non-container bean properties,
618
+ * and not for values in container types or root values (or container properties)
619
+ *
620
+ * @param baseType Declared base type of the value to deserializer (actual
621
+ * deserializer type will be this type or its subtype)
622
+ *
623
+ * @return Type deserializer to use for given base type, if one is needed; null if not.
624
+ *
625
+ * @since 1.5
626
+ */
627
+ public TypeDeserializer findPropertyTypeDeserializer(DeserializationConfig config, JavaType baseType,
628
+ AnnotatedMember annotated, BeanProperty property)
629
+ throws JsonMappingException
630
+ {
631
+ AnnotationIntrospector ai = config.getAnnotationIntrospector();
632
+ TypeResolverBuilder<?> b = ai.findPropertyTypeResolver(config, annotated, baseType);
633
+ // Defaulting: if no annotations on member, check value class
634
+ if (b == null) {
635
+ return findTypeDeserializer(config, baseType, property);
636
+ }
637
+ // but if annotations found, may need to resolve subtypes:
638
+ Collection<NamedType> subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(annotated, config, ai);
639
+ return b.buildTypeDeserializer(config, baseType, subtypes, property);
640
+ }
641
+
642
+ /**
643
+ * Method called to find and create a type information deserializer for values of
644
+ * given container (list, array, map) property, if one is needed.
645
+ * If not needed (no polymorphic handling configured for property), should return null.
646
+ *<p>
647
+ * Note that this method is only called for container bean properties,
648
+ * and not for values in container types or root values (or non-container properties)
649
+ *
650
+ * @param containerType Type of property; must be a container type
651
+ * @param propertyEntity Field or method that contains container property
652
+ *
653
+ * @since 1.5
654
+ */
655
+ public TypeDeserializer findPropertyContentTypeDeserializer(DeserializationConfig config, JavaType containerType,
656
+ AnnotatedMember propertyEntity, BeanProperty property)
657
+ throws JsonMappingException
658
+ {
659
+ AnnotationIntrospector ai = config.getAnnotationIntrospector();
660
+ TypeResolverBuilder<?> b = ai.findPropertyContentTypeResolver(config, propertyEntity, containerType);
661
+ JavaType contentType = containerType.getContentType();
662
+ // Defaulting: if no annotations on member, check class
663
+ if (b == null) {
664
+ return findTypeDeserializer(config, contentType, property);
665
+ }
666
+ // but if annotations found, may need to resolve subtypes:
667
+ Collection<NamedType> subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(propertyEntity, config, ai);
668
+ return b.buildTypeDeserializer(config, contentType, subtypes, property);
669
+ }
670
+
671
+ /*
672
+ /**********************************************************
673
+ /* Helper methods, value/content/key type introspection
674
+ /**********************************************************
675
+ */
676
+
677
+ /**
678
+ * Helper method called to check if a class or method
679
+ * has annotation that tells which class to use for deserialization.
680
+ * Returns null if no such annotation found.
681
+ */
682
+ protected JsonDeserializer<Object> findDeserializerFromAnnotation(DeserializationConfig config,
683
+ Annotated ann, BeanProperty property)
684
+ throws JsonMappingException
685
+ {
686
+ Object deserDef = config.getAnnotationIntrospector().findDeserializer(ann);
687
+ if (deserDef != null) {
688
+ return _constructDeserializer(config, ann, property, deserDef);
689
+ }
690
+ return null;
691
+ }
692
+
693
+ @SuppressWarnings("unchecked")
694
+ JsonDeserializer<Object> _constructDeserializer(DeserializationConfig config, Annotated ann, BeanProperty property,
695
+ Object deserDef)
696
+ throws JsonMappingException
697
+ {
698
+ if (deserDef instanceof JsonDeserializer) {
699
+ JsonDeserializer<Object> deser = (JsonDeserializer<Object>) deserDef;
700
+ // related to [JACKSON-569], need contextualization:
701
+ if (deser instanceof ContextualDeserializer<?>) {
702
+ deser = (JsonDeserializer<Object>)((ContextualDeserializer<?>) deser).createContextual(config, property);
703
+ }
704
+ return deser;
705
+ }
706
+ /* Alas, there's no way to force return type of "either class
707
+ * X or Y" -- need to throw an exception after the fact
708
+ */
709
+ if (!(deserDef instanceof Class)) {
710
+ throw new IllegalStateException("AnnotationIntrospector returned deserializer definition of type "+deserDef.getClass().getName()+"; expected type JsonDeserializer or Class<JsonDeserializer> instead");
711
+ }
712
+ Class<? extends JsonDeserializer<?>> deserClass = (Class<? extends JsonDeserializer<?>>) deserDef;
713
+ if (!JsonDeserializer.class.isAssignableFrom(deserClass)) {
714
+ throw new IllegalStateException("AnnotationIntrospector returned Class "+deserClass.getName()+"; expected Class<JsonDeserializer>");
715
+ }
716
+ JsonDeserializer<Object> deser = config.deserializerInstance(ann, deserClass);
717
+ // related to [JACKSON-569], need contextualization:
718
+ if (deser instanceof ContextualDeserializer<?>) {
719
+ deser = (JsonDeserializer<Object>)((ContextualDeserializer<?>) deser).createContextual(config, property);
720
+ }
721
+ return deser;
722
+ }
723
+
724
+ /**
725
+ * Method called to see if given method has annotations that indicate
726
+ * a more specific type than what the argument specifies.
727
+ * If annotations are present, they must specify compatible Class;
728
+ * instance of which can be assigned using the method. This means
729
+ * that the Class has to be raw class of type, or its sub-class
730
+ * (or, implementing class if original Class instance is an interface).
731
+ *
732
+ * @param a Method or field that the type is associated with
733
+ * @param type Type derived from the setter argument
734
+ * @param propName Name of property that refers to type, if any; null
735
+ * if no property information available (when modify type declaration
736
+ * of a class, for example)
737
+ *
738
+ * @return Original type if no annotations are present; or a more
739
+ * specific type derived from it if type annotation(s) was found
740
+ *
741
+ * @throws JsonMappingException if invalid annotation is found
742
+ */
743
+ @SuppressWarnings({ "unchecked", "deprecation" })
744
+ protected <T extends JavaType> T modifyTypeByAnnotation(DeserializationConfig config,
745
+ Annotated a, T type, String propName)
746
+ throws JsonMappingException
747
+ {
748
+ // first: let's check class for the instance itself:
749
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
750
+ Class<?> subclass = intr.findDeserializationType(a, type, propName);
751
+ if (subclass != null) {
752
+ try {
753
+ type = (T) type.narrowBy(subclass);
754
+ } catch (IllegalArgumentException iae) {
755
+ throw new JsonMappingException("Failed to narrow type "+type+" with concrete-type annotation (value "+subclass.getName()+"), method '"+a.getName()+"': "+iae.getMessage(), null, iae);
756
+ }
757
+ }
758
+
759
+ // then key class
760
+ if (type.isContainerType()) {
761
+ Class<?> keyClass = intr.findDeserializationKeyType(a, type.getKeyType(), propName);
762
+ if (keyClass != null) {
763
+ // illegal to use on non-Maps
764
+ if (!(type instanceof MapLikeType)) {
765
+ throw new JsonMappingException("Illegal key-type annotation: type "+type+" is not a Map(-like) type");
766
+ }
767
+ try {
768
+ type = (T) ((MapLikeType) type).narrowKey(keyClass);
769
+ } catch (IllegalArgumentException iae) {
770
+ throw new JsonMappingException("Failed to narrow key type "+type+" with key-type annotation ("+keyClass.getName()+"): "+iae.getMessage(), null, iae);
771
+ }
772
+ }
773
+ JavaType keyType = type.getKeyType();
774
+ /* 21-Mar-2011, tatu: ... and associated deserializer too (unless already assigned)
775
+ * (not 100% why or how, but this does seem to get called more than once, which
776
+ * is not good: for now, let's just avoid errors)
777
+ */
778
+ if (keyType != null && keyType.getValueHandler() == null) {
779
+ Class<? extends KeyDeserializer> kdClass = intr.findKeyDeserializer(a);
780
+ if (kdClass != null && kdClass != KeyDeserializer.None.class) {
781
+ KeyDeserializer kd = config.keyDeserializerInstance(a, kdClass);
782
+ // !!! TODO: For 2.0, change to use this instead:
783
+ /*
784
+ type = (T) ((MapLikeType) type).withKeyValueHandler(kd);
785
+ keyType = type.getKeyType(); // just in case it's used below
786
+ */
787
+ keyType.setValueHandler(kd);
788
+ }
789
+ }
790
+
791
+ // and finally content class; only applicable to structured types
792
+ Class<?> cc = intr.findDeserializationContentType(a, type.getContentType(), propName);
793
+ if (cc != null) {
794
+ try {
795
+ type = (T) type.narrowContentsBy(cc);
796
+ } catch (IllegalArgumentException iae) {
797
+ throw new JsonMappingException("Failed to narrow content type "+type+" with content-type annotation ("+cc.getName()+"): "+iae.getMessage(), null, iae);
798
+ }
799
+ }
800
+ // ... as well as deserializer for contents:
801
+ JavaType contentType = type.getContentType();
802
+ if (contentType.getValueHandler() == null) { // as with above, avoid resetting (which would trigger exception)
803
+ Class<? extends JsonDeserializer<?>> cdClass = intr.findContentDeserializer(a);
804
+ if (cdClass != null && cdClass != JsonDeserializer.None.class) {
805
+ JsonDeserializer<Object> cd = config.deserializerInstance(a, cdClass);
806
+ // !!! TODO: For 2.0, change to use this instead:
807
+ /*
808
+ type = (T) type.withContentValueHandler(cd);
809
+ */
810
+ type.getContentType().setValueHandler(cd);
811
+ }
812
+ }
813
+ }
814
+ return type;
815
+ }
816
+
817
+ /**
818
+ * Helper method used to resolve method return types and field
819
+ * types. The main trick here is that the containing bean may
820
+ * have type variable binding information (when deserializing
821
+ * using generic type passed as type reference), which is
822
+ * needed in some cases.
823
+ *<p>
824
+ * Starting with version 1.3, this method will also resolve instances
825
+ * of key and content deserializers if defined by annotations.
826
+ */
827
+ @SuppressWarnings("deprecation")
828
+ protected JavaType resolveType(DeserializationConfig config,
829
+ BasicBeanDescription beanDesc, JavaType type, AnnotatedMember member,
830
+ BeanProperty property)
831
+ throws JsonMappingException
832
+ {
833
+ // [JACKSON-154]: Also need to handle keyUsing, contentUsing
834
+ if (type.isContainerType()) {
835
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
836
+ JavaType keyType = type.getKeyType();
837
+ if (keyType != null) {
838
+ Class<? extends KeyDeserializer> kdClass = intr.findKeyDeserializer(member);
839
+ if (kdClass != null && kdClass != KeyDeserializer.None.class) {
840
+ KeyDeserializer kd = config.keyDeserializerInstance(member, kdClass);
841
+ // !!! TODO: For 2.0, change to use this instead:
842
+ /*
843
+ type = ((MapLikeType) type).withKeyValueHandler(kd);
844
+ keyType = type.getKeyType(); // just in case it's used below
845
+ */
846
+ keyType.setValueHandler(kd);
847
+ }
848
+ }
849
+ // and all container types have content types...
850
+ Class<? extends JsonDeserializer<?>> cdClass = intr.findContentDeserializer(member);
851
+ if (cdClass != null && cdClass != JsonDeserializer.None.class) {
852
+ JsonDeserializer<Object> cd = config.deserializerInstance(member, cdClass);
853
+ // !!! TODO: For 2.0, change to use this instead:
854
+ /*
855
+ type = type.withContentValueHandler(cd);
856
+ */
857
+ type.getContentType().setValueHandler(cd);
858
+ }
859
+ /* 04-Feb-2010, tatu: Need to figure out JAXB annotations that indicate type
860
+ * information to use for polymorphic members; and specifically types for
861
+ * collection values (contents).
862
+ * ... but only applies to members (fields, methods), not classes
863
+ */
864
+ if (member instanceof AnnotatedMember) {
865
+ TypeDeserializer contentTypeDeser = findPropertyContentTypeDeserializer(config, type,
866
+ (AnnotatedMember) member, property);
867
+ if (contentTypeDeser != null) {
868
+ type = type.withContentTypeHandler(contentTypeDeser);
869
+ }
870
+ }
871
+ }
872
+ TypeDeserializer valueTypeDeser;
873
+
874
+ if (member instanceof AnnotatedMember) { // JAXB allows per-property annotations
875
+ valueTypeDeser = findPropertyTypeDeserializer(config, type, (AnnotatedMember) member, property);
876
+ } else { // classes just have Jackson annotations
877
+ // probably only occurs if 'property' is null anyway
878
+ valueTypeDeser = findTypeDeserializer(config, type, null);
879
+ }
880
+ if (valueTypeDeser != null) {
881
+ type = type.withTypeHandler(valueTypeDeser);
882
+ }
883
+ return type;
884
+ }
885
+
886
+ protected EnumResolver<?> constructEnumResolver(Class<?> enumClass, DeserializationConfig config)
887
+ {
888
+ // [JACKSON-212]: may need to use Enum.toString()
889
+ if (config.isEnabled(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING)) {
890
+ return EnumResolver.constructUnsafeUsingToString(enumClass);
891
+ }
892
+ return EnumResolver.constructUnsafe(enumClass, config.getAnnotationIntrospector());
893
+ }
894
+ }