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,206 @@
1
+ package sh.calaba.org.codehaus.jackson.map.module;
2
+
3
+ import java.util.*;
4
+
5
+ import sh.calaba.org.codehaus.jackson.map.*;
6
+ import sh.calaba.org.codehaus.jackson.map.type.ArrayType;
7
+ import sh.calaba.org.codehaus.jackson.map.type.ClassKey;
8
+ import sh.calaba.org.codehaus.jackson.map.type.CollectionLikeType;
9
+ import sh.calaba.org.codehaus.jackson.map.type.CollectionType;
10
+ import sh.calaba.org.codehaus.jackson.map.type.MapLikeType;
11
+ import sh.calaba.org.codehaus.jackson.map.type.MapType;
12
+ import sh.calaba.org.codehaus.jackson.type.JavaType;
13
+
14
+ /**
15
+ * Simple implementation {@link Serializers} which allows registration of
16
+ * serializers based on raw (type erased class).
17
+ * It can work well for basic bean and scalar type serializers, but is not
18
+ * a good fit for handling generic types (like {@link Map}s and {@link Collection}s).
19
+ *<p>
20
+ * Type registrations are assumed to be general; meaning that registration of serializer
21
+ * for a super type will also be used for handling subtypes, unless an exact match
22
+ * is found first. As an example, handler for {@link CharSequence} would also be used
23
+ * serializing {@link StringBuilder} instances, unless a direct mapping was found.
24
+ *
25
+ * @since 1.7
26
+ */
27
+ public class SimpleSerializers extends Serializers.Base
28
+ {
29
+ /**
30
+ * Class-based mappings that are used both for exact and
31
+ * sub-class matches.
32
+ */
33
+ protected HashMap<ClassKey,JsonSerializer<?>> _classMappings = null;
34
+
35
+ /**
36
+ * Interface-based matches.
37
+ */
38
+ protected HashMap<ClassKey,JsonSerializer<?>> _interfaceMappings = null;
39
+
40
+ /*
41
+ /**********************************************************
42
+ /* Life-cycle, construction and configuring
43
+ /**********************************************************
44
+ */
45
+
46
+ public SimpleSerializers() { }
47
+
48
+ /**
49
+ * Method for adding given serializer for type that {@link JsonSerializer#handledType}
50
+ * specifies (which MUST return a non-null class; and can NOT be {@link Object}, as a
51
+ * sanity check).
52
+ * For serializers that do not declare handled type, use the variant that takes
53
+ * two arguments.
54
+ *
55
+ * @param ser
56
+ */
57
+ public void addSerializer(JsonSerializer<?> ser)
58
+ {
59
+ // Interface to match?
60
+ Class<?> cls = ser.handledType();
61
+ if (cls == null || cls == Object.class) {
62
+ throw new IllegalArgumentException("JsonSerializer of type "+ser.getClass().getName()
63
+ +" does not define valid handledType() -- must either register with method that takes type argument "
64
+ +" or make serializer extend 'sh.calaba.org.codehaus.jackson.map.ser.std.SerializerBase'");
65
+ }
66
+ _addSerializer(cls, ser);
67
+ }
68
+
69
+ public <T> void addSerializer(Class<? extends T> type, JsonSerializer<T> ser)
70
+ {
71
+ _addSerializer(type, ser);
72
+ }
73
+
74
+ private void _addSerializer(Class<?> cls, JsonSerializer<?> ser)
75
+ {
76
+ ClassKey key = new ClassKey(cls);
77
+ // Interface or class type?
78
+ if (cls.isInterface()) {
79
+ if (_interfaceMappings == null) {
80
+ _interfaceMappings = new HashMap<ClassKey,JsonSerializer<?>>();
81
+ }
82
+ _interfaceMappings.put(key, ser);
83
+ } else { // nope, class:
84
+ if (_classMappings == null) {
85
+ _classMappings = new HashMap<ClassKey,JsonSerializer<?>>();
86
+ }
87
+ _classMappings.put(key, ser);
88
+ }
89
+ }
90
+
91
+ /*
92
+ /**********************************************************
93
+ /* Serializers implementation
94
+ /**********************************************************
95
+ */
96
+
97
+ @Override
98
+ public JsonSerializer<?> findSerializer(SerializationConfig config, JavaType type,
99
+ BeanDescription beanDesc, BeanProperty property)
100
+ {
101
+ Class<?> cls = type.getRawClass();
102
+ ClassKey key = new ClassKey(cls);
103
+ JsonSerializer<?> ser = null;
104
+
105
+ // First: direct match?
106
+ if (cls.isInterface()) {
107
+ if (_interfaceMappings != null) {
108
+ ser = _interfaceMappings.get(key);
109
+ if (ser != null) {
110
+ return ser;
111
+ }
112
+ }
113
+ } else {
114
+ if (_classMappings != null) {
115
+ ser = _classMappings.get(key);
116
+ if (ser != null) {
117
+ return ser;
118
+ }
119
+ // If not direct match, maybe super-class match?
120
+ for (Class<?> curr = cls; (curr != null); curr = curr.getSuperclass()) {
121
+ key.reset(curr);
122
+ ser = _classMappings.get(key);
123
+ if (ser != null) {
124
+ return ser;
125
+ }
126
+ }
127
+ }
128
+ }
129
+ // No direct match? How about super-interfaces?
130
+ if (_interfaceMappings != null) {
131
+ ser = _findInterfaceMapping(cls, key);
132
+ if (ser != null) {
133
+ return ser;
134
+ }
135
+ // still no matches? Maybe interfaces of super classes
136
+ if (!cls.isInterface()) {
137
+ while ((cls = cls.getSuperclass()) != null) {
138
+ ser = _findInterfaceMapping(cls, key);
139
+ if (ser != null) {
140
+ return ser;
141
+ }
142
+ }
143
+ }
144
+ }
145
+ return null;
146
+ }
147
+
148
+ @Override
149
+ public JsonSerializer<?> findArraySerializer(SerializationConfig config,
150
+ ArrayType type, BeanDescription beanDesc, BeanProperty property,
151
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) {
152
+ return findSerializer(config, type, beanDesc, property);
153
+ }
154
+
155
+ @Override
156
+ public JsonSerializer<?> findCollectionSerializer(SerializationConfig config,
157
+ CollectionType type, BeanDescription beanDesc, BeanProperty property,
158
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) {
159
+ return findSerializer(config, type, beanDesc, property);
160
+ }
161
+
162
+ @Override
163
+ public JsonSerializer<?> findCollectionLikeSerializer(SerializationConfig config,
164
+ CollectionLikeType type, BeanDescription beanDesc, BeanProperty property,
165
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) {
166
+ return findSerializer(config, type, beanDesc, property);
167
+ }
168
+
169
+ @Override
170
+ public JsonSerializer<?> findMapSerializer(SerializationConfig config,
171
+ MapType type, BeanDescription beanDesc, BeanProperty property,
172
+ JsonSerializer<Object> keySerializer,
173
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) {
174
+ return findSerializer(config, type, beanDesc, property);
175
+ }
176
+
177
+ @Override
178
+ public JsonSerializer<?> findMapLikeSerializer(SerializationConfig config,
179
+ MapLikeType type, BeanDescription beanDesc, BeanProperty property,
180
+ JsonSerializer<Object> keySerializer,
181
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) {
182
+ return findSerializer(config, type, beanDesc, property);
183
+ }
184
+
185
+ /*
186
+ /**********************************************************
187
+ /* Internal methods
188
+ /**********************************************************
189
+ */
190
+
191
+ protected JsonSerializer<?> _findInterfaceMapping(Class<?> cls, ClassKey key)
192
+ {
193
+ for (Class<?> iface : cls.getInterfaces()) {
194
+ key.reset(iface);
195
+ JsonSerializer<?> ser = _interfaceMappings.get(key);
196
+ if (ser != null) {
197
+ return ser;
198
+ }
199
+ ser = _findInterfaceMapping(iface, key);
200
+ if (ser != null) {
201
+ return ser;
202
+ }
203
+ }
204
+ return null;
205
+ }
206
+ }
@@ -0,0 +1,45 @@
1
+ package sh.calaba.org.codehaus.jackson.map.module;
2
+
3
+ import java.util.HashMap;
4
+
5
+ import sh.calaba.org.codehaus.jackson.map.BeanDescription;
6
+ import sh.calaba.org.codehaus.jackson.map.DeserializationConfig;
7
+ import sh.calaba.org.codehaus.jackson.map.deser.ValueInstantiator;
8
+ import sh.calaba.org.codehaus.jackson.map.deser.ValueInstantiators;
9
+ import sh.calaba.org.codehaus.jackson.map.type.ClassKey;
10
+
11
+ public class SimpleValueInstantiators
12
+ extends ValueInstantiators.Base
13
+ {
14
+ /**
15
+ * Mappings from raw (type-erased, i.e. non-generic) types
16
+ * to matching {@link ValueInstantiator} instances.
17
+ */
18
+ protected HashMap<ClassKey,ValueInstantiator> _classMappings;
19
+
20
+ /*
21
+ /**********************************************************
22
+ /* Life-cycle, construction and configuring
23
+ /**********************************************************
24
+ */
25
+
26
+ public SimpleValueInstantiators()
27
+ {
28
+ _classMappings = new HashMap<ClassKey,ValueInstantiator>();
29
+ }
30
+
31
+ public SimpleValueInstantiators addValueInstantiator(Class<?> forType,
32
+ ValueInstantiator inst)
33
+ {
34
+ _classMappings.put(new ClassKey(forType), inst);
35
+ return this;
36
+ }
37
+
38
+ @Override
39
+ public ValueInstantiator findValueInstantiator(DeserializationConfig config,
40
+ BeanDescription beanDesc, ValueInstantiator defaultInstantiator)
41
+ {
42
+ ValueInstantiator inst = _classMappings.get(new ClassKey(beanDesc.getBeanClass()));
43
+ return (inst == null) ? defaultInstantiator : inst;
44
+ }
45
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Package that contains classes and interfaces to help implement
3
+ * custom extension {@link sh.calaba.org.codehaus.jackson.map.Module}s
4
+ * (which are registered using
5
+ * {@link sh.calaba.org.codehaus.jackson.map.ObjectMapper#registerModule}.
6
+ *<p>
7
+ * Note that classes in the package only support registering
8
+ * handlers for non-generic types (types without type
9
+ * parameterization) -- hence "simple" -- which works for
10
+ * many cases, but not all. So if you will need to register
11
+ * handlers for generic types, you will usually need to either
12
+ * sub-class handlers, or implement/extend base types directly.
13
+ *
14
+ * @since 1.7
15
+ */
16
+ package sh.calaba.org.codehaus.jackson.map.module;
@@ -0,0 +1,34 @@
1
+ /**
2
+ Contains basic mapper (conversion) functionality that
3
+ allows for converting between regular streaming json content and
4
+ Java objects (beans or Tree Model: support for both is via
5
+ {@link sh.calaba.org.codehaus.jackson.map.ObjectMapper} class, as well
6
+ as convenience methods included in
7
+ {@link sh.calaba.org.codehaus.jackson.JsonParser}
8
+ <p>
9
+ Object mapper will convert Json content to ant from
10
+ basic Java wrapper types (Integer, Boolean, Double),
11
+ Collection types (List, Map), Java Beans,
12
+ Strings and nulls.
13
+ <p>
14
+ Tree mapper builds dynamically typed tree of <code>JsonNode</code>s
15
+ from Json content (and writes such trees as Json),
16
+ similar to how DOM model works with xml.
17
+ Main benefits over Object mapping are:
18
+ <ul>
19
+ <li>No null checks are needed (dummy
20
+ nodes are created as necessary to represent "missing" Object fields
21
+ and Array elements)
22
+ </li>
23
+ <li>No type casts are usually needed: all public access methods are defined
24
+ in basic JsonNode class, and when "incompatible" method (such as Array
25
+ element access on, say, Boolean node) is used, returned node is
26
+ virtual "missing" node.
27
+ </li>
28
+ </ul>
29
+ Because of its dynamic nature, Tree mapping is often convenient
30
+ for basic path access and tree navigation, where structure of
31
+ the resulting tree is known in advance.
32
+ */
33
+
34
+ package sh.calaba.org.codehaus.jackson.map;
@@ -0,0 +1,48 @@
1
+ package sh.calaba.org.codehaus.jackson.map.ser;
2
+
3
+ import java.lang.reflect.Method;
4
+ import java.util.Map;
5
+
6
+ import sh.calaba.org.codehaus.jackson.*;
7
+ import sh.calaba.org.codehaus.jackson.map.*;
8
+ import sh.calaba.org.codehaus.jackson.map.introspect.AnnotatedMethod;
9
+ import sh.calaba.org.codehaus.jackson.map.ser.std.MapSerializer;
10
+
11
+ /**
12
+ * Class similar to {@link BeanPropertyWriter}, but that will be used
13
+ * for serializing {@link sh.calaba.org.codehaus.jackson.annotate.JsonAnyGetter} annotated
14
+ * (Map) properties
15
+ *
16
+ * @since 1.6
17
+ */
18
+ public class AnyGetterWriter
19
+ {
20
+ protected final Method _anyGetter;
21
+
22
+ protected final MapSerializer _serializer;
23
+
24
+ public AnyGetterWriter(AnnotatedMethod anyGetter, MapSerializer serializer)
25
+ {
26
+ _anyGetter = anyGetter.getAnnotated();
27
+ _serializer = serializer;
28
+ }
29
+
30
+ public void getAndSerialize(Object bean, JsonGenerator jgen, SerializerProvider provider)
31
+ throws Exception
32
+ {
33
+ Object value = _anyGetter.invoke(bean);
34
+ if (value == null) {
35
+ return;
36
+ }
37
+ if (!(value instanceof Map<?,?>)) {
38
+ throw new JsonMappingException("Value returned by 'any-getter' ("+_anyGetter.getName()+"()) not java.util.Map but "
39
+ +value.getClass().getName());
40
+ }
41
+ _serializer.serializeFields((Map<?,?>) value, jgen, provider);
42
+ }
43
+
44
+ public void resolve(SerializerProvider provider) throws JsonMappingException
45
+ {
46
+ _serializer.resolve(provider);
47
+ }
48
+ }
@@ -0,0 +1,7 @@
1
+ package sh.calaba.org.codehaus.jackson.map.ser;
2
+
3
+ /**
4
+ * @deprecated Since 1.9 use {@link sh.calaba.org.codehaus.jackson.map.ser.std.StdArraySerializers}
5
+ */
6
+ @Deprecated
7
+ public class ArraySerializers extends sh.calaba.org.codehaus.jackson.map.ser.std.StdArraySerializers { }
@@ -0,0 +1,806 @@
1
+ package sh.calaba.org.codehaus.jackson.map.ser;
2
+
3
+ import java.lang.reflect.Method;
4
+ import java.math.BigDecimal;
5
+ import java.math.BigInteger;
6
+ import java.net.InetAddress;
7
+ import java.util.*;
8
+
9
+ import sh.calaba.org.codehaus.jackson.map.*;
10
+ import sh.calaba.org.codehaus.jackson.map.annotate.JsonSerialize;
11
+ import sh.calaba.org.codehaus.jackson.map.ext.OptionalHandlerFactory;
12
+ import sh.calaba.org.codehaus.jackson.map.introspect.*;
13
+ import sh.calaba.org.codehaus.jackson.map.jsontype.NamedType;
14
+ import sh.calaba.org.codehaus.jackson.map.jsontype.TypeResolverBuilder;
15
+ import sh.calaba.org.codehaus.jackson.map.ser.std.CalendarSerializer;
16
+ import sh.calaba.org.codehaus.jackson.map.ser.std.DateSerializer;
17
+ import sh.calaba.org.codehaus.jackson.map.ser.std.EnumMapSerializer;
18
+ import sh.calaba.org.codehaus.jackson.map.ser.std.EnumSerializer;
19
+ import sh.calaba.org.codehaus.jackson.map.ser.std.IndexedStringListSerializer;
20
+ import sh.calaba.org.codehaus.jackson.map.ser.std.InetAddressSerializer;
21
+ import sh.calaba.org.codehaus.jackson.map.ser.std.JsonValueSerializer;
22
+ import sh.calaba.org.codehaus.jackson.map.ser.std.MapSerializer;
23
+ import sh.calaba.org.codehaus.jackson.map.ser.std.NullSerializer;
24
+ import sh.calaba.org.codehaus.jackson.map.ser.std.ObjectArraySerializer;
25
+ import sh.calaba.org.codehaus.jackson.map.ser.std.SerializableSerializer;
26
+ import sh.calaba.org.codehaus.jackson.map.ser.std.SerializableWithTypeSerializer;
27
+ import sh.calaba.org.codehaus.jackson.map.ser.std.StdArraySerializers;
28
+ import sh.calaba.org.codehaus.jackson.map.ser.std.StdContainerSerializers;
29
+ import sh.calaba.org.codehaus.jackson.map.ser.std.StdJdkSerializers;
30
+ import sh.calaba.org.codehaus.jackson.map.ser.std.StringCollectionSerializer;
31
+ import sh.calaba.org.codehaus.jackson.map.ser.std.StringSerializer;
32
+ import sh.calaba.org.codehaus.jackson.map.ser.std.TimeZoneSerializer;
33
+ import sh.calaba.org.codehaus.jackson.map.ser.std.ToStringSerializer;
34
+ import sh.calaba.org.codehaus.jackson.map.ser.std.TokenBufferSerializer;
35
+ import sh.calaba.org.codehaus.jackson.map.type.*;
36
+ import sh.calaba.org.codehaus.jackson.map.util.ClassUtil;
37
+ import sh.calaba.org.codehaus.jackson.map.util.EnumValues;
38
+ import sh.calaba.org.codehaus.jackson.type.JavaType;
39
+ import sh.calaba.org.codehaus.jackson.util.TokenBuffer;
40
+
41
+ /**
42
+ * Factory class that can provide serializers for standard JDK classes,
43
+ * as well as custom classes that extend standard classes or implement
44
+ * one of "well-known" interfaces (such as {@link java.util.Collection}).
45
+ *<p>
46
+ * Since all the serializers are eagerly instantiated, and there is
47
+ * no additional introspection or customizability of these types,
48
+ * this factory is essentially stateless.
49
+ */
50
+ public abstract class BasicSerializerFactory
51
+ extends SerializerFactory
52
+ {
53
+
54
+ /*
55
+ /**********************************************************
56
+ /* Configuration, lookup tables/maps
57
+ /**********************************************************
58
+ */
59
+
60
+ /**
61
+ * Since these are all JDK classes, we shouldn't have to worry
62
+ * about ClassLoader used to load them. Rather, we can just
63
+ * use the class name, and keep things simple and efficient.
64
+ */
65
+ protected final static HashMap<String, JsonSerializer<?>> _concrete =
66
+ new HashMap<String, JsonSerializer<?>>();
67
+
68
+ /**
69
+ * Actually it may not make much sense to eagerly instantiate all
70
+ * kinds of serializers: so this Map actually contains class references,
71
+ * not instances
72
+ *
73
+ * @since 1.6
74
+ */
75
+ protected final static HashMap<String, Class<? extends JsonSerializer<?>>> _concreteLazy =
76
+ new HashMap<String, Class<? extends JsonSerializer<?>>>();
77
+
78
+ static {
79
+ /* String and string-like types (note: date types explicitly
80
+ * not included -- can use either textual or numeric serialization)
81
+ */
82
+ _concrete.put(String.class.getName(), new StringSerializer());
83
+ final ToStringSerializer sls = ToStringSerializer.instance;
84
+ _concrete.put(StringBuffer.class.getName(), sls);
85
+ _concrete.put(StringBuilder.class.getName(), sls);
86
+ _concrete.put(Character.class.getName(), sls);
87
+ _concrete.put(Character.TYPE.getName(), sls);
88
+
89
+ // Primitives/wrappers for primitives (primitives needed for Beans)
90
+ _concrete.put(Boolean.TYPE.getName(), new StdSerializers.BooleanSerializer(true));
91
+ _concrete.put(Boolean.class.getName(), new StdSerializers.BooleanSerializer(false));
92
+ final JsonSerializer<?> intS = new StdSerializers.IntegerSerializer();
93
+ _concrete.put(Integer.class.getName(), intS);
94
+ _concrete.put(Integer.TYPE.getName(), intS);
95
+ _concrete.put(Long.class.getName(), StdSerializers.LongSerializer.instance);
96
+ _concrete.put(Long.TYPE.getName(), StdSerializers.LongSerializer.instance);
97
+ _concrete.put(Byte.class.getName(), StdSerializers.IntLikeSerializer.instance);
98
+ _concrete.put(Byte.TYPE.getName(), StdSerializers.IntLikeSerializer.instance);
99
+ _concrete.put(Short.class.getName(), StdSerializers.IntLikeSerializer.instance);
100
+ _concrete.put(Short.TYPE.getName(), StdSerializers.IntLikeSerializer.instance);
101
+
102
+ // Numbers, limited length floating point
103
+ _concrete.put(Float.class.getName(), StdSerializers.FloatSerializer.instance);
104
+ _concrete.put(Float.TYPE.getName(), StdSerializers.FloatSerializer.instance);
105
+ _concrete.put(Double.class.getName(), StdSerializers.DoubleSerializer.instance);
106
+ _concrete.put(Double.TYPE.getName(), StdSerializers.DoubleSerializer.instance);
107
+
108
+ // Other numbers, more complicated
109
+ final JsonSerializer<?> ns = new StdSerializers.NumberSerializer();
110
+ _concrete.put(BigInteger.class.getName(), ns);
111
+ _concrete.put(BigDecimal.class.getName(), ns);
112
+
113
+ // Other discrete non-container types:
114
+ // First, Date/Time zoo:
115
+ _concrete.put(Calendar.class.getName(), CalendarSerializer.instance);
116
+ DateSerializer dateSer = DateSerializer.instance;
117
+ _concrete.put(java.util.Date.class.getName(), dateSer);
118
+ // note: timestamps are very similar to java.util.Date, thus serialized as such
119
+ _concrete.put(java.sql.Timestamp.class.getName(), dateSer);
120
+ _concrete.put(java.sql.Date.class.getName(), new StdSerializers.SqlDateSerializer());
121
+ _concrete.put(java.sql.Time.class.getName(), new StdSerializers.SqlTimeSerializer());
122
+
123
+ // And then other standard non-structured JDK types
124
+ for (Map.Entry<Class<?>,Object> en : new StdJdkSerializers().provide()) {
125
+ Object value = en.getValue();
126
+ if (value instanceof JsonSerializer<?>) {
127
+ _concrete.put(en.getKey().getName(), (JsonSerializer<?>) value);
128
+ } else if (value instanceof Class<?>) {
129
+ @SuppressWarnings("unchecked")
130
+ Class<? extends JsonSerializer<?>> cls = (Class<? extends JsonSerializer<?>>) value;
131
+ _concreteLazy.put(en.getKey().getName(), cls);
132
+ } else { // should never happen, but:
133
+ throw new IllegalStateException("Internal error: unrecognized value of type "+en.getClass().getName());
134
+ }
135
+ }
136
+
137
+ // Jackson-specific type(s)
138
+ // (Q: can this ever be sub-classed?)
139
+ _concreteLazy.put(TokenBuffer.class.getName(), TokenBufferSerializer.class);
140
+ }
141
+
142
+ protected final static HashMap<String, JsonSerializer<?>> _arraySerializers =
143
+ new HashMap<String, JsonSerializer<?>>();
144
+ static {
145
+ // Arrays of various types (including common object types)
146
+ _arraySerializers.put(boolean[].class.getName(), new StdArraySerializers.BooleanArraySerializer());
147
+ _arraySerializers.put(byte[].class.getName(), new StdArraySerializers.ByteArraySerializer());
148
+ _arraySerializers.put(char[].class.getName(), new StdArraySerializers.CharArraySerializer());
149
+ _arraySerializers.put(short[].class.getName(), new StdArraySerializers.ShortArraySerializer());
150
+ _arraySerializers.put(int[].class.getName(), new StdArraySerializers.IntArraySerializer());
151
+ _arraySerializers.put(long[].class.getName(), new StdArraySerializers.LongArraySerializer());
152
+ _arraySerializers.put(float[].class.getName(), new StdArraySerializers.FloatArraySerializer());
153
+ _arraySerializers.put(double[].class.getName(), new StdArraySerializers.DoubleArraySerializer());
154
+ }
155
+
156
+ /**
157
+ * Helper object used to deal with serializers for optional JDK types (like ones
158
+ * omitted from GAE, Android)
159
+ */
160
+ protected OptionalHandlerFactory optionalHandlers = OptionalHandlerFactory.instance;
161
+
162
+ /*
163
+ /**********************************************************
164
+ /* Life cycle
165
+ /**********************************************************
166
+ */
167
+
168
+ /**
169
+ * We will provide default constructor to allow sub-classing,
170
+ * but make it protected so that no non-singleton instances of
171
+ * the class will be instantiated.
172
+ */
173
+ protected BasicSerializerFactory() { }
174
+
175
+ /*
176
+ /**********************************************************
177
+ /* SerializerFactory impl
178
+ /**********************************************************
179
+ */
180
+
181
+ // Implemented by sub-classes
182
+ @Override
183
+ public abstract JsonSerializer<Object> createSerializer(SerializationConfig config, JavaType type,
184
+ BeanProperty property)
185
+ throws JsonMappingException;
186
+
187
+ /**
188
+ * Method called to construct a type serializer for values with given declared
189
+ * base type. This is called for values other than those of bean property
190
+ * types.
191
+ */
192
+ @Override
193
+ public TypeSerializer createTypeSerializer(SerializationConfig config, JavaType baseType,
194
+ BeanProperty property)
195
+ {
196
+ BasicBeanDescription bean = config.introspectClassAnnotations(baseType.getRawClass());
197
+ AnnotatedClass ac = bean.getClassInfo();
198
+ AnnotationIntrospector ai = config.getAnnotationIntrospector();
199
+ TypeResolverBuilder<?> b = ai.findTypeResolver(config, ac, baseType);
200
+ /* Ok: if there is no explicit type info handler, we may want to
201
+ * use a default. If so, config object knows what to use.
202
+ */
203
+ Collection<NamedType> subtypes = null;
204
+ if (b == null) {
205
+ b = config.getDefaultTyper(baseType);
206
+ } else {
207
+ subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(ac, config, ai);
208
+ }
209
+ return (b == null) ? null : b.buildTypeSerializer(config, baseType, subtypes, property);
210
+ }
211
+
212
+
213
+ /*
214
+ /**********************************************************
215
+ /* Additional API for other core classes
216
+ /**********************************************************
217
+ */
218
+
219
+ public final JsonSerializer<?> getNullSerializer() {
220
+ return NullSerializer.instance;
221
+ }
222
+
223
+ protected abstract Iterable<Serializers> customSerializers();
224
+
225
+ /*
226
+ /**********************************************************
227
+ /* Overridable secondary serializer accessor methods
228
+ /**********************************************************
229
+ */
230
+
231
+ /**
232
+ * Method that will use fast lookup (and identity comparison) methods to
233
+ * see if we know serializer to use for given type.
234
+ */
235
+ public final JsonSerializer<?> findSerializerByLookup(JavaType type, SerializationConfig config,
236
+ BasicBeanDescription beanDesc, BeanProperty property,
237
+ boolean staticTyping)
238
+ {
239
+ Class<?> raw = type.getRawClass();
240
+ String clsName = raw.getName();
241
+ JsonSerializer<?> ser = _concrete.get(clsName);
242
+ if (ser != null) {
243
+ return ser;
244
+ }
245
+ Class<? extends JsonSerializer<?>> serClass = _concreteLazy.get(clsName);
246
+ if (serClass != null) {
247
+ try {
248
+ return serClass.newInstance();
249
+ } catch (Exception e) {
250
+ throw new IllegalStateException("Failed to instantiate standard serializer (of type "+serClass.getName()+"): "
251
+ +e.getMessage(), e);
252
+ }
253
+ }
254
+ return null;
255
+ }
256
+
257
+ /**
258
+ * Method for checking if we can determine serializer to use based on set of
259
+ * known primary types, checking for set of known base types (exact matches
260
+ * having been compared against with <code>findSerializerByLookup</code>).
261
+ * This does not include "secondary" interfaces, but
262
+ * mostly concrete or abstract base classes.
263
+ */
264
+ @SuppressWarnings("deprecation")
265
+ public final JsonSerializer<?> findSerializerByPrimaryType(JavaType type, SerializationConfig config,
266
+ BasicBeanDescription beanDesc, BeanProperty property,
267
+ boolean staticTyping)
268
+ throws JsonMappingException
269
+ {
270
+ Class<?> raw = type.getRawClass();
271
+ // First: JsonSerializable and related
272
+ if (JsonSerializable.class.isAssignableFrom(raw)) {
273
+ if (JsonSerializableWithType.class.isAssignableFrom(raw)) {
274
+ return SerializableWithTypeSerializer.instance;
275
+ }
276
+ return SerializableSerializer.instance;
277
+ }
278
+ // Second: as per [JACKSON-193] consider @JsonValue for any types:
279
+ AnnotatedMethod valueMethod = beanDesc.findJsonValueMethod();
280
+ if (valueMethod != null) {
281
+ // [JACKSON-586]: need to ensure accessibility of method
282
+ Method m = valueMethod.getAnnotated();
283
+ if (config.isEnabled(SerializationConfig.Feature.CAN_OVERRIDE_ACCESS_MODIFIERS)) {
284
+ ClassUtil.checkAndFixAccess(m);
285
+ }
286
+ JsonSerializer<Object> ser = findSerializerFromAnnotation(config, valueMethod, property);
287
+ return new JsonValueSerializer(m, ser, property);
288
+ }
289
+
290
+ // One unfortunate special case, as per [JACKSON-484]
291
+ if (InetAddress.class.isAssignableFrom(raw)) {
292
+ return InetAddressSerializer.instance;
293
+ }
294
+ // ... and another one, [JACKSON-522], for TimeZone
295
+ if (TimeZone.class.isAssignableFrom(raw)) {
296
+ return TimeZoneSerializer.instance;
297
+ }
298
+ // and yet one more [JACKSON-789]
299
+ if (java.nio.charset.Charset.class.isAssignableFrom(raw)) {
300
+ return ToStringSerializer.instance;
301
+ }
302
+
303
+ // Then check for optional/external serializers [JACKSON-386]
304
+ JsonSerializer<?> ser = optionalHandlers.findSerializer(config, type);
305
+ if (ser != null) {
306
+ return ser;
307
+ }
308
+
309
+ if (Number.class.isAssignableFrom(raw)) {
310
+ return StdSerializers.NumberSerializer.instance;
311
+ }
312
+ if (Enum.class.isAssignableFrom(raw)) {
313
+ @SuppressWarnings("unchecked")
314
+ Class<Enum<?>> enumClass = (Class<Enum<?>>) raw;
315
+ return EnumSerializer.construct(enumClass, config, beanDesc);
316
+ }
317
+ if (Calendar.class.isAssignableFrom(raw)) {
318
+ return CalendarSerializer.instance;
319
+ }
320
+ if (java.util.Date.class.isAssignableFrom(raw)) {
321
+ return DateSerializer.instance;
322
+ }
323
+ return null;
324
+ }
325
+
326
+ /**
327
+ * Reflection-based serialized find method, which checks if
328
+ * given class implements one of recognized "add-on" interfaces.
329
+ * Add-on here means a role that is usually or can be a secondary
330
+ * trait: for example,
331
+ * bean classes may implement {@link Iterable}, but their main
332
+ * function is usually something else. The reason for
333
+ */
334
+ public final JsonSerializer<?> findSerializerByAddonType(SerializationConfig config, JavaType javaType,
335
+ BasicBeanDescription beanDesc, BeanProperty property,
336
+ boolean staticTyping)
337
+ throws JsonMappingException
338
+ {
339
+ Class<?> type = javaType.getRawClass();
340
+
341
+ // These need to be in decreasing order of specificity...
342
+ if (Iterator.class.isAssignableFrom(type)) {
343
+ return buildIteratorSerializer(config, javaType, beanDesc, property, staticTyping);
344
+ }
345
+ if (Iterable.class.isAssignableFrom(type)) {
346
+ return buildIterableSerializer(config, javaType, beanDesc, property, staticTyping);
347
+ }
348
+ if (CharSequence.class.isAssignableFrom(type)) {
349
+ return ToStringSerializer.instance;
350
+ }
351
+ return null;
352
+ }
353
+
354
+ /**
355
+ * Helper method called to check if a class or method
356
+ * has an annotation
357
+ * (@link sh.calaba.org.codehaus.jackson.map.ser.JsonSerialize#using)
358
+ * that tells the class to use for serialization.
359
+ * Returns null if no such annotation found.
360
+ */
361
+ @SuppressWarnings("unchecked")
362
+ protected JsonSerializer<Object> findSerializerFromAnnotation(SerializationConfig config, Annotated a,
363
+ BeanProperty property)
364
+ throws JsonMappingException
365
+ {
366
+ Object serDef = config.getAnnotationIntrospector().findSerializer(a);
367
+ if (serDef == null) {
368
+ return null;
369
+ }
370
+ if (serDef instanceof JsonSerializer) {
371
+ JsonSerializer<Object> ser = (JsonSerializer<Object>) serDef;
372
+ if (ser instanceof ContextualSerializer<?>) {
373
+ return ((ContextualSerializer<Object>) ser).createContextual(config, property);
374
+ }
375
+ return ser;
376
+ }
377
+ /* Alas, there's no way to force return type of "either class
378
+ * X or Y" -- need to throw an exception after the fact
379
+ */
380
+ if (!(serDef instanceof Class)) {
381
+ throw new IllegalStateException("AnnotationIntrospector returned value of type "+serDef.getClass().getName()+"; expected type JsonSerializer or Class<JsonSerializer> instead");
382
+ }
383
+ Class<?> cls = (Class<?>) serDef;
384
+ if (!JsonSerializer.class.isAssignableFrom(cls)) {
385
+ throw new IllegalStateException("AnnotationIntrospector returned Class "+cls.getName()+"; expected Class<JsonSerializer>");
386
+ }
387
+ JsonSerializer<Object> ser = config.serializerInstance(a, (Class<? extends JsonSerializer<?>>) cls);
388
+ if (ser instanceof ContextualSerializer<?>) {
389
+ return ((ContextualSerializer<Object>) ser).createContextual(config, property);
390
+ }
391
+ return ser;
392
+ }
393
+
394
+ /*
395
+ /**********************************************************
396
+ /* Factory methods, container types:
397
+ /**********************************************************
398
+ */
399
+
400
+ public JsonSerializer<?> buildContainerSerializer(SerializationConfig config, JavaType type,
401
+ BasicBeanDescription beanDesc, BeanProperty property, boolean staticTyping)
402
+ {
403
+ // Let's see what we can learn about element/content/value type, type serializer for it:
404
+ JavaType elementType = type.getContentType();
405
+ TypeSerializer elementTypeSerializer = createTypeSerializer(config, elementType, property);
406
+
407
+ // if elements have type serializer, can not force static typing:
408
+ if (elementTypeSerializer != null) {
409
+ staticTyping = false;
410
+ } else if (!staticTyping) {
411
+ staticTyping = usesStaticTyping(config, beanDesc, elementTypeSerializer, property);
412
+ }
413
+ JsonSerializer<Object> elementValueSerializer = findContentSerializer(config,
414
+ beanDesc.getClassInfo(), property);
415
+
416
+ if (type.isMapLikeType()) { // implements java.util.Map
417
+ MapLikeType mlt = (MapLikeType) type;
418
+ JsonSerializer<Object> keySerializer = findKeySerializer(config, beanDesc.getClassInfo(), property);
419
+ if (mlt.isTrueMapType()) {
420
+ return buildMapSerializer(config, (MapType) mlt, beanDesc, property, staticTyping,
421
+ keySerializer, elementTypeSerializer, elementValueSerializer);
422
+ }
423
+ return buildMapLikeSerializer(config, mlt, beanDesc, property, staticTyping,
424
+ keySerializer, elementTypeSerializer, elementValueSerializer);
425
+ }
426
+ if (type.isCollectionLikeType()) {
427
+ CollectionLikeType clt = (CollectionLikeType) type;
428
+ if (clt.isTrueCollectionType()) {
429
+ return buildCollectionSerializer(config, (CollectionType) clt, beanDesc, property, staticTyping,
430
+ elementTypeSerializer, elementValueSerializer);
431
+ }
432
+ return buildCollectionLikeSerializer(config, clt, beanDesc, property, staticTyping,
433
+ elementTypeSerializer, elementValueSerializer);
434
+ }
435
+ if (type.isArrayType()) {
436
+ return buildArraySerializer(config, (ArrayType) type, beanDesc, property, staticTyping,
437
+ elementTypeSerializer, elementValueSerializer);
438
+ }
439
+ return null;
440
+ }
441
+
442
+ /**
443
+ * Helper method that handles configuration details when constructing serializers for
444
+ * Collection and Collection-like types.
445
+ *
446
+ * @since 1.8
447
+ */
448
+ protected JsonSerializer<?> buildCollectionLikeSerializer(SerializationConfig config,
449
+ CollectionLikeType type,
450
+ BasicBeanDescription beanDesc, BeanProperty property,
451
+ boolean staticTyping,
452
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer)
453
+ {
454
+ for (Serializers serializers : customSerializers()) {
455
+ JsonSerializer<?> ser = serializers.findCollectionLikeSerializer(config, type, beanDesc, property,
456
+ elementTypeSerializer, elementValueSerializer);
457
+ if (ser != null) {
458
+ return ser;
459
+ }
460
+ }
461
+ return null;
462
+ }
463
+
464
+ /**
465
+ * Helper method that handles configuration details when constructing serializers for
466
+ * {@link java.util.List} types that support efficient by-index access
467
+ *<p>
468
+ * Note: signature changed in 1.8, to take 'staticTyping' argument
469
+ */
470
+ protected JsonSerializer<?> buildCollectionSerializer(SerializationConfig config,
471
+ CollectionType type,
472
+ BasicBeanDescription beanDesc, BeanProperty property,
473
+ boolean staticTyping,
474
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer)
475
+ {
476
+ // Module-provided custom collection serializers?
477
+ for (Serializers serializers : customSerializers()) {
478
+ JsonSerializer<?> ser = serializers.findCollectionSerializer(config, type, beanDesc, property,
479
+ elementTypeSerializer, elementValueSerializer);
480
+ if (ser != null) {
481
+ return ser;
482
+ }
483
+ }
484
+ Class<?> raw = type.getRawClass();
485
+ if (EnumSet.class.isAssignableFrom(raw)) {
486
+ return buildEnumSetSerializer(config, type, beanDesc, property, staticTyping,
487
+ elementTypeSerializer, elementValueSerializer);
488
+ }
489
+ Class<?> elementRaw = type.getContentType().getRawClass();
490
+ if (isIndexedList(raw)) {
491
+ if (elementRaw == String.class) {
492
+ return new IndexedStringListSerializer(property);
493
+ }
494
+ return StdContainerSerializers.indexedListSerializer(type.getContentType(), staticTyping,
495
+ elementTypeSerializer, property, elementValueSerializer);
496
+ }
497
+ if (elementRaw == String.class) {
498
+ return new StringCollectionSerializer(property);
499
+ }
500
+ return StdContainerSerializers.collectionSerializer(type.getContentType(), staticTyping,
501
+ elementTypeSerializer, property, elementValueSerializer);
502
+ }
503
+
504
+ protected JsonSerializer<?> buildEnumSetSerializer(SerializationConfig config, JavaType type,
505
+ BasicBeanDescription beanDesc, BeanProperty property,
506
+ boolean staticTyping,
507
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer)
508
+ {
509
+ // this may or may not be available (Class doesn't; type of field/method does)
510
+ JavaType enumType = type.getContentType();
511
+ // and even if nominally there is something, only use if it really is enum
512
+ if (!enumType.isEnumType()) {
513
+ enumType = null;
514
+ }
515
+ return StdContainerSerializers.enumSetSerializer(enumType, property);
516
+ }
517
+
518
+ /**
519
+ * @since 1.8
520
+ */
521
+ protected boolean isIndexedList(Class<?> cls)
522
+ {
523
+ return RandomAccess.class.isAssignableFrom(cls);
524
+ }
525
+
526
+ /*
527
+ /**********************************************************
528
+ /* Factory methods, for Maps
529
+ /**********************************************************
530
+ */
531
+
532
+ /**
533
+ * Helper method that handles configuration details when constructing serializers for
534
+ * all "Map-like" types; both ones that implement {@link java.util.Map} and
535
+ * ones that do not (but that have been indicated to behave like Maps).
536
+ *
537
+ * @since 1.8
538
+ */
539
+ protected JsonSerializer<?> buildMapLikeSerializer(SerializationConfig config, MapLikeType type,
540
+ BasicBeanDescription beanDesc, BeanProperty property,
541
+ boolean staticTyping,
542
+ JsonSerializer<Object> keySerializer,
543
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer)
544
+ {
545
+ for (Serializers serializers : customSerializers()) {
546
+ JsonSerializer<?> ser = serializers.findMapLikeSerializer(config, type, beanDesc, property,
547
+ keySerializer, elementTypeSerializer, elementValueSerializer);
548
+ if (ser != null) {
549
+ return ser;
550
+ }
551
+ }
552
+ return null;
553
+ }
554
+
555
+ /**
556
+ * Helper method that handles configuration details when constructing serializers for
557
+ * {@link java.util.Map} types.
558
+ *<p>
559
+ * Note: signature changed in 1.8, to take 'staticTyping' argument
560
+ */
561
+ protected JsonSerializer<?> buildMapSerializer(SerializationConfig config, MapType type,
562
+ BasicBeanDescription beanDesc, BeanProperty property,
563
+ boolean staticTyping,
564
+ JsonSerializer<Object> keySerializer,
565
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer)
566
+ {
567
+ for (Serializers serializers : customSerializers()) {
568
+ JsonSerializer<?> ser = serializers.findMapSerializer(config, type, beanDesc, property,
569
+ keySerializer, elementTypeSerializer, elementValueSerializer);
570
+ if (ser != null) {
571
+ return ser;
572
+ }
573
+ }
574
+ if (EnumMap.class.isAssignableFrom(type.getRawClass())) {
575
+ return buildEnumMapSerializer(config, type, beanDesc, property, staticTyping,
576
+ elementTypeSerializer, elementValueSerializer);
577
+ }
578
+ return MapSerializer.construct(config.getAnnotationIntrospector().findPropertiesToIgnore(beanDesc.getClassInfo()),
579
+ type, staticTyping, elementTypeSerializer, property,
580
+ keySerializer, elementValueSerializer);
581
+ }
582
+
583
+ /**
584
+ * Helper method that handles configuration details when constructing serializers for
585
+ * {@link java.util.EnumMap} types.
586
+ *<p>
587
+ * Note: signature changed in 1.8, to take 'staticTyping' argument
588
+ */
589
+ protected JsonSerializer<?> buildEnumMapSerializer(SerializationConfig config, JavaType type,
590
+ BasicBeanDescription beanDesc, BeanProperty property,
591
+ boolean staticTyping,
592
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer)
593
+ {
594
+ JavaType keyType = type.getKeyType();
595
+ // Need to find key enum values...
596
+ EnumValues enums = null;
597
+ if (keyType.isEnumType()) { // non-enum if we got it as type erased class (from instance)
598
+ @SuppressWarnings("unchecked")
599
+ Class<Enum<?>> enumClass = (Class<Enum<?>>) keyType.getRawClass();
600
+ enums = EnumValues.construct(enumClass, config.getAnnotationIntrospector());
601
+ }
602
+ return new EnumMapSerializer(type.getContentType(), staticTyping, enums,
603
+ elementTypeSerializer, property, elementValueSerializer);
604
+ }
605
+
606
+ /*
607
+ /**********************************************************
608
+ /* Factory methods, for Arrays
609
+ /**********************************************************
610
+ */
611
+
612
+ /**
613
+ * Helper method that handles configuration details when constructing serializers for
614
+ * <code>Object[]</code> (and subtypes, except for String).
615
+ */
616
+ protected JsonSerializer<?> buildArraySerializer(SerializationConfig config, ArrayType type,
617
+ BasicBeanDescription beanDesc, BeanProperty property,
618
+ boolean staticTyping,
619
+ TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer)
620
+ {
621
+ Class<?> raw = type.getRawClass();
622
+ if (String[].class == raw) {
623
+ return new StdArraySerializers.StringArraySerializer(property);
624
+ }
625
+ // other standard types?
626
+ JsonSerializer<?> ser = _arraySerializers.get(raw.getName());
627
+ if (ser != null) {
628
+ return ser;
629
+ }
630
+ return new ObjectArraySerializer(type.getContentType(), staticTyping, elementTypeSerializer,
631
+ property, elementValueSerializer);
632
+ }
633
+
634
+ /*
635
+ /**********************************************************
636
+ /* Factory methods, for non-container types
637
+ /**********************************************************
638
+ */
639
+
640
+ protected JsonSerializer<?> buildIteratorSerializer(SerializationConfig config, JavaType type,
641
+ BasicBeanDescription beanDesc, BeanProperty property,
642
+ boolean staticTyping)
643
+ {
644
+ // if there's generic type, it'll be the first contained type
645
+ JavaType valueType = type.containedType(0);
646
+ if (valueType == null) {
647
+ valueType = TypeFactory.unknownType();
648
+ }
649
+ TypeSerializer vts = createTypeSerializer(config, valueType, property);
650
+ return StdContainerSerializers.iteratorSerializer(valueType,
651
+ usesStaticTyping(config, beanDesc, vts, property), vts, property);
652
+ }
653
+
654
+ protected JsonSerializer<?> buildIterableSerializer(SerializationConfig config, JavaType type,
655
+ BasicBeanDescription beanDesc, BeanProperty property,
656
+ boolean staticTyping)
657
+ {
658
+ // if there's generic type, it'll be the first contained type
659
+ JavaType valueType = type.containedType(0);
660
+ if (valueType == null) {
661
+ valueType = TypeFactory.unknownType();
662
+ }
663
+ TypeSerializer vts = createTypeSerializer(config, valueType, property);
664
+ return StdContainerSerializers.iterableSerializer(valueType,
665
+ usesStaticTyping(config, beanDesc, vts, property), vts, property);
666
+ }
667
+
668
+ /*
669
+ /**********************************************************
670
+ /* Other helper methods
671
+ /**********************************************************
672
+ */
673
+
674
+ /**
675
+ * Helper method used to encapsulate details of annotation-based type
676
+ * coercion
677
+ *
678
+ * @since 1.8
679
+ */
680
+ @SuppressWarnings("unchecked")
681
+ protected <T extends JavaType> T modifyTypeByAnnotation(SerializationConfig config, Annotated a, T type)
682
+ {
683
+ // first: let's check class for the instance itself:
684
+ Class<?> superclass = config.getAnnotationIntrospector().findSerializationType(a);
685
+ if (superclass != null) {
686
+ try {
687
+ type = (T) type.widenBy(superclass);
688
+ } catch (IllegalArgumentException iae) {
689
+ throw new IllegalArgumentException("Failed to widen type "+type+" with concrete-type annotation (value "+superclass.getName()+"), method '"+a.getName()+"': "+iae.getMessage());
690
+ }
691
+ }
692
+ return modifySecondaryTypesByAnnotation(config, a, type);
693
+ }
694
+
695
+ /**
696
+ * @since 1.8
697
+ */
698
+ @SuppressWarnings("unchecked")
699
+ protected static <T extends JavaType> T modifySecondaryTypesByAnnotation(SerializationConfig config, Annotated a, T type)
700
+ {
701
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
702
+ // then key class
703
+ if (type.isContainerType()) {
704
+ Class<?> keyClass = intr.findSerializationKeyType(a, type.getKeyType());
705
+ if (keyClass != null) {
706
+ // illegal to use on non-Maps
707
+ if (!(type instanceof MapType)) {
708
+ throw new IllegalArgumentException("Illegal key-type annotation: type "+type+" is not a Map type");
709
+ }
710
+ try {
711
+ type = (T) ((MapType) type).widenKey(keyClass);
712
+ } catch (IllegalArgumentException iae) {
713
+ throw new IllegalArgumentException("Failed to narrow key type "+type+" with key-type annotation ("+keyClass.getName()+"): "+iae.getMessage());
714
+ }
715
+ }
716
+
717
+ // and finally content class; only applicable to structured types
718
+ Class<?> cc = intr.findSerializationContentType(a, type.getContentType());
719
+ if (cc != null) {
720
+ try {
721
+ type = (T) type.widenContentsBy(cc);
722
+ } catch (IllegalArgumentException iae) {
723
+ throw new IllegalArgumentException("Failed to narrow content type "+type+" with content-type annotation ("+cc.getName()+"): "+iae.getMessage());
724
+ }
725
+ }
726
+ }
727
+ return type;
728
+ }
729
+
730
+ protected static JsonSerializer<Object> findKeySerializer(SerializationConfig config,
731
+ Annotated a, BeanProperty property)
732
+ {
733
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
734
+ Class<? extends JsonSerializer<?>> serClass = intr.findKeySerializer(a);
735
+ if (serClass == null || serClass == JsonSerializer.None.class) {
736
+ if (property != null) {
737
+ serClass = intr.findKeySerializer(property.getMember());
738
+ }
739
+ }
740
+ if (serClass != null && serClass != JsonSerializer.None.class) {
741
+ return config.serializerInstance(a, serClass);
742
+ }
743
+ return null;
744
+ }
745
+
746
+ protected static JsonSerializer<Object> findContentSerializer(SerializationConfig config,
747
+ Annotated a, BeanProperty property)
748
+ {
749
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
750
+ Class<? extends JsonSerializer<?>> serClass = intr.findContentSerializer(a);
751
+ if (serClass == null || serClass == JsonSerializer.None.class) {
752
+ if (property != null) {
753
+ serClass = intr.findContentSerializer(property.getMember());
754
+ }
755
+ }
756
+ if (serClass != null && serClass != JsonSerializer.None.class) {
757
+ return config.serializerInstance(a, serClass);
758
+ }
759
+ return null;
760
+ }
761
+
762
+ /**
763
+ * Helper method to check whether global settings and/or class
764
+ * annotations for the bean class indicate that static typing
765
+ * (declared types) should be used for properties.
766
+ * (instead of dynamic runtime types).
767
+ */
768
+ protected boolean usesStaticTyping(SerializationConfig config, BasicBeanDescription beanDesc,
769
+ TypeSerializer typeSer, BeanProperty property)
770
+ {
771
+ /* 16-Aug-2010, tatu: If there is a (value) type serializer, we can not force
772
+ * static typing; that would make it impossible to handle expected subtypes
773
+ */
774
+ if (typeSer != null) {
775
+ return false;
776
+ }
777
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
778
+ JsonSerialize.Typing t = intr.findSerializationTyping(beanDesc.getClassInfo());
779
+ if (t != null) {
780
+ if (t == JsonSerialize.Typing.STATIC) {
781
+ return true;
782
+ }
783
+ } else {
784
+ if (config.isEnabled(SerializationConfig.Feature.USE_STATIC_TYPING)) {
785
+ return true;
786
+ }
787
+ }
788
+ /* 11-Mar-2011, tatu: Ok. This is bit hacky, but we really need to be able to find cases
789
+ * where key and/or value serializers were specified, to force use of static typing
790
+ */
791
+ if (property != null) {
792
+ JavaType type = property.getType();
793
+ if (type.isContainerType()) {
794
+ if (intr.findSerializationContentType(property.getMember(), property.getType()) != null) {
795
+ return true;
796
+ }
797
+ if (type instanceof MapType) {
798
+ if (intr.findSerializationKeyType(property.getMember(), property.getType()) != null) {
799
+ return true;
800
+ }
801
+ }
802
+ }
803
+ }
804
+ return false;
805
+ }
806
+ }