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,1136 @@
1
+ package sh.calaba.org.codehaus.jackson.map.deser.std;
2
+
3
+ import java.io.IOException;
4
+ import java.math.BigDecimal;
5
+ import java.math.BigInteger;
6
+ import java.util.*;
7
+
8
+ import sh.calaba.org.codehaus.jackson.JsonParser;
9
+ import sh.calaba.org.codehaus.jackson.JsonProcessingException;
10
+ import sh.calaba.org.codehaus.jackson.JsonToken;
11
+ import sh.calaba.org.codehaus.jackson.JsonParser.NumberType;
12
+ import sh.calaba.org.codehaus.jackson.io.NumberInput;
13
+ import sh.calaba.org.codehaus.jackson.map.*;
14
+ import sh.calaba.org.codehaus.jackson.map.annotate.JacksonStdImpl;
15
+ import sh.calaba.org.codehaus.jackson.type.JavaType;
16
+
17
+ /**
18
+ * Base class for common deserializers. Contains shared
19
+ * base functionality for dealing with primitive values, such
20
+ * as (re)parsing from String.
21
+ *
22
+ * @since 1.9 (moved from higher-level package)
23
+ */
24
+ public abstract class StdDeserializer<T>
25
+ extends JsonDeserializer<T>
26
+ {
27
+ /**
28
+ * Type of values this deserializer handles: sometimes
29
+ * exact types, other time most specific supertype of
30
+ * types deserializer handles (which may be as generic
31
+ * as {@link Object} in some case)
32
+ */
33
+ final protected Class<?> _valueClass;
34
+
35
+ protected StdDeserializer(Class<?> vc) {
36
+ _valueClass = vc;
37
+ }
38
+
39
+ protected StdDeserializer(JavaType valueType) {
40
+ _valueClass = (valueType == null) ? null : valueType.getRawClass();
41
+ }
42
+
43
+ /*
44
+ /**********************************************************
45
+ /* Extended API
46
+ /**********************************************************
47
+ */
48
+
49
+ public Class<?> getValueClass() { return _valueClass; }
50
+
51
+ /**
52
+ * Exact structured type deserializer handles, if known.
53
+ *<p>
54
+ * Default implementation just returns null.
55
+ */
56
+ public JavaType getValueType() { return null; }
57
+
58
+ /**
59
+ * Method that can be called to determine if given deserializer is the default
60
+ * deserializer Jackson uses; as opposed to a custom deserializer installed by
61
+ * a module or calling application. Determination is done using
62
+ * {@link JacksonStdImpl} annotation on deserializer class.
63
+ *
64
+ * @since 1.7
65
+ */
66
+ protected boolean isDefaultSerializer(JsonDeserializer<?> deserializer)
67
+ {
68
+ return (deserializer != null && deserializer.getClass().getAnnotation(JacksonStdImpl.class) != null);
69
+ }
70
+
71
+ /*
72
+ /**********************************************************
73
+ /* Partial JsonDeserializer implementation
74
+ /**********************************************************
75
+ */
76
+
77
+ /**
78
+ * Base implementation that does not assume specific type
79
+ * inclusion mechanism. Sub-classes are expected to override
80
+ * this method if they are to handle type information.
81
+ */
82
+ @Override
83
+ public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt,
84
+ TypeDeserializer typeDeserializer)
85
+ throws IOException, JsonProcessingException
86
+ {
87
+ return typeDeserializer.deserializeTypedFromAny(jp, ctxt);
88
+ }
89
+
90
+ /*
91
+ /**********************************************************
92
+ /* Helper methods for sub-classes, parsing
93
+ /**********************************************************
94
+ */
95
+
96
+ protected final boolean _parseBooleanPrimitive(JsonParser jp, DeserializationContext ctxt)
97
+ throws IOException, JsonProcessingException
98
+ {
99
+ JsonToken t = jp.getCurrentToken();
100
+ if (t == JsonToken.VALUE_TRUE) {
101
+ return true;
102
+ }
103
+ if (t == JsonToken.VALUE_FALSE) {
104
+ return false;
105
+ }
106
+ if (t == JsonToken.VALUE_NULL) {
107
+ return false;
108
+ }
109
+ // [JACKSON-78]: should accept ints too, (0 == false, otherwise true)
110
+ if (t == JsonToken.VALUE_NUMBER_INT) {
111
+ // 11-Jan-2012, tatus: May be outside of int...
112
+ if (jp.getNumberType() == NumberType.INT) {
113
+ return (jp.getIntValue() != 0);
114
+ }
115
+ return _parseBooleanFromNumber(jp, ctxt);
116
+ }
117
+ // And finally, let's allow Strings to be converted too
118
+ if (t == JsonToken.VALUE_STRING) {
119
+ String text = jp.getText().trim();
120
+ if ("true".equals(text)) {
121
+ return true;
122
+ }
123
+ if ("false".equals(text) || text.length() == 0) {
124
+ return Boolean.FALSE;
125
+ }
126
+ throw ctxt.weirdStringException(_valueClass, "only \"true\" or \"false\" recognized");
127
+ }
128
+ // Otherwise, no can do:
129
+ throw ctxt.mappingException(_valueClass, t);
130
+ }
131
+
132
+ protected final Boolean _parseBoolean(JsonParser jp, DeserializationContext ctxt)
133
+ throws IOException, JsonProcessingException
134
+ {
135
+ JsonToken t = jp.getCurrentToken();
136
+ if (t == JsonToken.VALUE_TRUE) {
137
+ return Boolean.TRUE;
138
+ }
139
+ if (t == JsonToken.VALUE_FALSE) {
140
+ return Boolean.FALSE;
141
+ }
142
+ // [JACKSON-78]: should accept ints too, (0 == false, otherwise true)
143
+ if (t == JsonToken.VALUE_NUMBER_INT) {
144
+ // 11-Jan-2012, tatus: May be outside of int...
145
+ if (jp.getNumberType() == NumberType.INT) {
146
+ return (jp.getIntValue() == 0) ? Boolean.FALSE : Boolean.TRUE;
147
+ }
148
+ return Boolean.valueOf(_parseBooleanFromNumber(jp, ctxt));
149
+ }
150
+ if (t == JsonToken.VALUE_NULL) {
151
+ return (Boolean) getNullValue();
152
+ }
153
+ // And finally, let's allow Strings to be converted too
154
+ if (t == JsonToken.VALUE_STRING) {
155
+ String text = jp.getText().trim();
156
+ if ("true".equals(text)) {
157
+ return Boolean.TRUE;
158
+ }
159
+ if ("false".equals(text)) {
160
+ return Boolean.FALSE;
161
+ }
162
+ if (text.length() == 0) {
163
+ return (Boolean) getEmptyValue();
164
+ }
165
+ throw ctxt.weirdStringException(_valueClass, "only \"true\" or \"false\" recognized");
166
+ }
167
+ // Otherwise, no can do:
168
+ throw ctxt.mappingException(_valueClass, t);
169
+ }
170
+
171
+ protected final boolean _parseBooleanFromNumber(JsonParser jp, DeserializationContext ctxt)
172
+ throws IOException, JsonProcessingException
173
+ {
174
+ if (jp.getNumberType() == NumberType.LONG) {
175
+ return (jp.getLongValue() == 0L) ? Boolean.FALSE : Boolean.TRUE;
176
+ }
177
+ // no really good logic; let's actually resort to textual comparison
178
+ String str = jp.getText();
179
+ if ("0.0".equals(str) || "0".equals(str)) {
180
+ return Boolean.FALSE;
181
+ }
182
+ return Boolean.TRUE;
183
+ }
184
+
185
+ protected Byte _parseByte(JsonParser jp, DeserializationContext ctxt)
186
+ throws IOException, JsonProcessingException
187
+ {
188
+ JsonToken t = jp.getCurrentToken();
189
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
190
+ return jp.getByteValue();
191
+ }
192
+ if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
193
+ String text = jp.getText().trim();
194
+ int value;
195
+ try {
196
+ int len = text.length();
197
+ if (len == 0) {
198
+ return (Byte) getEmptyValue();
199
+ }
200
+ value = NumberInput.parseInt(text);
201
+ } catch (IllegalArgumentException iae) {
202
+ throw ctxt.weirdStringException(_valueClass, "not a valid Byte value");
203
+ }
204
+ // So far so good: but does it fit?
205
+ if (value < Byte.MIN_VALUE || value > Byte.MAX_VALUE) {
206
+ throw ctxt.weirdStringException(_valueClass, "overflow, value can not be represented as 8-bit value");
207
+ }
208
+ return Byte.valueOf((byte) value);
209
+ }
210
+ if (t == JsonToken.VALUE_NULL) {
211
+ return (Byte) getNullValue();
212
+ }
213
+ throw ctxt.mappingException(_valueClass, t);
214
+ }
215
+
216
+ protected Short _parseShort(JsonParser jp, DeserializationContext ctxt)
217
+ throws IOException, JsonProcessingException
218
+ {
219
+ JsonToken t = jp.getCurrentToken();
220
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
221
+ return jp.getShortValue();
222
+ }
223
+ if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
224
+ String text = jp.getText().trim();
225
+ int value;
226
+ try {
227
+ int len = text.length();
228
+ if (len == 0) {
229
+ return (Short) getEmptyValue();
230
+ }
231
+ value = NumberInput.parseInt(text);
232
+ } catch (IllegalArgumentException iae) {
233
+ throw ctxt.weirdStringException(_valueClass, "not a valid Short value");
234
+ }
235
+ // So far so good: but does it fit?
236
+ if (value < Short.MIN_VALUE || value > Short.MAX_VALUE) {
237
+ throw ctxt.weirdStringException(_valueClass, "overflow, value can not be represented as 16-bit value");
238
+ }
239
+ return Short.valueOf((short) value);
240
+ }
241
+ if (t == JsonToken.VALUE_NULL) {
242
+ return (Short) getNullValue();
243
+ }
244
+ throw ctxt.mappingException(_valueClass, t);
245
+ }
246
+
247
+ protected final short _parseShortPrimitive(JsonParser jp, DeserializationContext ctxt)
248
+ throws IOException, JsonProcessingException
249
+ {
250
+ int value = _parseIntPrimitive(jp, ctxt);
251
+ // So far so good: but does it fit?
252
+ if (value < Short.MIN_VALUE || value > Short.MAX_VALUE) {
253
+ throw ctxt.weirdStringException(_valueClass, "overflow, value can not be represented as 16-bit value");
254
+ }
255
+ return (short) value;
256
+ }
257
+
258
+ protected final int _parseIntPrimitive(JsonParser jp, DeserializationContext ctxt)
259
+ throws IOException, JsonProcessingException
260
+ {
261
+ JsonToken t = jp.getCurrentToken();
262
+
263
+ // Int works as is, coercing fine as well
264
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
265
+ return jp.getIntValue();
266
+ }
267
+ if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
268
+ /* 31-Dec-2009, tatus: Should improve handling of overflow
269
+ * values... but this'll have to do for now
270
+ */
271
+ String text = jp.getText().trim();
272
+ try {
273
+ int len = text.length();
274
+ if (len > 9) {
275
+ long l = Long.parseLong(text);
276
+ if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) {
277
+ throw ctxt.weirdStringException(_valueClass,
278
+ "Overflow: numeric value ("+text+") out of range of int ("+Integer.MIN_VALUE+" - "+Integer.MAX_VALUE+")");
279
+ }
280
+ return (int) l;
281
+ }
282
+ if (len == 0) {
283
+ return 0;
284
+ }
285
+ return NumberInput.parseInt(text);
286
+ } catch (IllegalArgumentException iae) {
287
+ throw ctxt.weirdStringException(_valueClass, "not a valid int value");
288
+ }
289
+ }
290
+ if (t == JsonToken.VALUE_NULL) {
291
+ return 0;
292
+ }
293
+ // Otherwise, no can do:
294
+ throw ctxt.mappingException(_valueClass, t);
295
+ }
296
+
297
+ protected final Integer _parseInteger(JsonParser jp, DeserializationContext ctxt)
298
+ throws IOException, JsonProcessingException
299
+ {
300
+ JsonToken t = jp.getCurrentToken();
301
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
302
+ return Integer.valueOf(jp.getIntValue());
303
+ }
304
+ if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
305
+ String text = jp.getText().trim();
306
+ try {
307
+ int len = text.length();
308
+ if (len > 9) {
309
+ long l = Long.parseLong(text);
310
+ if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) {
311
+ throw ctxt.weirdStringException(_valueClass,
312
+ "Overflow: numeric value ("+text+") out of range of Integer ("+Integer.MIN_VALUE+" - "+Integer.MAX_VALUE+")");
313
+ }
314
+ return Integer.valueOf((int) l);
315
+ }
316
+ if (len == 0) {
317
+ return (Integer) getEmptyValue();
318
+ }
319
+ return Integer.valueOf(NumberInput.parseInt(text));
320
+ } catch (IllegalArgumentException iae) {
321
+ throw ctxt.weirdStringException(_valueClass, "not a valid Integer value");
322
+ }
323
+ }
324
+ if (t == JsonToken.VALUE_NULL) {
325
+ return (Integer) getNullValue();
326
+ }
327
+ // Otherwise, no can do:
328
+ throw ctxt.mappingException(_valueClass, t);
329
+ }
330
+
331
+ protected final Long _parseLong(JsonParser jp, DeserializationContext ctxt)
332
+ throws IOException, JsonProcessingException
333
+ {
334
+ JsonToken t = jp.getCurrentToken();
335
+
336
+ // it should be ok to coerce (although may fail, too)
337
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) {
338
+ return jp.getLongValue();
339
+ }
340
+ // let's allow Strings to be converted too
341
+ if (t == JsonToken.VALUE_STRING) {
342
+ // !!! 05-Jan-2009, tatu: Should we try to limit value space, JDK is too lenient?
343
+ String text = jp.getText().trim();
344
+ if (text.length() == 0) {
345
+ return (Long) getEmptyValue();
346
+ }
347
+ try {
348
+ return Long.valueOf(NumberInput.parseLong(text));
349
+ } catch (IllegalArgumentException iae) { }
350
+ throw ctxt.weirdStringException(_valueClass, "not a valid Long value");
351
+ }
352
+ if (t == JsonToken.VALUE_NULL) {
353
+ return (Long) getNullValue();
354
+ }
355
+ // Otherwise, no can do:
356
+ throw ctxt.mappingException(_valueClass, t);
357
+ }
358
+
359
+ protected final long _parseLongPrimitive(JsonParser jp, DeserializationContext ctxt)
360
+ throws IOException, JsonProcessingException
361
+ {
362
+ JsonToken t = jp.getCurrentToken();
363
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) {
364
+ return jp.getLongValue();
365
+ }
366
+ if (t == JsonToken.VALUE_STRING) {
367
+ String text = jp.getText().trim();
368
+ if (text.length() == 0) {
369
+ return 0L;
370
+ }
371
+ try {
372
+ return NumberInput.parseLong(text);
373
+ } catch (IllegalArgumentException iae) { }
374
+ throw ctxt.weirdStringException(_valueClass, "not a valid long value");
375
+ }
376
+ if (t == JsonToken.VALUE_NULL) {
377
+ return 0L;
378
+ }
379
+ throw ctxt.mappingException(_valueClass, t);
380
+ }
381
+
382
+ protected final Float _parseFloat(JsonParser jp, DeserializationContext ctxt)
383
+ throws IOException, JsonProcessingException
384
+ {
385
+ // We accept couple of different types; obvious ones first:
386
+ JsonToken t = jp.getCurrentToken();
387
+
388
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
389
+ return jp.getFloatValue();
390
+ }
391
+ // And finally, let's allow Strings to be converted too
392
+ if (t == JsonToken.VALUE_STRING) {
393
+ String text = jp.getText().trim();
394
+ if (text.length() == 0) {
395
+ return (Float) getEmptyValue();
396
+ }
397
+ switch (text.charAt(0)) {
398
+ case 'I':
399
+ if ("Infinity".equals(text) || "INF".equals(text)) {
400
+ return Float.POSITIVE_INFINITY;
401
+ }
402
+ break;
403
+ case 'N':
404
+ if ("NaN".equals(text)) {
405
+ return Float.NaN;
406
+ }
407
+ break;
408
+ case '-':
409
+ if ("-Infinity".equals(text) || "-INF".equals(text)) {
410
+ return Float.NEGATIVE_INFINITY;
411
+ }
412
+ break;
413
+ }
414
+ try {
415
+ return Float.parseFloat(text);
416
+ } catch (IllegalArgumentException iae) { }
417
+ throw ctxt.weirdStringException(_valueClass, "not a valid Float value");
418
+ }
419
+ if (t == JsonToken.VALUE_NULL) {
420
+ return (Float) getNullValue();
421
+ }
422
+ // Otherwise, no can do:
423
+ throw ctxt.mappingException(_valueClass, t);
424
+ }
425
+
426
+ protected final float _parseFloatPrimitive(JsonParser jp, DeserializationContext ctxt)
427
+ throws IOException, JsonProcessingException
428
+ {
429
+ JsonToken t = jp.getCurrentToken();
430
+
431
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
432
+ return jp.getFloatValue();
433
+ }
434
+ if (t == JsonToken.VALUE_STRING) {
435
+ String text = jp.getText().trim();
436
+ if (text.length() == 0) {
437
+ return 0.0f;
438
+ }
439
+ switch (text.charAt(0)) {
440
+ case 'I':
441
+ if ("Infinity".equals(text) || "INF".equals(text)) {
442
+ return Float.POSITIVE_INFINITY;
443
+ }
444
+ break;
445
+ case 'N':
446
+ if ("NaN".equals(text)) {
447
+ return Float.NaN;
448
+ }
449
+ break;
450
+ case '-':
451
+ if ("-Infinity".equals(text) || "-INF".equals(text)) {
452
+ return Float.NEGATIVE_INFINITY;
453
+ }
454
+ break;
455
+ }
456
+ try {
457
+ return Float.parseFloat(text);
458
+ } catch (IllegalArgumentException iae) { }
459
+ throw ctxt.weirdStringException(_valueClass, "not a valid float value");
460
+ }
461
+ if (t == JsonToken.VALUE_NULL) {
462
+ return 0.0f;
463
+ }
464
+ // Otherwise, no can do:
465
+ throw ctxt.mappingException(_valueClass, t);
466
+ }
467
+
468
+ protected final Double _parseDouble(JsonParser jp, DeserializationContext ctxt)
469
+ throws IOException, JsonProcessingException
470
+ {
471
+ JsonToken t = jp.getCurrentToken();
472
+
473
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
474
+ return jp.getDoubleValue();
475
+ }
476
+ if (t == JsonToken.VALUE_STRING) {
477
+ String text = jp.getText().trim();
478
+ if (text.length() == 0) {
479
+ return (Double) getEmptyValue();
480
+ }
481
+ switch (text.charAt(0)) {
482
+ case 'I':
483
+ if ("Infinity".equals(text) || "INF".equals(text)) {
484
+ return Double.POSITIVE_INFINITY;
485
+ }
486
+ break;
487
+ case 'N':
488
+ if ("NaN".equals(text)) {
489
+ return Double.NaN;
490
+ }
491
+ break;
492
+ case '-':
493
+ if ("-Infinity".equals(text) || "-INF".equals(text)) {
494
+ return Double.NEGATIVE_INFINITY;
495
+ }
496
+ break;
497
+ }
498
+ try {
499
+ return parseDouble(text);
500
+ } catch (IllegalArgumentException iae) { }
501
+ throw ctxt.weirdStringException(_valueClass, "not a valid Double value");
502
+ }
503
+ if (t == JsonToken.VALUE_NULL) {
504
+ return (Double) getNullValue();
505
+ }
506
+ // Otherwise, no can do:
507
+ throw ctxt.mappingException(_valueClass, t);
508
+ }
509
+
510
+ protected final double _parseDoublePrimitive(JsonParser jp, DeserializationContext ctxt)
511
+ throws IOException, JsonProcessingException
512
+ {
513
+ // We accept couple of different types; obvious ones first:
514
+ JsonToken t = jp.getCurrentToken();
515
+
516
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
517
+ return jp.getDoubleValue();
518
+ }
519
+ // And finally, let's allow Strings to be converted too
520
+ if (t == JsonToken.VALUE_STRING) {
521
+ String text = jp.getText().trim();
522
+ if (text.length() == 0) {
523
+ return 0.0;
524
+ }
525
+ switch (text.charAt(0)) {
526
+ case 'I':
527
+ if ("Infinity".equals(text) || "INF".equals(text)) {
528
+ return Double.POSITIVE_INFINITY;
529
+ }
530
+ break;
531
+ case 'N':
532
+ if ("NaN".equals(text)) {
533
+ return Double.NaN;
534
+ }
535
+ break;
536
+ case '-':
537
+ if ("-Infinity".equals(text) || "-INF".equals(text)) {
538
+ return Double.NEGATIVE_INFINITY;
539
+ }
540
+ break;
541
+ }
542
+ try {
543
+ return parseDouble(text);
544
+ } catch (IllegalArgumentException iae) { }
545
+ throw ctxt.weirdStringException(_valueClass, "not a valid double value");
546
+ }
547
+ if (t == JsonToken.VALUE_NULL) {
548
+ return 0.0;
549
+ }
550
+ // Otherwise, no can do:
551
+ throw ctxt.mappingException(_valueClass, t);
552
+ }
553
+
554
+
555
+ protected java.util.Date _parseDate(JsonParser jp, DeserializationContext ctxt)
556
+ throws IOException, JsonProcessingException
557
+ {
558
+ JsonToken t = jp.getCurrentToken();
559
+ if (t == JsonToken.VALUE_NUMBER_INT) {
560
+ return new java.util.Date(jp.getLongValue());
561
+ }
562
+ if (t == JsonToken.VALUE_NULL) {
563
+ return (java.util.Date) getNullValue();
564
+ }
565
+ if (t == JsonToken.VALUE_STRING) {
566
+ try {
567
+ /* As per [JACKSON-203], take empty Strings to mean
568
+ * null
569
+ */
570
+ String str = jp.getText().trim();
571
+ if (str.length() == 0) {
572
+ return (Date) getEmptyValue();
573
+ }
574
+ return ctxt.parseDate(str);
575
+ } catch (IllegalArgumentException iae) {
576
+ throw ctxt.weirdStringException(_valueClass, "not a valid representation (error: "+iae.getMessage()+")");
577
+ }
578
+ }
579
+ throw ctxt.mappingException(_valueClass, t);
580
+ }
581
+
582
+ /**
583
+ * Helper method for encapsulating calls to low-level double value parsing; single place
584
+ * just because we need a work-around that must be applied to all calls.
585
+ *<p>
586
+ * Note: copied from <code>sh.calaba.org.codehaus.jackson.io.NumberUtil</code> (to avoid dependency to
587
+ * version 1.8; except for String constants, but that gets compiled in bytecode here)
588
+ */
589
+ protected final static double parseDouble(String numStr) throws NumberFormatException
590
+ {
591
+ // [JACKSON-486]: avoid some nasty float representations... but should it be MIN_NORMAL or MIN_VALUE?
592
+ if (NumberInput.NASTY_SMALL_DOUBLE.equals(numStr)) {
593
+ return 0x1.0p-1022; //Double.MIN_NORMAL; Hardcoded since MIN_NORMAL is not available until SDK level 10
594
+ }
595
+ return Double.parseDouble(numStr);
596
+ }
597
+
598
+ /*
599
+ /****************************************************
600
+ /* Helper methods for sub-classes, resolving dependencies
601
+ /****************************************************
602
+ */
603
+
604
+ /**
605
+ * Helper method used to locate deserializers for properties the
606
+ * type this deserializer handles contains (usually for properties of
607
+ * bean types)
608
+ *
609
+ * @param config Active deserialization configuration
610
+ * @param provider Deserializer provider to use for actually finding deserializer(s)
611
+ * @param type Type of property to deserialize
612
+ * @param property Actual property object (field, method, constuctor parameter) used
613
+ * for passing deserialized values; provided so deserializer can be contextualized if necessary (since 1.7)
614
+ */
615
+ protected JsonDeserializer<Object> findDeserializer(DeserializationConfig config, DeserializerProvider provider,
616
+ JavaType type, BeanProperty property)
617
+ throws JsonMappingException
618
+ {
619
+ JsonDeserializer<Object> deser = provider.findValueDeserializer(config, type, property);
620
+ return deser;
621
+ }
622
+
623
+ /*
624
+ /**********************************************************
625
+ /* Helper methods for sub-classes, problem reporting
626
+ /**********************************************************
627
+ */
628
+
629
+ /**
630
+ * Method called to deal with a property that did not map to a known
631
+ * Bean property. Method can deal with the problem as it sees fit (ignore,
632
+ * throw exception); but if it does return, it has to skip the matching
633
+ * Json content parser has.
634
+ *<p>
635
+ * NOTE: method signature was changed in version 1.5; explicit JsonParser
636
+ * <b>must</b> be passed since it may be something other than what
637
+ * context has. Prior versions did not include the first parameter.
638
+ *
639
+ * @param jp Parser that points to value of the unknown property
640
+ * @param ctxt Context for deserialization; allows access to the parser,
641
+ * error reporting functionality
642
+ * @param instanceOrClass Instance that is being populated by this
643
+ * deserializer, or if not known, Class that would be instantiated.
644
+ * If null, will assume type is what {@link #getValueClass} returns.
645
+ * @param propName Name of the property that can not be mapped
646
+ */
647
+ protected void handleUnknownProperty(JsonParser jp, DeserializationContext ctxt, Object instanceOrClass, String propName)
648
+ throws IOException, JsonProcessingException
649
+ {
650
+ if (instanceOrClass == null) {
651
+ instanceOrClass = getValueClass();
652
+ }
653
+ // Maybe we have configured handler(s) to take care of it?
654
+ if (ctxt.handleUnknownProperty(jp, this, instanceOrClass, propName)) {
655
+ return;
656
+ }
657
+ // Nope, not handled. Potentially that's a problem...
658
+ reportUnknownProperty(ctxt, instanceOrClass, propName);
659
+
660
+ /* If we get this far, need to skip now; we point to first token of
661
+ * value (START_xxx for structured, or the value token for others)
662
+ */
663
+ jp.skipChildren();
664
+ }
665
+
666
+ protected void reportUnknownProperty(DeserializationContext ctxt,
667
+ Object instanceOrClass, String fieldName)
668
+ throws IOException, JsonProcessingException
669
+ {
670
+ // throw exception if that's what we are expected to do
671
+ if (ctxt.isEnabled(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES)) {
672
+ throw ctxt.unknownFieldException(instanceOrClass, fieldName);
673
+ }
674
+ // ... or if not, just ignore
675
+ }
676
+
677
+
678
+ /*
679
+ /**********************************************************
680
+ /* Then one intermediate base class for things that have
681
+ /* both primitive and wrapper types
682
+ /**********************************************************
683
+ */
684
+
685
+ protected abstract static class PrimitiveOrWrapperDeserializer<T>
686
+ extends StdScalarDeserializer<T>
687
+ {
688
+ final T _nullValue;
689
+
690
+ protected PrimitiveOrWrapperDeserializer(Class<T> vc, T nvl)
691
+ {
692
+ super(vc);
693
+ _nullValue = nvl;
694
+ }
695
+
696
+ @Override
697
+ public final T getNullValue() {
698
+ return _nullValue;
699
+ }
700
+ }
701
+
702
+ /*
703
+ /**********************************************************
704
+ /* Then primitive/wrapper types
705
+ /**********************************************************
706
+ */
707
+
708
+ @JacksonStdImpl
709
+ public final static class BooleanDeserializer
710
+ extends PrimitiveOrWrapperDeserializer<Boolean>
711
+ {
712
+ public BooleanDeserializer(Class<Boolean> cls, Boolean nvl)
713
+ {
714
+ super(cls, nvl);
715
+ }
716
+
717
+ @Override
718
+ public Boolean deserialize(JsonParser jp, DeserializationContext ctxt)
719
+ throws IOException, JsonProcessingException
720
+ {
721
+ return _parseBoolean(jp, ctxt);
722
+ }
723
+
724
+ // 1.6: since we can never have type info ("natural type"; String, Boolean, Integer, Double):
725
+ // (is it an error to even call this version?)
726
+ @Override
727
+ public Boolean deserializeWithType(JsonParser jp, DeserializationContext ctxt,
728
+ TypeDeserializer typeDeserializer)
729
+ throws IOException, JsonProcessingException
730
+ {
731
+ return _parseBoolean(jp, ctxt);
732
+ }
733
+ }
734
+
735
+ @JacksonStdImpl
736
+ public final static class ByteDeserializer
737
+ extends PrimitiveOrWrapperDeserializer<Byte>
738
+ {
739
+ public ByteDeserializer(Class<Byte> cls, Byte nvl)
740
+ {
741
+ super(cls, nvl);
742
+ }
743
+
744
+ @Override
745
+ public Byte deserialize(JsonParser jp, DeserializationContext ctxt)
746
+ throws IOException, JsonProcessingException
747
+ {
748
+ return _parseByte(jp, ctxt);
749
+ }
750
+ }
751
+
752
+ @JacksonStdImpl
753
+ public final static class ShortDeserializer
754
+ extends PrimitiveOrWrapperDeserializer<Short>
755
+ {
756
+ public ShortDeserializer(Class<Short> cls, Short nvl)
757
+ {
758
+ super(cls, nvl);
759
+ }
760
+
761
+ @Override
762
+ public Short deserialize(JsonParser jp, DeserializationContext ctxt)
763
+ throws IOException, JsonProcessingException
764
+ {
765
+ return _parseShort(jp, ctxt);
766
+ }
767
+ }
768
+
769
+ @JacksonStdImpl
770
+ public final static class CharacterDeserializer
771
+ extends PrimitiveOrWrapperDeserializer<Character>
772
+ {
773
+ public CharacterDeserializer(Class<Character> cls, Character nvl)
774
+ {
775
+ super(cls, nvl);
776
+ }
777
+
778
+ @Override
779
+ public Character deserialize(JsonParser jp, DeserializationContext ctxt)
780
+ throws IOException, JsonProcessingException
781
+ {
782
+ JsonToken t = jp.getCurrentToken();
783
+ int value;
784
+
785
+ if (t == JsonToken.VALUE_NUMBER_INT) { // ok iff ascii value
786
+ value = jp.getIntValue();
787
+ if (value >= 0 && value <= 0xFFFF) {
788
+ return Character.valueOf((char) value);
789
+ }
790
+ } else if (t == JsonToken.VALUE_STRING) { // this is the usual type
791
+ // But does it have to be exactly one char?
792
+ String text = jp.getText();
793
+ if (text.length() == 1) {
794
+ return Character.valueOf(text.charAt(0));
795
+ }
796
+ // actually, empty should become null?
797
+ if (text.length() == 0) {
798
+ return (Character) getEmptyValue();
799
+ }
800
+ }
801
+ throw ctxt.mappingException(_valueClass, t);
802
+ }
803
+ }
804
+
805
+ @JacksonStdImpl
806
+ public final static class IntegerDeserializer
807
+ extends PrimitiveOrWrapperDeserializer<Integer>
808
+ {
809
+ public IntegerDeserializer(Class<Integer> cls, Integer nvl)
810
+ {
811
+ super(cls, nvl);
812
+ }
813
+
814
+ @Override
815
+ public Integer deserialize(JsonParser jp, DeserializationContext ctxt)
816
+ throws IOException, JsonProcessingException
817
+ {
818
+ return _parseInteger(jp, ctxt);
819
+ }
820
+
821
+ // 1.6: since we can never have type info ("natural type"; String, Boolean, Integer, Double):
822
+ // (is it an error to even call this version?)
823
+ @Override
824
+ public Integer deserializeWithType(JsonParser jp, DeserializationContext ctxt,
825
+ TypeDeserializer typeDeserializer)
826
+ throws IOException, JsonProcessingException
827
+ {
828
+ return _parseInteger(jp, ctxt);
829
+ }
830
+ }
831
+
832
+ @JacksonStdImpl
833
+ public final static class LongDeserializer
834
+ extends PrimitiveOrWrapperDeserializer<Long>
835
+ {
836
+ public LongDeserializer(Class<Long> cls, Long nvl)
837
+ {
838
+ super(cls, nvl);
839
+ }
840
+
841
+ @Override
842
+ public Long deserialize(JsonParser jp, DeserializationContext ctxt)
843
+ throws IOException, JsonProcessingException
844
+ {
845
+ return _parseLong(jp, ctxt);
846
+ }
847
+ }
848
+
849
+ @JacksonStdImpl
850
+ public final static class FloatDeserializer
851
+ extends PrimitiveOrWrapperDeserializer<Float>
852
+ {
853
+ public FloatDeserializer(Class<Float> cls, Float nvl)
854
+ {
855
+ super(cls, nvl);
856
+ }
857
+
858
+ @Override
859
+ public Float deserialize(JsonParser jp, DeserializationContext ctxt)
860
+ throws IOException, JsonProcessingException
861
+ {
862
+ /* 22-Jan-2009, tatu: Bounds/range checks would be tricky
863
+ * here, so let's not bother even trying...
864
+ */
865
+ return _parseFloat(jp, ctxt);
866
+ }
867
+ }
868
+
869
+ @JacksonStdImpl
870
+ public final static class DoubleDeserializer
871
+ extends PrimitiveOrWrapperDeserializer<Double>
872
+ {
873
+ public DoubleDeserializer(Class<Double> cls, Double nvl)
874
+ {
875
+ super(cls, nvl);
876
+ }
877
+
878
+ @Override
879
+ public Double deserialize(JsonParser jp, DeserializationContext ctxt)
880
+ throws IOException, JsonProcessingException
881
+ {
882
+ return _parseDouble(jp, ctxt);
883
+ }
884
+
885
+ // 1.6: since we can never have type info ("natural type"; String, Boolean, Integer, Double):
886
+ // (is it an error to even call this version?)
887
+ @Override
888
+ public Double deserializeWithType(JsonParser jp, DeserializationContext ctxt,
889
+ TypeDeserializer typeDeserializer)
890
+ throws IOException, JsonProcessingException
891
+ {
892
+ return _parseDouble(jp, ctxt);
893
+ }
894
+ }
895
+
896
+ /**
897
+ * For type <code>Number.class</code>, we can just rely on type
898
+ * mappings that plain {@link JsonParser#getNumberValue} returns.
899
+ *<p>
900
+ * Since 1.5, there is one additional complication: some numeric
901
+ * types (specifically, int/Integer and double/Double) are "non-typed";
902
+ * meaning that they will NEVER be output with type information.
903
+ * But other numeric types may need such type information.
904
+ * This is why {@link #deserializeWithType} must be overridden.
905
+ */
906
+ @JacksonStdImpl
907
+ public final static class NumberDeserializer
908
+ extends StdScalarDeserializer<Number>
909
+ {
910
+ public NumberDeserializer() { super(Number.class); }
911
+
912
+ @Override
913
+ public Number deserialize(JsonParser jp, DeserializationContext ctxt)
914
+ throws IOException, JsonProcessingException
915
+ {
916
+ JsonToken t = jp.getCurrentToken();
917
+ if (t == JsonToken.VALUE_NUMBER_INT) {
918
+ if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
919
+ return jp.getBigIntegerValue();
920
+ }
921
+ return jp.getNumberValue();
922
+ } else if (t == JsonToken.VALUE_NUMBER_FLOAT) {
923
+ /* [JACKSON-72]: need to allow overriding the behavior
924
+ * regarding which type to use
925
+ */
926
+ if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
927
+ return jp.getDecimalValue();
928
+ }
929
+ return Double.valueOf(jp.getDoubleValue());
930
+ }
931
+
932
+ /* Textual values are more difficult... not parsing itself, but figuring
933
+ * out 'minimal' type to use
934
+ */
935
+ if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
936
+ String text = jp.getText().trim();
937
+ try {
938
+ if (text.indexOf('.') >= 0) { // floating point
939
+ // as per [JACKSON-72]:
940
+ if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
941
+ return new BigDecimal(text);
942
+ }
943
+ return new Double(text);
944
+ }
945
+ // as per [JACKSON-100]:
946
+ if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
947
+ return new BigInteger(text);
948
+ }
949
+ long value = Long.parseLong(text);
950
+ if (value <= Integer.MAX_VALUE && value >= Integer.MIN_VALUE) {
951
+ return Integer.valueOf((int) value);
952
+ }
953
+ return Long.valueOf(value);
954
+ } catch (IllegalArgumentException iae) {
955
+ throw ctxt.weirdStringException(_valueClass, "not a valid number");
956
+ }
957
+ }
958
+ // Otherwise, no can do:
959
+ throw ctxt.mappingException(_valueClass, t);
960
+ }
961
+
962
+ /**
963
+ * As mentioned in class Javadoc, there is additional complexity in
964
+ * handling potentially mixed type information here. Because of this,
965
+ * we must actually check for "raw" integers and doubles first, before
966
+ * calling type deserializer.
967
+ */
968
+ @Override
969
+ public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt,
970
+ TypeDeserializer typeDeserializer)
971
+ throws IOException, JsonProcessingException
972
+ {
973
+ switch (jp.getCurrentToken()) {
974
+ case VALUE_NUMBER_INT:
975
+ case VALUE_NUMBER_FLOAT:
976
+ case VALUE_STRING:
977
+ // can not point to type information: hence must be non-typed (int/double)
978
+ return deserialize(jp, ctxt);
979
+ }
980
+ return typeDeserializer.deserializeTypedFromScalar(jp, ctxt);
981
+ }
982
+ }
983
+
984
+ /*
985
+ /**********************************************************
986
+ /* And then bit more complicated (but non-structured) number
987
+ /* types
988
+ /**********************************************************
989
+ */
990
+
991
+ @JacksonStdImpl
992
+ public static class BigDecimalDeserializer
993
+ extends StdScalarDeserializer<BigDecimal>
994
+ {
995
+ public BigDecimalDeserializer() { super(BigDecimal.class); }
996
+
997
+ @Override
998
+ public BigDecimal deserialize(JsonParser jp, DeserializationContext ctxt)
999
+ throws IOException, JsonProcessingException
1000
+ {
1001
+ JsonToken t = jp.getCurrentToken();
1002
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) {
1003
+ return jp.getDecimalValue();
1004
+ }
1005
+ // String is ok too, can easily convert
1006
+ if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
1007
+ String text = jp.getText().trim();
1008
+ if (text.length() == 0) {
1009
+ return null;
1010
+ }
1011
+ try {
1012
+ return new BigDecimal(text);
1013
+ } catch (IllegalArgumentException iae) {
1014
+ throw ctxt.weirdStringException(_valueClass, "not a valid representation");
1015
+ }
1016
+ }
1017
+ // Otherwise, no can do:
1018
+ throw ctxt.mappingException(_valueClass, t);
1019
+ }
1020
+ }
1021
+
1022
+ /**
1023
+ * This is bit trickier to implement efficiently, while avoiding
1024
+ * overflow problems.
1025
+ */
1026
+ @JacksonStdImpl
1027
+ public static class BigIntegerDeserializer
1028
+ extends StdScalarDeserializer<BigInteger>
1029
+ {
1030
+ public BigIntegerDeserializer() { super(BigInteger.class); }
1031
+
1032
+ @Override
1033
+ public BigInteger deserialize(JsonParser jp, DeserializationContext ctxt)
1034
+ throws IOException, JsonProcessingException
1035
+ {
1036
+ JsonToken t = jp.getCurrentToken();
1037
+ String text;
1038
+
1039
+ if (t == JsonToken.VALUE_NUMBER_INT) {
1040
+ switch (jp.getNumberType()) {
1041
+ case INT:
1042
+ case LONG:
1043
+ return BigInteger.valueOf(jp.getLongValue());
1044
+ }
1045
+ } else if (t == JsonToken.VALUE_NUMBER_FLOAT) {
1046
+ /* Whether to fail if there's non-integer part?
1047
+ * Could do by calling BigDecimal.toBigIntegerExact()
1048
+ */
1049
+ return jp.getDecimalValue().toBigInteger();
1050
+ } else if (t != JsonToken.VALUE_STRING) { // let's do implicit re-parse
1051
+ // String is ok too, can easily convert; otherwise, no can do:
1052
+ throw ctxt.mappingException(_valueClass, t);
1053
+ }
1054
+ text = jp.getText().trim();
1055
+ if (text.length() == 0) {
1056
+ return null;
1057
+ }
1058
+ try {
1059
+ return new BigInteger(text);
1060
+ } catch (IllegalArgumentException iae) {
1061
+ throw ctxt.weirdStringException(_valueClass, "not a valid representation");
1062
+ }
1063
+ }
1064
+ }
1065
+
1066
+ /*
1067
+ /****************************************************
1068
+ /* Then trickier things: Date/Calendar types
1069
+ /****************************************************
1070
+ */
1071
+
1072
+ /**
1073
+ * Compared to plain old {@link java.util.Date}, SQL version is easier
1074
+ * to deal with: mostly because it is more limited.
1075
+ */
1076
+ public static class SqlDateDeserializer
1077
+ extends StdScalarDeserializer<java.sql.Date>
1078
+ {
1079
+ public SqlDateDeserializer() { super(java.sql.Date.class); }
1080
+
1081
+ @Override
1082
+ public java.sql.Date deserialize(JsonParser jp, DeserializationContext ctxt)
1083
+ throws IOException, JsonProcessingException
1084
+ {
1085
+ Date d = _parseDate(jp, ctxt);
1086
+ return (d == null) ? null : new java.sql.Date(d.getTime());
1087
+ }
1088
+ }
1089
+
1090
+ /*
1091
+ /****************************************************
1092
+ /* And other oddities
1093
+ /****************************************************
1094
+ */
1095
+
1096
+ public static class StackTraceElementDeserializer
1097
+ extends StdScalarDeserializer<StackTraceElement>
1098
+ {
1099
+ public StackTraceElementDeserializer() { super(StackTraceElement.class); }
1100
+
1101
+ @Override
1102
+ public StackTraceElement deserialize(JsonParser jp, DeserializationContext ctxt)
1103
+ throws IOException, JsonProcessingException
1104
+ {
1105
+ JsonToken t = jp.getCurrentToken();
1106
+ // Must get an Object
1107
+ if (t == JsonToken.START_OBJECT) {
1108
+ String className = "", methodName = "", fileName = "";
1109
+ int lineNumber = -1;
1110
+
1111
+ while ((t = jp.nextValue()) != JsonToken.END_OBJECT) {
1112
+ String propName = jp.getCurrentName();
1113
+ if ("className".equals(propName)) {
1114
+ className = jp.getText();
1115
+ } else if ("fileName".equals(propName)) {
1116
+ fileName = jp.getText();
1117
+ } else if ("lineNumber".equals(propName)) {
1118
+ if (t.isNumeric()) {
1119
+ lineNumber = jp.getIntValue();
1120
+ } else {
1121
+ throw JsonMappingException.from(jp, "Non-numeric token ("+t+") for property 'lineNumber'");
1122
+ }
1123
+ } else if ("methodName".equals(propName)) {
1124
+ methodName = jp.getText();
1125
+ } else if ("nativeMethod".equals(propName)) {
1126
+ // no setter, not passed via constructor: ignore
1127
+ } else {
1128
+ handleUnknownProperty(jp, ctxt, _valueClass, propName);
1129
+ }
1130
+ }
1131
+ return new StackTraceElement(className, methodName, fileName, lineNumber);
1132
+ }
1133
+ throw ctxt.mappingException(_valueClass, t);
1134
+ }
1135
+ }
1136
+ }