calabash-android 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ }