calabash-android 0.0.1

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 (532) hide show
  1. data/CHANGES.txt +1 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +8 -0
  4. data/Rakefile +2 -0
  5. data/bin/calabash-android +42 -0
  6. data/bin/calabash-android-build.rb +37 -0
  7. data/bin/calabash-android-generate.rb +26 -0
  8. data/bin/calabash-android-helpers.rb +71 -0
  9. data/bin/calabash-android-run.rb +18 -0
  10. data/bin/calabash-android-setup.rb +392 -0
  11. data/calabash-android.gemspec +23 -0
  12. data/doc/calabash-android-help.txt +21 -0
  13. data/epl-v10.html +261 -0
  14. data/features-skeleton/.irbrc +16 -0
  15. data/features-skeleton/irb_android.sh +2 -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 +26 -0
  19. data/features-skeleton/support/app_life_cycle_hooks.rb +28 -0
  20. data/features-skeleton/support/env.rb +1 -0
  21. data/features-skeleton/support/hooks.rb +18 -0
  22. data/lib/calabash-android.rb +2 -0
  23. data/lib/calabash-android/calabash_steps.rb +18 -0
  24. data/lib/calabash-android/canned_steps.md +239 -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/lib/screenShotTaker.jar +0 -0
  28. data/lib/calabash-android/management/adb.rb +11 -0
  29. data/lib/calabash-android/management/app_installation.rb +21 -0
  30. data/lib/calabash-android/operations.rb +283 -0
  31. data/lib/calabash-android/steps/additions_manual_steps.rb +11 -0
  32. data/lib/calabash-android/steps/app_steps.rb +10 -0
  33. data/lib/calabash-android/steps/assert_steps.rb +32 -0
  34. data/lib/calabash-android/steps/check_box_steps.rb +3 -0
  35. data/lib/calabash-android/steps/context_menu_steps.rb +12 -0
  36. data/lib/calabash-android/steps/date_picker_steps.rb +8 -0
  37. data/lib/calabash-android/steps/enter_text_steps.rb +21 -0
  38. data/lib/calabash-android/steps/location_steps.rb +19 -0
  39. data/lib/calabash-android/steps/navigation_steps.rb +27 -0
  40. data/lib/calabash-android/steps/press_button_steps.rb +35 -0
  41. data/lib/calabash-android/steps/progress_steps.rb +49 -0
  42. data/lib/calabash-android/steps/rotation_steps.rb +8 -0
  43. data/lib/calabash-android/steps/screenshot_steps.rb +11 -0
  44. data/lib/calabash-android/steps/spinner_steps.rb +3 -0
  45. data/lib/calabash-android/steps/time_picker_steps.rb +8 -0
  46. data/lib/calabash-android/version.rb +6 -0
  47. data/test-server/AndroidManifest.xml +13 -0
  48. data/test-server/build.xml +192 -0
  49. data/test-server/calabash-js/src/calabash.js +125 -0
  50. data/test-server/calabash-js/src/set_text.js +132 -0
  51. data/test-server/instrumentation-backend/.classpath +10 -0
  52. data/test-server/instrumentation-backend/.project +33 -0
  53. data/test-server/instrumentation-backend/.settings/org.eclipse.jdt.core.prefs +12 -0
  54. data/test-server/instrumentation-backend/AndroidManifest.xml +15 -0
  55. data/test-server/instrumentation-backend/assets/foo.bar +0 -0
  56. data/test-server/instrumentation-backend/gen/com/lesspainful/simpleui/test/R.java +23 -0
  57. data/test-server/instrumentation-backend/libs/robotium-solo-2.5.jar +0 -0
  58. data/test-server/instrumentation-backend/project.properties +11 -0
  59. data/test-server/instrumentation-backend/res/drawable-hdpi/ic_launcher.png +0 -0
  60. data/test-server/instrumentation-backend/res/drawable-ldpi/ic_launcher.png +0 -0
  61. data/test-server/instrumentation-backend/res/drawable-mdpi/ic_launcher.png +0 -0
  62. data/test-server/instrumentation-backend/res/layout/main.xml +12 -0
  63. data/test-server/instrumentation-backend/res/values/strings.xml +7 -0
  64. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +48 -0
  65. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java +196 -0
  66. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +64 -0
  67. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java +136 -0
  68. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Action.java +11 -0
  69. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Actions.java +113 -0
  70. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NullAction.java +23 -0
  71. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java +22 -0
  72. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java +27 -0
  73. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonNumber.java +22 -0
  74. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/WaitForButton.java +47 -0
  75. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/checkbox/ToggleCheckboxNumber.java +22 -0
  76. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressText.java +22 -0
  77. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuById.java +26 -0
  78. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByIndex.java +22 -0
  79. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java +26 -0
  80. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/ClickOnScreen.java +31 -0
  81. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +28 -0
  82. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/ListActions.java +26 -0
  83. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/LongPressListItems.java +22 -0
  84. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/PressListItems.java +22 -0
  85. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +79 -0
  86. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollDown.java +28 -0
  87. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollUp.java +28 -0
  88. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/DownKey.java +24 -0
  89. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/GoBack.java +22 -0
  90. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/PressMenu.java +26 -0
  91. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java +24 -0
  92. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java +43 -0
  93. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertText.java +31 -0
  94. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertTextOfSpecificTextViewByContentDescription.java +32 -0
  95. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextByIndex.java +22 -0
  96. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextFieldByContentDescription.java +33 -0
  97. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClickOnText.java +22 -0
  98. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByContentDescription.java +32 -0
  99. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByIndex.java +22 -0
  100. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByContentDescription.java +33 -0
  101. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByIndex.java +24 -0
  102. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByContentDescription.java +34 -0
  103. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByIndex.java +26 -0
  104. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java +63 -0
  105. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/LongPressOnViewById.java +34 -0
  106. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/Press.java +89 -0
  107. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/WaitForViewById.java +41 -0
  108. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/Wait.java +24 -0
  109. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForDialogClose.java +21 -0
  110. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForProgress.java +47 -0
  111. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForScreen.java +49 -0
  112. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForText.java +26 -0
  113. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +109 -0
  114. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +33 -0
  115. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +33 -0
  116. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +99 -0
  117. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +43 -0
  118. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +24 -0
  119. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +99 -0
  120. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +74 -0
  121. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +43 -0
  122. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +50 -0
  123. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +44 -0
  124. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java +413 -0
  125. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java +90 -0
  126. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java +29 -0
  127. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonEncoding.java +47 -0
  128. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonFactory.java +937 -0
  129. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerationException.java +28 -0
  130. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerator.java +1197 -0
  131. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonLocation.java +141 -0
  132. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonNode.java +879 -0
  133. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParseException.java +23 -0
  134. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParser.java +1434 -0
  135. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonProcessingException.java +80 -0
  136. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonStreamContext.java +122 -0
  137. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonToken.java +161 -0
  138. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/ObjectCodec.java +157 -0
  139. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/PrettyPrinter.java +166 -0
  140. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/SerializableString.java +54 -0
  141. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Version.java +90 -0
  142. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Versioned.java +20 -0
  143. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JacksonAnnotation.java +20 -0
  144. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnyGetter.java +25 -0
  145. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnySetter.java +24 -0
  146. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAutoDetect.java +148 -0
  147. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonBackReference.java +41 -0
  148. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonCreator.java +19 -0
  149. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonGetter.java +35 -0
  150. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnore.java +57 -0
  151. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreProperties.java +48 -0
  152. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreType.java +33 -0
  153. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonManagedReference.java +41 -0
  154. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonMethod.java +90 -0
  155. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonProperty.java +38 -0
  156. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonPropertyOrder.java +46 -0
  157. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonRawValue.java +33 -0
  158. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSetter.java +33 -0
  159. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSubTypes.java +44 -0
  160. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeInfo.java +236 -0
  161. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeName.java +28 -0
  162. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonUnwrapped.java +76 -0
  163. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonValue.java +46 -0
  164. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonWriteNullProperties.java +34 -0
  165. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/package-info.java +16 -0
  166. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatDetector.java +176 -0
  167. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatMatcher.java +117 -0
  168. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/InputAccessor.java +130 -0
  169. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/MatchStrength.java +64 -0
  170. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/package-info.java +8 -0
  171. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ByteSourceBootstrapper.java +518 -0
  172. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/DefaultPrettyPrinter.java +13 -0
  173. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Indenter.java +23 -0
  174. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonGeneratorBase.java +570 -0
  175. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonNumericParserBase.java +20 -0
  176. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserBase.java +1067 -0
  177. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserMinimalBase.java +539 -0
  178. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonReadContext.java +188 -0
  179. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonWriteContext.java +178 -0
  180. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParser.java +1815 -0
  181. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParserBase.java +228 -0
  182. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/StreamBasedParserBase.java +197 -0
  183. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8Generator.java +1757 -0
  184. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8StreamParser.java +2966 -0
  185. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/WriterBasedGenerator.java +1815 -0
  186. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/package-info.java +6 -0
  187. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/BaseReader.java +117 -0
  188. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/CharacterEscapes.java +73 -0
  189. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/IOContext.java +239 -0
  190. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/InputDecorator.java +67 -0
  191. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/JsonStringEncoder.java +408 -0
  192. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/MergedStream.java +145 -0
  193. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberInput.java +303 -0
  194. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberOutput.java +398 -0
  195. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/OutputDecorator.java +40 -0
  196. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SegmentedStringWriter.java +104 -0
  197. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SerializedString.java +114 -0
  198. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF32Reader.java +214 -0
  199. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF8Writer.java +387 -0
  200. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/package.html +4 -0
  201. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AbstractTypeResolver.java +63 -0
  202. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AnnotationIntrospector.java +1485 -0
  203. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanDescription.java +171 -0
  204. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanProperty.java +123 -0
  205. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanPropertyDefinition.java +66 -0
  206. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ClassIntrospector.java +117 -0
  207. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualDeserializer.java +38 -0
  208. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualKeyDeserializer.java +33 -0
  209. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualSerializer.java +38 -0
  210. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationConfig.java +926 -0
  211. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationContext.java +262 -0
  212. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationProblemHandler.java +56 -0
  213. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerFactory.java +356 -0
  214. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerProvider.java +185 -0
  215. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Deserializers.java +339 -0
  216. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/HandlerInstantiator.java +115 -0
  217. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/InjectableValues.java +85 -0
  218. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonDeserializer.java +166 -0
  219. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonMappingException.java +335 -0
  220. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializable.java +34 -0
  221. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializableWithType.java +22 -0
  222. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializer.java +138 -0
  223. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializer.java +31 -0
  224. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializers.java +21 -0
  225. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MapperConfig.java +1154 -0
  226. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingIterator.java +190 -0
  227. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingJsonFactory.java +81 -0
  228. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Module.java +255 -0
  229. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectMapper.java +2885 -0
  230. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectReader.java +958 -0
  231. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectWriter.java +554 -0
  232. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/PropertyNamingStrategy.java +258 -0
  233. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableDeserializer.java +23 -0
  234. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableSerializer.java +23 -0
  235. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/RuntimeJsonMappingException.java +21 -0
  236. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializationConfig.java +1041 -0
  237. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerFactory.java +198 -0
  238. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerProvider.java +552 -0
  239. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Serializers.java +137 -0
  240. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeDeserializer.java +118 -0
  241. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeSerializer.java +164 -0
  242. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonInject.java +30 -0
  243. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonStdImpl.java +25 -0
  244. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonCachable.java +32 -0
  245. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonDeserialize.java +109 -0
  246. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonFilter.java +31 -0
  247. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonRootName.java +29 -0
  248. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonSerialize.java +216 -0
  249. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeIdResolver.java +35 -0
  250. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeResolver.java +28 -0
  251. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonValueInstantiator.java +26 -0
  252. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonView.java +37 -0
  253. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/NoClass.java +19 -0
  254. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/package-info.java +5 -0
  255. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/AbstractDeserializer.java +102 -0
  256. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializer.java +28 -0
  257. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializers.java +11 -0
  258. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BasicDeserializerFactory.java +894 -0
  259. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializer.java +1537 -0
  260. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerBuilder.java +277 -0
  261. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerFactory.java +1474 -0
  262. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerModifier.java +58 -0
  263. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CollectionDeserializer.java +47 -0
  264. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ContainerDeserializer.java +14 -0
  265. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CustomDeserializerFactory.java +227 -0
  266. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/DateDeserializer.java +9 -0
  267. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumDeserializer.java +15 -0
  268. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumResolver.java +17 -0
  269. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/FromStringDeserializer.java +13 -0
  270. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/JsonNodeDeserializer.java +54 -0
  271. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/MapDeserializer.java +44 -0
  272. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableAnyProperty.java +177 -0
  273. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableBeanProperty.java +827 -0
  274. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializationContext.java +326 -0
  275. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializer.java +94 -0
  276. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializerProvider.java +494 -0
  277. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializers.java +119 -0
  278. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializer.java +12 -0
  279. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializers.java +11 -0
  280. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdScalarDeserializer.java +13 -0
  281. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ThrowableDeserializer.java +13 -0
  282. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/UntypedObjectDeserializer.java +9 -0
  283. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiator.java +280 -0
  284. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiators.java +52 -0
  285. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/BeanPropertyMap.java +257 -0
  286. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorCollector.java +141 -0
  287. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorProperty.java +152 -0
  288. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java +173 -0
  289. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java +117 -0
  290. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValue.java +117 -0
  291. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValueBuffer.java +102 -0
  292. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/UnwrappedPropertyHandler.java +41 -0
  293. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ValueInjector.java +45 -0
  294. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/package-info.java +9 -0
  295. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/package-info.java +5 -0
  296. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicBooleanDeserializer.java +22 -0
  297. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicReferenceDeserializer.java +47 -0
  298. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CalendarDeserializer.java +47 -0
  299. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ClassDeserializer.java +49 -0
  300. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CollectionDeserializer.java +265 -0
  301. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ContainerDeserializerBase.java +37 -0
  302. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/DateDeserializer.java +30 -0
  303. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumDeserializer.java +139 -0
  304. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumMapDeserializer.java +90 -0
  305. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumSetDeserializer.java +89 -0
  306. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java +265 -0
  307. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JavaTypeDeserializer.java +38 -0
  308. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JsonNodeDeserializer.java +314 -0
  309. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/MapDeserializer.java +412 -0
  310. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ObjectArrayDeserializer.java +201 -0
  311. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/PrimitiveArrayDeserializers.java +583 -0
  312. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdDeserializer.java +1136 -0
  313. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java +340 -0
  314. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializers.java +108 -0
  315. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdScalarDeserializer.java +34 -0
  316. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdValueInstantiator.java +392 -0
  317. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringCollectionDeserializer.java +227 -0
  318. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringDeserializer.java +55 -0
  319. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ThrowableDeserializer.java +164 -0
  320. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TimestampDeserializer.java +30 -0
  321. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TokenBufferDeserializer.java +36 -0
  322. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/UntypedObjectDeserializer.java +248 -0
  323. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/package-info.java +15 -0
  324. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/exc/UnrecognizedPropertyException.java +75 -0
  325. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLDeserializers.java +114 -0
  326. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLSerializers.java +72 -0
  327. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/DOMDeserializer.java +65 -0
  328. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/OptionalHandlerFactory.java +217 -0
  329. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/package-info.java +23 -0
  330. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/Annotated.java +85 -0
  331. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedClass.java +980 -0
  332. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedConstructor.java +143 -0
  333. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedField.java +119 -0
  334. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMember.java +56 -0
  335. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethod.java +188 -0
  336. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethodMap.java +85 -0
  337. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedParameter.java +191 -0
  338. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedWithParams.java +195 -0
  339. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotationMap.java +101 -0
  340. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicBeanDescription.java +615 -0
  341. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicClassIntrospector.java +364 -0
  342. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java +813 -0
  343. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MemberKey.java +83 -0
  344. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MethodFilter.java +12 -0
  345. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java +209 -0
  346. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertiesCollector.java +713 -0
  347. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertyBuilder.java +648 -0
  348. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/VisibilityChecker.java +424 -0
  349. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/package-info.java +12 -0
  350. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/NamedType.java +53 -0
  351. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/SubtypeResolver.java +39 -0
  352. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeIdResolver.java +74 -0
  353. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeResolverBuilder.java +151 -0
  354. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeDeserializer.java +126 -0
  355. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeSerializer.java +110 -0
  356. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeDeserializer.java +37 -0
  357. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeSerializer.java +129 -0
  358. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeDeserializer.java +191 -0
  359. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeSerializer.java +69 -0
  360. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeDeserializer.java +103 -0
  361. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeSerializer.java +121 -0
  362. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/ClassNameIdResolver.java +138 -0
  363. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/MinimalClassNameIdResolver.java +66 -0
  364. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdSubtypeResolver.java +151 -0
  365. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdTypeResolverBuilder.java +202 -0
  366. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeDeserializerBase.java +154 -0
  367. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeIdResolverBase.java +37 -0
  368. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeNameIdResolver.java +154 -0
  369. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeSerializerBase.java +31 -0
  370. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/package-info.java +9 -0
  371. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/package-info.java +10 -0
  372. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleAbstractTypeResolver.java +86 -0
  373. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleDeserializers.java +130 -0
  374. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleKeyDeserializers.java +59 -0
  375. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleModule.java +265 -0
  376. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleSerializers.java +206 -0
  377. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleValueInstantiators.java +45 -0
  378. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/package-info.java +16 -0
  379. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/package-info.java +34 -0
  380. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/AnyGetterWriter.java +48 -0
  381. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ArraySerializers.java +7 -0
  382. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BasicSerializerFactory.java +806 -0
  383. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyFilter.java +30 -0
  384. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyWriter.java +512 -0
  385. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializer.java +126 -0
  386. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerBuilder.java +140 -0
  387. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerFactory.java +780 -0
  388. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerModifier.java +95 -0
  389. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ContainerSerializers.java +8 -0
  390. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/CustomSerializerFactory.java +293 -0
  391. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/EnumSerializer.java +17 -0
  392. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilterProvider.java +23 -0
  393. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilteredBeanPropertyWriter.java +96 -0
  394. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/JdkSerializers.java +11 -0
  395. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/MapSerializer.java +58 -0
  396. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/PropertyBuilder.java +372 -0
  397. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ScalarSerializerBase.java +18 -0
  398. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/SerializerBase.java +23 -0
  399. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdKeySerializer.java +10 -0
  400. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializerProvider.java +852 -0
  401. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializers.java +372 -0
  402. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ToStringSerializer.java +14 -0
  403. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/FailingSerializer.java +43 -0
  404. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/JsonSerializerMap.java +93 -0
  405. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/PropertySerializerMap.java +231 -0
  406. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/ReadOnlyClassToSerializerMap.java +73 -0
  407. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SerializerCache.java +304 -0
  408. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleBeanPropertyFilter.java +109 -0
  409. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleFilterProvider.java +114 -0
  410. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnknownSerializer.java +54 -0
  411. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanPropertyWriter.java +99 -0
  412. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanSerializer.java +76 -0
  413. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/package-info.java +5 -0
  414. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/package-info.java +5 -0
  415. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/AsArraySerializerBase.java +185 -0
  416. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/BeanSerializerBase.java +340 -0
  417. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CalendarSerializer.java +43 -0
  418. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CollectionSerializer.java +113 -0
  419. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ContainerSerializerBase.java +51 -0
  420. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/DateSerializer.java +42 -0
  421. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumMapSerializer.java +218 -0
  422. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSerializer.java +84 -0
  423. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSetSerializer.java +47 -0
  424. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IndexedStringListSerializer.java +116 -0
  425. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/InetAddressSerializer.java +51 -0
  426. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IterableSerializer.java +63 -0
  427. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java +233 -0
  428. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/MapSerializer.java +422 -0
  429. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NonTypedScalarSerializerBase.java +34 -0
  430. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NullSerializer.java +38 -0
  431. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ObjectArraySerializer.java +281 -0
  432. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/RawSerializer.java +52 -0
  433. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ScalarSerializerBase.java +52 -0
  434. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableSerializer.java +99 -0
  435. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableWithTypeSerializer.java +90 -0
  436. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializerBase.java +184 -0
  437. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StaticListSerializerBase.java +46 -0
  438. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdArraySerializers.java +476 -0
  439. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdContainerSerializers.java +249 -0
  440. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdJdkSerializers.java +195 -0
  441. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializer.java +43 -0
  442. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializers.java +95 -0
  443. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringCollectionSerializer.java +119 -0
  444. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringSerializer.java +36 -0
  445. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TimeZoneSerializer.java +38 -0
  446. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ToStringSerializer.java +73 -0
  447. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TokenBufferSerializer.java +66 -0
  448. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ArrayType.java +260 -0
  449. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ClassKey.java +94 -0
  450. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionLikeType.java +204 -0
  451. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionType.java +94 -0
  452. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/HierarchicType.java +88 -0
  453. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapLikeType.java +265 -0
  454. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapType.java +146 -0
  455. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/SimpleType.java +250 -0
  456. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBase.java +148 -0
  457. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBindings.java +351 -0
  458. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeFactory.java +1165 -0
  459. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeModifier.java +38 -0
  460. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeParser.java +134 -0
  461. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/package-info.java +10 -0
  462. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Annotations.java +23 -0
  463. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ArrayBuilders.java +293 -0
  464. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/BeanUtil.java +260 -0
  465. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ClassUtil.java +645 -0
  466. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Comparators.java +48 -0
  467. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumResolver.java +108 -0
  468. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumValues.java +82 -0
  469. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601DateFormat.java +52 -0
  470. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601Utils.java +230 -0
  471. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONPObject.java +105 -0
  472. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONWrappedObject.java +117 -0
  473. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LRUMap.java +28 -0
  474. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LinkedNode.java +45 -0
  475. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Named.java +10 -0
  476. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ObjectBuffer.java +257 -0
  477. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/PrimitiveArrayBuilder.java +180 -0
  478. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Provider.java +21 -0
  479. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/RootNameLookup.java +54 -0
  480. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/StdDateFormat.java +348 -0
  481. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/package-info.java +4 -0
  482. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ArrayNode.java +758 -0
  483. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BaseJsonNode.java +122 -0
  484. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BigIntegerNode.java +104 -0
  485. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BinaryNode.java +136 -0
  486. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BooleanNode.java +84 -0
  487. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ContainerNode.java +185 -0
  488. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DecimalNode.java +96 -0
  489. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DoubleNode.java +106 -0
  490. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/IntNode.java +122 -0
  491. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/JsonNodeFactory.java +222 -0
  492. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/LongNode.java +99 -0
  493. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/MissingNode.java +97 -0
  494. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NodeCursor.java +222 -0
  495. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NullNode.java +58 -0
  496. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NumericNode.java +72 -0
  497. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ObjectNode.java +696 -0
  498. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/POJONode.java +145 -0
  499. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TextNode.java +299 -0
  500. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TreeTraversingParser.java +383 -0
  501. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ValueNode.java +58 -0
  502. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/package-info.java +8 -0
  503. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/package-info.java +30 -0
  504. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSchema.java +82 -0
  505. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSerializableSchema.java +46 -0
  506. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/SchemaAware.java +25 -0
  507. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/package-info.java +5 -0
  508. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/BytesToNameCanonicalizer.java +969 -0
  509. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/CharsToNameCanonicalizer.java +578 -0
  510. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name.java +50 -0
  511. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name1.java +44 -0
  512. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name2.java +40 -0
  513. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name3.java +39 -0
  514. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/NameN.java +68 -0
  515. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/package-info.java +5 -0
  516. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/JavaType.java +503 -0
  517. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/TypeReference.java +60 -0
  518. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/package-info.java +8 -0
  519. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/BufferRecycler.java +109 -0
  520. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/ByteArrayBuilder.java +294 -0
  521. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/CharTypes.java +237 -0
  522. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/DefaultPrettyPrinter.java +282 -0
  523. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/InternCache.java +49 -0
  524. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonGeneratorDelegate.java +273 -0
  525. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserDelegate.java +251 -0
  526. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserSequence.java +150 -0
  527. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/MinimalPrettyPrinter.java +152 -0
  528. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TextBuffer.java +707 -0
  529. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java +1233 -0
  530. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java +79 -0
  531. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java +4 -0
  532. metadata +619 -0
@@ -0,0 +1,35 @@
1
+ package sh.calaba.org.codehaus.jackson.map.annotate;
2
+
3
+ import java.lang.annotation.ElementType;
4
+ import java.lang.annotation.Retention;
5
+ import java.lang.annotation.RetentionPolicy;
6
+ import java.lang.annotation.Target;
7
+
8
+ import sh.calaba.org.codehaus.jackson.annotate.JacksonAnnotation;
9
+ import sh.calaba.org.codehaus.jackson.map.jsontype.TypeIdResolver;
10
+
11
+ /**
12
+ * Annotation that can be used to plug a custom type identifier handler
13
+ * ({@link TypeIdResolver})
14
+ * to be used by
15
+ * {@link sh.calaba.org.codehaus.jackson.map.TypeSerializer}s
16
+ * and {@link sh.calaba.org.codehaus.jackson.map.TypeDeserializer}s
17
+ * for converting between java types and type id included in JSON content.
18
+ * In simplest cases this can be a simple class with static mapping between
19
+ * type names and matching classes.
20
+ *
21
+ * @author tatu
22
+ * @since 1.5
23
+ */
24
+ @Target({ElementType.TYPE})
25
+ @Retention(RetentionPolicy.RUNTIME)
26
+ @JacksonAnnotation
27
+ public @interface JsonTypeIdResolver
28
+ {
29
+ /**
30
+ * Defines implementation class of {@link TypeIdResolver} to use for
31
+ * converting between external type id (type name) and actual
32
+ * type of object.
33
+ */
34
+ public Class<? extends TypeIdResolver> value();
35
+ }
@@ -0,0 +1,28 @@
1
+ package sh.calaba.org.codehaus.jackson.map.annotate;
2
+
3
+ import java.lang.annotation.*;
4
+
5
+ import sh.calaba.org.codehaus.jackson.annotate.JacksonAnnotation;
6
+ import sh.calaba.org.codehaus.jackson.map.jsontype.TypeResolverBuilder;
7
+
8
+ /**
9
+ * Annotation that can be used to explicitly define custom resolver
10
+ * used for handling serialization and deserialization of type information,
11
+ * needed for handling of polymorphic types (or sometimes just for linking
12
+ * abstract types to concrete types)
13
+ *
14
+ * @since 1.5
15
+ */
16
+ @Target({ElementType.TYPE})
17
+ @Retention(RetentionPolicy.RUNTIME)
18
+ @JacksonAnnotation
19
+ public @interface JsonTypeResolver
20
+ {
21
+ /**
22
+ * Defines implementation class of {@link TypeResolverBuilder} which is used to construct
23
+ * actual {@link sh.calaba.org.codehaus.jackson.map.TypeDeserializer} and {@link sh.calaba.org.codehaus.jackson.map.TypeDeserializer}
24
+ * instances that handle reading and writing addition type information needed to support polymorphic
25
+ * deserialization.
26
+ */
27
+ public Class<? extends TypeResolverBuilder<?>> value();
28
+ }
@@ -0,0 +1,26 @@
1
+ package sh.calaba.org.codehaus.jackson.map.annotate;
2
+
3
+ import java.lang.annotation.ElementType;
4
+ import java.lang.annotation.Retention;
5
+ import java.lang.annotation.RetentionPolicy;
6
+ import java.lang.annotation.Target;
7
+
8
+ import sh.calaba.org.codehaus.jackson.annotate.JacksonAnnotation;
9
+ import sh.calaba.org.codehaus.jackson.map.deser.ValueInstantiator;
10
+
11
+ /**
12
+ * Annotation that can be used to indicate a {@link ValueInstantiator} to use
13
+ * for creating instances of specified type.
14
+ *
15
+ * @since 1.9
16
+ */
17
+ @Target(ElementType.TYPE)
18
+ @Retention(RetentionPolicy.RUNTIME)
19
+ @JacksonAnnotation
20
+ public @interface JsonValueInstantiator
21
+ {
22
+ /**
23
+ * @return {@link ValueInstantiator} to use for annotated type
24
+ */
25
+ public Class<? extends ValueInstantiator> value();
26
+ }
@@ -0,0 +1,37 @@
1
+ package sh.calaba.org.codehaus.jackson.map.annotate;
2
+
3
+ import java.lang.annotation.ElementType;
4
+ import java.lang.annotation.Retention;
5
+ import java.lang.annotation.RetentionPolicy;
6
+ import java.lang.annotation.Target;
7
+
8
+ import sh.calaba.org.codehaus.jackson.annotate.JacksonAnnotation;
9
+
10
+ /**
11
+ * Annotation used for indicating view(s) that the property
12
+ * that is defined by method or field annotated is part of.
13
+ *<p>
14
+ * An example annotation would be:
15
+ *<pre>
16
+ * \@JsonView(BasicView.class)
17
+ *</pre>
18
+ * which would specify that property annotated would be included
19
+ * when processing (serializing, deserializing) View identified
20
+ * by <code>BasicView.class</code> (or its sub-class).
21
+ * If multiple View class identifiers are included, property will
22
+ * be part of all of them.
23
+ *
24
+ * @since 1.4
25
+ */
26
+
27
+ @Target({ElementType.METHOD, ElementType.FIELD})
28
+ @Retention(RetentionPolicy.RUNTIME)
29
+ @JacksonAnnotation
30
+ public @interface JsonView {
31
+ /**
32
+ * View or views that annotated element is part of. Views are identified
33
+ * by classes, and use expected class inheritance relationship: child
34
+ * views contain all elements parent views have, for example.
35
+ */
36
+ public Class<?>[] value() default { };
37
+ }
@@ -0,0 +1,19 @@
1
+ package sh.calaba.org.codehaus.jackson.map.annotate;
2
+
3
+ /**
4
+ * Marker class used with annotations to indicate "no class". This is
5
+ * a silly but necessary work-around -- annotations can not take nulls
6
+ * as either default or explicit values. Hence for class values we must
7
+ * explicitly use a bogus placeholder to denote equivalent of
8
+ * "no class" (for which 'null' is usually the natural choice).
9
+ *<p>
10
+ * Note before version 1.4, this marker class was under
11
+ * "sh.calaba.org.codehaus.jackson.annotate". However, since it is only used
12
+ * by annotations in "sh.calaba.org.codehaus.jackson.map.annotate" (and not externally
13
+ * exposed), it was moved to that package as of version 1.5.
14
+ */
15
+ public final class NoClass
16
+ {
17
+ private NoClass() { }
18
+ }
19
+
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Annotations that directly depend on Mapper classes (not just
3
+ * Jackson core) and are used for configuring Data Mapping functionality.
4
+ */
5
+ package sh.calaba.org.codehaus.jackson.map.annotate;
@@ -0,0 +1,102 @@
1
+ package sh.calaba.org.codehaus.jackson.map.deser;
2
+
3
+ import java.io.IOException;
4
+
5
+ import sh.calaba.org.codehaus.jackson.JsonParser;
6
+ import sh.calaba.org.codehaus.jackson.JsonProcessingException;
7
+ import sh.calaba.org.codehaus.jackson.map.*;
8
+ import sh.calaba.org.codehaus.jackson.type.JavaType;
9
+
10
+ /**
11
+ * Deserializer only used as placeholder for abstract types during polymorphic
12
+ * type handling deserialization. If so, there is no real deserializer associated
13
+ * with nominal type, just {@link TypeDeserializer}; and any calls that do not
14
+ * pass such resolver will result in an error.
15
+ *
16
+ * @author tatu
17
+ *
18
+ * @since 1.6
19
+ */
20
+ public class AbstractDeserializer
21
+ extends JsonDeserializer<Object>
22
+ {
23
+ protected final JavaType _baseType;
24
+
25
+ // support for "native" types, which require special care:
26
+
27
+ protected final boolean _acceptString;
28
+ protected final boolean _acceptBoolean;
29
+ protected final boolean _acceptInt;
30
+ protected final boolean _acceptDouble;
31
+
32
+ public AbstractDeserializer(JavaType bt)
33
+ {
34
+ _baseType = bt;
35
+ Class<?> cls = bt.getRawClass();
36
+ _acceptString = cls.isAssignableFrom(String.class);
37
+ _acceptBoolean = (cls == Boolean.TYPE) || cls.isAssignableFrom(Boolean.class);
38
+ _acceptInt = (cls == Integer.TYPE) || cls.isAssignableFrom(Integer.class);
39
+ _acceptDouble = (cls == Double.TYPE) || cls.isAssignableFrom(Double.class);
40
+ }
41
+
42
+ @Override
43
+ public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt,
44
+ TypeDeserializer typeDeserializer)
45
+ throws IOException, JsonProcessingException
46
+ {
47
+ // First: support "natural" values (which are always serialized without type info!)
48
+ Object result = _deserializeIfNatural(jp, ctxt);
49
+ if (result != null) {
50
+ return result;
51
+ }
52
+ return typeDeserializer.deserializeTypedFromObject(jp, ctxt);
53
+ }
54
+
55
+ @Override
56
+ public Object deserialize(JsonParser jp, DeserializationContext ctxt)
57
+ throws IOException, JsonProcessingException
58
+ {
59
+ // This method should never be called...
60
+ throw ctxt.instantiationException(_baseType.getRawClass(), "abstract types can only be instantiated with additional type information");
61
+ }
62
+
63
+ protected Object _deserializeIfNatural(JsonParser jp, DeserializationContext ctxt)
64
+ throws IOException, JsonProcessingException
65
+ {
66
+ /* As per [JACKSON-417], there is a chance we might be "natular" types
67
+ * (String, Boolean, Integer, Double), which do not include any type information...
68
+ * Care must be taken to only return this if return type matches, however.
69
+ * Finally, we may have to consider possibility of custom handlers for
70
+ * these values: but for now this should work ok.
71
+ */
72
+ switch (jp.getCurrentToken()) {
73
+ case VALUE_STRING:
74
+ if (_acceptString) {
75
+ return jp.getText();
76
+ }
77
+ break;
78
+ case VALUE_NUMBER_INT:
79
+ if (_acceptInt) {
80
+ return jp.getIntValue();
81
+ }
82
+ break;
83
+
84
+ case VALUE_NUMBER_FLOAT:
85
+ if (_acceptDouble) {
86
+ return Double.valueOf(jp.getDoubleValue());
87
+ }
88
+ break;
89
+ case VALUE_TRUE:
90
+ if (_acceptBoolean) {
91
+ return Boolean.TRUE;
92
+ }
93
+ break;
94
+ case VALUE_FALSE:
95
+ if (_acceptBoolean) {
96
+ return Boolean.FALSE;
97
+ }
98
+ break;
99
+ }
100
+ return null;
101
+ }
102
+ }
@@ -0,0 +1,28 @@
1
+ package sh.calaba.org.codehaus.jackson.map.deser;
2
+
3
+ import sh.calaba.org.codehaus.jackson.map.*;
4
+ import sh.calaba.org.codehaus.jackson.map.type.ArrayType;
5
+
6
+ /**
7
+ * @deprecated Since 1.9, use {@link sh.calaba.org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer} instead.
8
+ */
9
+ @Deprecated
10
+ public class ArrayDeserializer
11
+ extends sh.calaba.org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer
12
+ {
13
+ /**
14
+ * @deprecated
15
+ */
16
+ @Deprecated
17
+ public ArrayDeserializer(ArrayType arrayType, JsonDeserializer<Object> elemDeser)
18
+ {
19
+ this(arrayType, elemDeser, null);
20
+ }
21
+
22
+ public ArrayDeserializer(ArrayType arrayType, JsonDeserializer<Object> elemDeser,
23
+ TypeDeserializer elemTypeDeser)
24
+ {
25
+ super(arrayType, elemDeser, elemTypeDeser);
26
+ }
27
+ }
28
+
@@ -0,0 +1,11 @@
1
+ package sh.calaba.org.codehaus.jackson.map.deser;
2
+
3
+ /**
4
+ * @deprecated Since 1.9, use {@link sh.calaba.org.codehaus.jackson.map.deser.std.PrimitiveArrayDeserializers} instead.
5
+ */
6
+ @Deprecated
7
+ public class ArrayDeserializers
8
+ extends sh.calaba.org.codehaus.jackson.map.deser.std.PrimitiveArrayDeserializers
9
+ {
10
+ private ArrayDeserializers() { super(); }
11
+ }
@@ -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
+ }