calabash-android 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. data/CHANGES.txt +1 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +8 -0
  4. data/Rakefile +2 -0
  5. data/bin/calabash-android +42 -0
  6. data/bin/calabash-android-build.rb +37 -0
  7. data/bin/calabash-android-generate.rb +26 -0
  8. data/bin/calabash-android-helpers.rb +71 -0
  9. data/bin/calabash-android-run.rb +18 -0
  10. data/bin/calabash-android-setup.rb +392 -0
  11. data/calabash-android.gemspec +23 -0
  12. data/doc/calabash-android-help.txt +21 -0
  13. data/epl-v10.html +261 -0
  14. data/features-skeleton/.irbrc +16 -0
  15. data/features-skeleton/irb_android.sh +2 -0
  16. data/features-skeleton/my_first.feature +5 -0
  17. data/features-skeleton/step_definitions/calabash_steps.rb +1 -0
  18. data/features-skeleton/support/app_installation_hooks.rb +26 -0
  19. data/features-skeleton/support/app_life_cycle_hooks.rb +28 -0
  20. data/features-skeleton/support/env.rb +1 -0
  21. data/features-skeleton/support/hooks.rb +18 -0
  22. data/lib/calabash-android.rb +2 -0
  23. data/lib/calabash-android/calabash_steps.rb +18 -0
  24. data/lib/calabash-android/canned_steps.md +239 -0
  25. data/lib/calabash-android/color_helper.rb +13 -0
  26. data/lib/calabash-android/cucumber.rb +9 -0
  27. data/lib/calabash-android/lib/screenShotTaker.jar +0 -0
  28. data/lib/calabash-android/management/adb.rb +11 -0
  29. data/lib/calabash-android/management/app_installation.rb +21 -0
  30. data/lib/calabash-android/operations.rb +283 -0
  31. data/lib/calabash-android/steps/additions_manual_steps.rb +11 -0
  32. data/lib/calabash-android/steps/app_steps.rb +10 -0
  33. data/lib/calabash-android/steps/assert_steps.rb +32 -0
  34. data/lib/calabash-android/steps/check_box_steps.rb +3 -0
  35. data/lib/calabash-android/steps/context_menu_steps.rb +12 -0
  36. data/lib/calabash-android/steps/date_picker_steps.rb +8 -0
  37. data/lib/calabash-android/steps/enter_text_steps.rb +21 -0
  38. data/lib/calabash-android/steps/location_steps.rb +19 -0
  39. data/lib/calabash-android/steps/navigation_steps.rb +27 -0
  40. data/lib/calabash-android/steps/press_button_steps.rb +35 -0
  41. data/lib/calabash-android/steps/progress_steps.rb +49 -0
  42. data/lib/calabash-android/steps/rotation_steps.rb +8 -0
  43. data/lib/calabash-android/steps/screenshot_steps.rb +11 -0
  44. data/lib/calabash-android/steps/spinner_steps.rb +3 -0
  45. data/lib/calabash-android/steps/time_picker_steps.rb +8 -0
  46. data/lib/calabash-android/version.rb +6 -0
  47. data/test-server/AndroidManifest.xml +13 -0
  48. data/test-server/build.xml +192 -0
  49. data/test-server/calabash-js/src/calabash.js +125 -0
  50. data/test-server/calabash-js/src/set_text.js +132 -0
  51. data/test-server/instrumentation-backend/.classpath +10 -0
  52. data/test-server/instrumentation-backend/.project +33 -0
  53. data/test-server/instrumentation-backend/.settings/org.eclipse.jdt.core.prefs +12 -0
  54. data/test-server/instrumentation-backend/AndroidManifest.xml +15 -0
  55. data/test-server/instrumentation-backend/assets/foo.bar +0 -0
  56. data/test-server/instrumentation-backend/gen/com/lesspainful/simpleui/test/R.java +23 -0
  57. data/test-server/instrumentation-backend/libs/robotium-solo-2.5.jar +0 -0
  58. data/test-server/instrumentation-backend/project.properties +11 -0
  59. data/test-server/instrumentation-backend/res/drawable-hdpi/ic_launcher.png +0 -0
  60. data/test-server/instrumentation-backend/res/drawable-ldpi/ic_launcher.png +0 -0
  61. data/test-server/instrumentation-backend/res/drawable-mdpi/ic_launcher.png +0 -0
  62. data/test-server/instrumentation-backend/res/layout/main.xml +12 -0
  63. data/test-server/instrumentation-backend/res/values/strings.xml +7 -0
  64. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +48 -0
  65. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java +196 -0
  66. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +64 -0
  67. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java +136 -0
  68. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Action.java +11 -0
  69. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Actions.java +113 -0
  70. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NullAction.java +23 -0
  71. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java +22 -0
  72. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java +27 -0
  73. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonNumber.java +22 -0
  74. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/WaitForButton.java +47 -0
  75. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/checkbox/ToggleCheckboxNumber.java +22 -0
  76. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressText.java +22 -0
  77. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuById.java +26 -0
  78. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByIndex.java +22 -0
  79. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java +26 -0
  80. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/ClickOnScreen.java +31 -0
  81. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +28 -0
  82. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/ListActions.java +26 -0
  83. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/LongPressListItems.java +22 -0
  84. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/PressListItems.java +22 -0
  85. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +79 -0
  86. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollDown.java +28 -0
  87. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollUp.java +28 -0
  88. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/DownKey.java +24 -0
  89. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/GoBack.java +22 -0
  90. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/PressMenu.java +26 -0
  91. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java +24 -0
  92. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java +43 -0
  93. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertText.java +31 -0
  94. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertTextOfSpecificTextViewByContentDescription.java +32 -0
  95. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextByIndex.java +22 -0
  96. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextFieldByContentDescription.java +33 -0
  97. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClickOnText.java +22 -0
  98. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByContentDescription.java +32 -0
  99. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByIndex.java +22 -0
  100. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByContentDescription.java +33 -0
  101. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByIndex.java +24 -0
  102. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByContentDescription.java +34 -0
  103. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByIndex.java +26 -0
  104. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java +63 -0
  105. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/LongPressOnViewById.java +34 -0
  106. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/Press.java +89 -0
  107. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/WaitForViewById.java +41 -0
  108. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/Wait.java +24 -0
  109. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForDialogClose.java +21 -0
  110. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForProgress.java +47 -0
  111. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForScreen.java +49 -0
  112. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForText.java +26 -0
  113. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +109 -0
  114. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +33 -0
  115. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +33 -0
  116. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +99 -0
  117. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +43 -0
  118. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +24 -0
  119. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +99 -0
  120. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +74 -0
  121. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +43 -0
  122. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +50 -0
  123. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +44 -0
  124. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java +413 -0
  125. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java +90 -0
  126. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java +29 -0
  127. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonEncoding.java +47 -0
  128. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonFactory.java +937 -0
  129. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerationException.java +28 -0
  130. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerator.java +1197 -0
  131. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonLocation.java +141 -0
  132. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonNode.java +879 -0
  133. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParseException.java +23 -0
  134. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParser.java +1434 -0
  135. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonProcessingException.java +80 -0
  136. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonStreamContext.java +122 -0
  137. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonToken.java +161 -0
  138. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/ObjectCodec.java +157 -0
  139. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/PrettyPrinter.java +166 -0
  140. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/SerializableString.java +54 -0
  141. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Version.java +90 -0
  142. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Versioned.java +20 -0
  143. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JacksonAnnotation.java +20 -0
  144. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnyGetter.java +25 -0
  145. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnySetter.java +24 -0
  146. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAutoDetect.java +148 -0
  147. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonBackReference.java +41 -0
  148. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonCreator.java +19 -0
  149. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonGetter.java +35 -0
  150. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnore.java +57 -0
  151. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreProperties.java +48 -0
  152. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreType.java +33 -0
  153. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonManagedReference.java +41 -0
  154. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonMethod.java +90 -0
  155. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonProperty.java +38 -0
  156. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonPropertyOrder.java +46 -0
  157. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonRawValue.java +33 -0
  158. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSetter.java +33 -0
  159. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSubTypes.java +44 -0
  160. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeInfo.java +236 -0
  161. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeName.java +28 -0
  162. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonUnwrapped.java +76 -0
  163. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonValue.java +46 -0
  164. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonWriteNullProperties.java +34 -0
  165. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/package-info.java +16 -0
  166. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatDetector.java +176 -0
  167. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatMatcher.java +117 -0
  168. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/InputAccessor.java +130 -0
  169. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/MatchStrength.java +64 -0
  170. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/package-info.java +8 -0
  171. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ByteSourceBootstrapper.java +518 -0
  172. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/DefaultPrettyPrinter.java +13 -0
  173. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Indenter.java +23 -0
  174. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonGeneratorBase.java +570 -0
  175. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonNumericParserBase.java +20 -0
  176. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserBase.java +1067 -0
  177. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserMinimalBase.java +539 -0
  178. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonReadContext.java +188 -0
  179. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonWriteContext.java +178 -0
  180. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParser.java +1815 -0
  181. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParserBase.java +228 -0
  182. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/StreamBasedParserBase.java +197 -0
  183. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8Generator.java +1757 -0
  184. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8StreamParser.java +2966 -0
  185. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/WriterBasedGenerator.java +1815 -0
  186. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/package-info.java +6 -0
  187. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/BaseReader.java +117 -0
  188. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/CharacterEscapes.java +73 -0
  189. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/IOContext.java +239 -0
  190. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/InputDecorator.java +67 -0
  191. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/JsonStringEncoder.java +408 -0
  192. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/MergedStream.java +145 -0
  193. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberInput.java +303 -0
  194. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberOutput.java +398 -0
  195. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/OutputDecorator.java +40 -0
  196. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SegmentedStringWriter.java +104 -0
  197. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SerializedString.java +114 -0
  198. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF32Reader.java +214 -0
  199. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF8Writer.java +387 -0
  200. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/package.html +4 -0
  201. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AbstractTypeResolver.java +63 -0
  202. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AnnotationIntrospector.java +1485 -0
  203. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanDescription.java +171 -0
  204. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanProperty.java +123 -0
  205. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanPropertyDefinition.java +66 -0
  206. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ClassIntrospector.java +117 -0
  207. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualDeserializer.java +38 -0
  208. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualKeyDeserializer.java +33 -0
  209. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualSerializer.java +38 -0
  210. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationConfig.java +926 -0
  211. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationContext.java +262 -0
  212. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationProblemHandler.java +56 -0
  213. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerFactory.java +356 -0
  214. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerProvider.java +185 -0
  215. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Deserializers.java +339 -0
  216. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/HandlerInstantiator.java +115 -0
  217. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/InjectableValues.java +85 -0
  218. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonDeserializer.java +166 -0
  219. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonMappingException.java +335 -0
  220. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializable.java +34 -0
  221. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializableWithType.java +22 -0
  222. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializer.java +138 -0
  223. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializer.java +31 -0
  224. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializers.java +21 -0
  225. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MapperConfig.java +1154 -0
  226. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingIterator.java +190 -0
  227. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingJsonFactory.java +81 -0
  228. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Module.java +255 -0
  229. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectMapper.java +2885 -0
  230. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectReader.java +958 -0
  231. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectWriter.java +554 -0
  232. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/PropertyNamingStrategy.java +258 -0
  233. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableDeserializer.java +23 -0
  234. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableSerializer.java +23 -0
  235. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/RuntimeJsonMappingException.java +21 -0
  236. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializationConfig.java +1041 -0
  237. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerFactory.java +198 -0
  238. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerProvider.java +552 -0
  239. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Serializers.java +137 -0
  240. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeDeserializer.java +118 -0
  241. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeSerializer.java +164 -0
  242. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonInject.java +30 -0
  243. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonStdImpl.java +25 -0
  244. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonCachable.java +32 -0
  245. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonDeserialize.java +109 -0
  246. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonFilter.java +31 -0
  247. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonRootName.java +29 -0
  248. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonSerialize.java +216 -0
  249. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeIdResolver.java +35 -0
  250. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeResolver.java +28 -0
  251. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonValueInstantiator.java +26 -0
  252. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonView.java +37 -0
  253. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/NoClass.java +19 -0
  254. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/package-info.java +5 -0
  255. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/AbstractDeserializer.java +102 -0
  256. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializer.java +28 -0
  257. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializers.java +11 -0
  258. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BasicDeserializerFactory.java +894 -0
  259. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializer.java +1537 -0
  260. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerBuilder.java +277 -0
  261. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerFactory.java +1474 -0
  262. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerModifier.java +58 -0
  263. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CollectionDeserializer.java +47 -0
  264. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ContainerDeserializer.java +14 -0
  265. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CustomDeserializerFactory.java +227 -0
  266. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/DateDeserializer.java +9 -0
  267. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumDeserializer.java +15 -0
  268. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumResolver.java +17 -0
  269. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/FromStringDeserializer.java +13 -0
  270. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/JsonNodeDeserializer.java +54 -0
  271. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/MapDeserializer.java +44 -0
  272. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableAnyProperty.java +177 -0
  273. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableBeanProperty.java +827 -0
  274. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializationContext.java +326 -0
  275. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializer.java +94 -0
  276. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializerProvider.java +494 -0
  277. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializers.java +119 -0
  278. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializer.java +12 -0
  279. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializers.java +11 -0
  280. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdScalarDeserializer.java +13 -0
  281. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ThrowableDeserializer.java +13 -0
  282. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/UntypedObjectDeserializer.java +9 -0
  283. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiator.java +280 -0
  284. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiators.java +52 -0
  285. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/BeanPropertyMap.java +257 -0
  286. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorCollector.java +141 -0
  287. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorProperty.java +152 -0
  288. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java +173 -0
  289. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java +117 -0
  290. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValue.java +117 -0
  291. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValueBuffer.java +102 -0
  292. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/UnwrappedPropertyHandler.java +41 -0
  293. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ValueInjector.java +45 -0
  294. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/package-info.java +9 -0
  295. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/package-info.java +5 -0
  296. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicBooleanDeserializer.java +22 -0
  297. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicReferenceDeserializer.java +47 -0
  298. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CalendarDeserializer.java +47 -0
  299. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ClassDeserializer.java +49 -0
  300. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CollectionDeserializer.java +265 -0
  301. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ContainerDeserializerBase.java +37 -0
  302. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/DateDeserializer.java +30 -0
  303. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumDeserializer.java +139 -0
  304. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumMapDeserializer.java +90 -0
  305. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumSetDeserializer.java +89 -0
  306. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java +265 -0
  307. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JavaTypeDeserializer.java +38 -0
  308. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JsonNodeDeserializer.java +314 -0
  309. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/MapDeserializer.java +412 -0
  310. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ObjectArrayDeserializer.java +201 -0
  311. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/PrimitiveArrayDeserializers.java +583 -0
  312. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdDeserializer.java +1136 -0
  313. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java +340 -0
  314. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializers.java +108 -0
  315. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdScalarDeserializer.java +34 -0
  316. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdValueInstantiator.java +392 -0
  317. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringCollectionDeserializer.java +227 -0
  318. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringDeserializer.java +55 -0
  319. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ThrowableDeserializer.java +164 -0
  320. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TimestampDeserializer.java +30 -0
  321. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TokenBufferDeserializer.java +36 -0
  322. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/UntypedObjectDeserializer.java +248 -0
  323. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/package-info.java +15 -0
  324. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/exc/UnrecognizedPropertyException.java +75 -0
  325. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLDeserializers.java +114 -0
  326. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLSerializers.java +72 -0
  327. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/DOMDeserializer.java +65 -0
  328. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/OptionalHandlerFactory.java +217 -0
  329. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/package-info.java +23 -0
  330. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/Annotated.java +85 -0
  331. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedClass.java +980 -0
  332. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedConstructor.java +143 -0
  333. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedField.java +119 -0
  334. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMember.java +56 -0
  335. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethod.java +188 -0
  336. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethodMap.java +85 -0
  337. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedParameter.java +191 -0
  338. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedWithParams.java +195 -0
  339. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotationMap.java +101 -0
  340. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicBeanDescription.java +615 -0
  341. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicClassIntrospector.java +364 -0
  342. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java +813 -0
  343. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MemberKey.java +83 -0
  344. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MethodFilter.java +12 -0
  345. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java +209 -0
  346. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertiesCollector.java +713 -0
  347. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertyBuilder.java +648 -0
  348. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/VisibilityChecker.java +424 -0
  349. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/package-info.java +12 -0
  350. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/NamedType.java +53 -0
  351. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/SubtypeResolver.java +39 -0
  352. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeIdResolver.java +74 -0
  353. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeResolverBuilder.java +151 -0
  354. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeDeserializer.java +126 -0
  355. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeSerializer.java +110 -0
  356. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeDeserializer.java +37 -0
  357. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeSerializer.java +129 -0
  358. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeDeserializer.java +191 -0
  359. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeSerializer.java +69 -0
  360. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeDeserializer.java +103 -0
  361. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeSerializer.java +121 -0
  362. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/ClassNameIdResolver.java +138 -0
  363. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/MinimalClassNameIdResolver.java +66 -0
  364. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdSubtypeResolver.java +151 -0
  365. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdTypeResolverBuilder.java +202 -0
  366. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeDeserializerBase.java +154 -0
  367. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeIdResolverBase.java +37 -0
  368. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeNameIdResolver.java +154 -0
  369. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeSerializerBase.java +31 -0
  370. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/package-info.java +9 -0
  371. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/package-info.java +10 -0
  372. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleAbstractTypeResolver.java +86 -0
  373. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleDeserializers.java +130 -0
  374. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleKeyDeserializers.java +59 -0
  375. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleModule.java +265 -0
  376. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleSerializers.java +206 -0
  377. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleValueInstantiators.java +45 -0
  378. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/package-info.java +16 -0
  379. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/package-info.java +34 -0
  380. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/AnyGetterWriter.java +48 -0
  381. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ArraySerializers.java +7 -0
  382. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BasicSerializerFactory.java +806 -0
  383. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyFilter.java +30 -0
  384. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyWriter.java +512 -0
  385. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializer.java +126 -0
  386. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerBuilder.java +140 -0
  387. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerFactory.java +780 -0
  388. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerModifier.java +95 -0
  389. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ContainerSerializers.java +8 -0
  390. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/CustomSerializerFactory.java +293 -0
  391. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/EnumSerializer.java +17 -0
  392. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilterProvider.java +23 -0
  393. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilteredBeanPropertyWriter.java +96 -0
  394. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/JdkSerializers.java +11 -0
  395. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/MapSerializer.java +58 -0
  396. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/PropertyBuilder.java +372 -0
  397. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ScalarSerializerBase.java +18 -0
  398. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/SerializerBase.java +23 -0
  399. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdKeySerializer.java +10 -0
  400. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializerProvider.java +852 -0
  401. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializers.java +372 -0
  402. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ToStringSerializer.java +14 -0
  403. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/FailingSerializer.java +43 -0
  404. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/JsonSerializerMap.java +93 -0
  405. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/PropertySerializerMap.java +231 -0
  406. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/ReadOnlyClassToSerializerMap.java +73 -0
  407. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SerializerCache.java +304 -0
  408. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleBeanPropertyFilter.java +109 -0
  409. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleFilterProvider.java +114 -0
  410. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnknownSerializer.java +54 -0
  411. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanPropertyWriter.java +99 -0
  412. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanSerializer.java +76 -0
  413. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/package-info.java +5 -0
  414. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/package-info.java +5 -0
  415. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/AsArraySerializerBase.java +185 -0
  416. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/BeanSerializerBase.java +340 -0
  417. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CalendarSerializer.java +43 -0
  418. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CollectionSerializer.java +113 -0
  419. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ContainerSerializerBase.java +51 -0
  420. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/DateSerializer.java +42 -0
  421. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumMapSerializer.java +218 -0
  422. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSerializer.java +84 -0
  423. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSetSerializer.java +47 -0
  424. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IndexedStringListSerializer.java +116 -0
  425. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/InetAddressSerializer.java +51 -0
  426. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IterableSerializer.java +63 -0
  427. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java +233 -0
  428. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/MapSerializer.java +422 -0
  429. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NonTypedScalarSerializerBase.java +34 -0
  430. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NullSerializer.java +38 -0
  431. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ObjectArraySerializer.java +281 -0
  432. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/RawSerializer.java +52 -0
  433. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ScalarSerializerBase.java +52 -0
  434. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableSerializer.java +99 -0
  435. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableWithTypeSerializer.java +90 -0
  436. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializerBase.java +184 -0
  437. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StaticListSerializerBase.java +46 -0
  438. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdArraySerializers.java +476 -0
  439. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdContainerSerializers.java +249 -0
  440. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdJdkSerializers.java +195 -0
  441. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializer.java +43 -0
  442. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializers.java +95 -0
  443. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringCollectionSerializer.java +119 -0
  444. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringSerializer.java +36 -0
  445. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TimeZoneSerializer.java +38 -0
  446. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ToStringSerializer.java +73 -0
  447. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TokenBufferSerializer.java +66 -0
  448. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ArrayType.java +260 -0
  449. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ClassKey.java +94 -0
  450. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionLikeType.java +204 -0
  451. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionType.java +94 -0
  452. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/HierarchicType.java +88 -0
  453. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapLikeType.java +265 -0
  454. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapType.java +146 -0
  455. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/SimpleType.java +250 -0
  456. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBase.java +148 -0
  457. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBindings.java +351 -0
  458. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeFactory.java +1165 -0
  459. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeModifier.java +38 -0
  460. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeParser.java +134 -0
  461. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/package-info.java +10 -0
  462. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Annotations.java +23 -0
  463. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ArrayBuilders.java +293 -0
  464. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/BeanUtil.java +260 -0
  465. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ClassUtil.java +645 -0
  466. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Comparators.java +48 -0
  467. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumResolver.java +108 -0
  468. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumValues.java +82 -0
  469. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601DateFormat.java +52 -0
  470. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601Utils.java +230 -0
  471. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONPObject.java +105 -0
  472. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONWrappedObject.java +117 -0
  473. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LRUMap.java +28 -0
  474. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LinkedNode.java +45 -0
  475. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Named.java +10 -0
  476. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ObjectBuffer.java +257 -0
  477. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/PrimitiveArrayBuilder.java +180 -0
  478. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Provider.java +21 -0
  479. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/RootNameLookup.java +54 -0
  480. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/StdDateFormat.java +348 -0
  481. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/package-info.java +4 -0
  482. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ArrayNode.java +758 -0
  483. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BaseJsonNode.java +122 -0
  484. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BigIntegerNode.java +104 -0
  485. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BinaryNode.java +136 -0
  486. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BooleanNode.java +84 -0
  487. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ContainerNode.java +185 -0
  488. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DecimalNode.java +96 -0
  489. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DoubleNode.java +106 -0
  490. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/IntNode.java +122 -0
  491. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/JsonNodeFactory.java +222 -0
  492. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/LongNode.java +99 -0
  493. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/MissingNode.java +97 -0
  494. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NodeCursor.java +222 -0
  495. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NullNode.java +58 -0
  496. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NumericNode.java +72 -0
  497. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ObjectNode.java +696 -0
  498. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/POJONode.java +145 -0
  499. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TextNode.java +299 -0
  500. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TreeTraversingParser.java +383 -0
  501. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ValueNode.java +58 -0
  502. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/package-info.java +8 -0
  503. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/package-info.java +30 -0
  504. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSchema.java +82 -0
  505. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSerializableSchema.java +46 -0
  506. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/SchemaAware.java +25 -0
  507. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/package-info.java +5 -0
  508. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/BytesToNameCanonicalizer.java +969 -0
  509. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/CharsToNameCanonicalizer.java +578 -0
  510. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name.java +50 -0
  511. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name1.java +44 -0
  512. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name2.java +40 -0
  513. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name3.java +39 -0
  514. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/NameN.java +68 -0
  515. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/package-info.java +5 -0
  516. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/JavaType.java +503 -0
  517. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/TypeReference.java +60 -0
  518. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/package-info.java +8 -0
  519. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/BufferRecycler.java +109 -0
  520. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/ByteArrayBuilder.java +294 -0
  521. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/CharTypes.java +237 -0
  522. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/DefaultPrettyPrinter.java +282 -0
  523. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/InternCache.java +49 -0
  524. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonGeneratorDelegate.java +273 -0
  525. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserDelegate.java +251 -0
  526. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserSequence.java +150 -0
  527. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/MinimalPrettyPrinter.java +152 -0
  528. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TextBuffer.java +707 -0
  529. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java +1233 -0
  530. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java +79 -0
  531. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java +4 -0
  532. metadata +619 -0
@@ -0,0 +1,126 @@
1
+ package sh.calaba.org.codehaus.jackson.map.ser;
2
+
3
+ import java.io.IOException;
4
+
5
+ import sh.calaba.org.codehaus.jackson.JsonGenerationException;
6
+ import sh.calaba.org.codehaus.jackson.JsonGenerator;
7
+ import sh.calaba.org.codehaus.jackson.map.*;
8
+ import sh.calaba.org.codehaus.jackson.map.ser.impl.UnwrappingBeanSerializer;
9
+ import sh.calaba.org.codehaus.jackson.map.ser.std.BeanSerializerBase;
10
+ import sh.calaba.org.codehaus.jackson.type.JavaType;
11
+
12
+ /**
13
+ * Serializer class that can serialize arbitrary bean objects
14
+ *<p>
15
+ * Implementation note: we will post-process resulting serializer,
16
+ * to figure out actual serializers for final types. This must be
17
+ * done from {@link #resolve} method, and NOT from constructor;
18
+ * otherwise we could end up with an infinite loop.
19
+ *<p>
20
+ * Since 1.7 instances are immutable; this is achieved by using a
21
+ * separate builder during construction process.
22
+ */
23
+ public class BeanSerializer
24
+ extends BeanSerializerBase
25
+ {
26
+ /*
27
+ /**********************************************************
28
+ /* Life-cycle: constructors
29
+ /**********************************************************
30
+ */
31
+
32
+ /**
33
+ * @param type Nominal type of values handled by this serializer
34
+ * @param properties Property writers used for actual serialization
35
+ */
36
+ public BeanSerializer(JavaType type,
37
+ BeanPropertyWriter[] properties, BeanPropertyWriter[] filteredProperties,
38
+ AnyGetterWriter anyGetterWriter,
39
+ Object filterId)
40
+ {
41
+ super(type, properties, filteredProperties, anyGetterWriter, filterId);
42
+ }
43
+
44
+ public BeanSerializer(Class<?> rawType,
45
+ BeanPropertyWriter[] properties, BeanPropertyWriter[] filteredProperties,
46
+ AnyGetterWriter anyGetterWriter,
47
+ Object filterId)
48
+ {
49
+ super(rawType, properties, filteredProperties, anyGetterWriter, filterId);
50
+ }
51
+
52
+ /**
53
+ * Copy-constructor that is useful for sub-classes that just want to
54
+ * copy all super-class properties without modifications.
55
+ *
56
+ * @since 1.7
57
+ */
58
+ protected BeanSerializer(BeanSerializer src) {
59
+ super(src);
60
+ }
61
+
62
+ /**
63
+ * Alternate copy constructor that can be used to construct
64
+ * standard {@link BeanSerializer} passing an instance of
65
+ * "compatible enough" source serializer.
66
+ *
67
+ * @since 1.9
68
+ */
69
+ protected BeanSerializer(BeanSerializerBase src) {
70
+ super(src);
71
+ }
72
+
73
+ /*
74
+ /**********************************************************
75
+ /* Life-cycle: factory methods, fluent factories
76
+ /**********************************************************
77
+ */
78
+
79
+ /**
80
+ * Method for constructing dummy bean deserializer; one that
81
+ * never outputs any properties
82
+ */
83
+ public static BeanSerializer createDummy(Class<?> forType)
84
+ {
85
+ return new BeanSerializer(forType, NO_PROPS, null, null, null);
86
+ }
87
+
88
+ @Override
89
+ public JsonSerializer<Object> unwrappingSerializer() {
90
+ return new UnwrappingBeanSerializer(this);
91
+ }
92
+
93
+ /*
94
+ /**********************************************************
95
+ /* JsonSerializer implementation that differs between impls
96
+ /**********************************************************
97
+ */
98
+
99
+ /**
100
+ * Main serialization method that will delegate actual output to
101
+ * configured
102
+ * {@link BeanPropertyWriter} instances.
103
+ */
104
+ @Override
105
+ public final void serialize(Object bean, JsonGenerator jgen, SerializerProvider provider)
106
+ throws IOException, JsonGenerationException
107
+ {
108
+ jgen.writeStartObject();
109
+ if (_propertyFilterId != null) {
110
+ serializeFieldsFiltered(bean, jgen, provider);
111
+ } else {
112
+ serializeFields(bean, jgen, provider);
113
+ }
114
+ jgen.writeEndObject();
115
+ }
116
+
117
+ /*
118
+ /**********************************************************
119
+ /* Standard methods
120
+ /**********************************************************
121
+ */
122
+
123
+ @Override public String toString() {
124
+ return "BeanSerializer for "+handledType().getName();
125
+ }
126
+ }
@@ -0,0 +1,140 @@
1
+ package sh.calaba.org.codehaus.jackson.map.ser;
2
+
3
+ import java.util.*;
4
+
5
+ import sh.calaba.org.codehaus.jackson.map.*;
6
+ import sh.calaba.org.codehaus.jackson.map.introspect.BasicBeanDescription;
7
+
8
+ /**
9
+ * Builder class used for aggregating deserialization information about
10
+ * a POJO, in order to build a {@link JsonSerializer} for serializing
11
+ * intances.
12
+ * Main reason for using separate builder class is that this makes it easier
13
+ * to make actual serializer class fully immutable.
14
+ *
15
+ * @since 1.7
16
+ */
17
+ public class BeanSerializerBuilder
18
+ {
19
+ private final static BeanPropertyWriter[] NO_PROPERTIES = new BeanPropertyWriter[0];
20
+
21
+ /*
22
+ /**********************************************************
23
+ /* General information about POJO
24
+ /**********************************************************
25
+ */
26
+
27
+ final protected BasicBeanDescription _beanDesc;
28
+
29
+ /*
30
+ /**********************************************************
31
+ /* Accumulated information about properties
32
+ /**********************************************************
33
+ */
34
+
35
+ /**
36
+ * Bean properties, in order of serialization
37
+ */
38
+ protected List<BeanPropertyWriter> _properties;
39
+
40
+ /**
41
+ * Optional array of filtered property writers; if null, no
42
+ * view-based filtering is performed.
43
+ */
44
+ protected BeanPropertyWriter[] _filteredProperties;
45
+
46
+ /**
47
+ * Writer used for "any getter" properties, if any.
48
+ */
49
+ protected AnyGetterWriter _anyGetter;
50
+
51
+ /**
52
+ * Id of the property filter to use for POJO, if any.
53
+ */
54
+ protected Object _filterId;
55
+
56
+ /*
57
+ /**********************************************************
58
+ /* Construction and setter methods
59
+ /**********************************************************
60
+ */
61
+
62
+ public BeanSerializerBuilder(BasicBeanDescription beanDesc) {
63
+ _beanDesc = beanDesc;
64
+ }
65
+
66
+ /**
67
+ * Copy-constructor that may be used for sub-classing
68
+ */
69
+ protected BeanSerializerBuilder(BeanSerializerBuilder src) {
70
+ _beanDesc = src._beanDesc;
71
+ _properties = src._properties;
72
+ _filteredProperties = src._filteredProperties;
73
+ _anyGetter = src._anyGetter;
74
+ _filterId = src._filterId;
75
+ }
76
+
77
+ public BasicBeanDescription getBeanDescription() { return _beanDesc; }
78
+ public List<BeanPropertyWriter> getProperties() { return _properties; }
79
+ public BeanPropertyWriter[] getFilteredProperties() { return _filteredProperties; }
80
+
81
+ /**
82
+ * @since 1.9
83
+ */
84
+ public boolean hasProperties() {
85
+ return (_properties != null) && (_properties.size() > 0);
86
+ }
87
+
88
+ public void setProperties(List<BeanPropertyWriter> properties) {
89
+ _properties = properties;
90
+ }
91
+
92
+ public void setFilteredProperties(BeanPropertyWriter[] properties) {
93
+ _filteredProperties = properties;
94
+ }
95
+
96
+ public void setAnyGetter(AnyGetterWriter anyGetter) {
97
+ _anyGetter = anyGetter;
98
+ }
99
+
100
+ public void setFilterId(Object filterId) {
101
+ _filterId = filterId;
102
+ }
103
+
104
+ /*
105
+ /**********************************************************
106
+ /* Build methods for actually creating serializer instance
107
+ /**********************************************************
108
+ */
109
+
110
+ /**
111
+ * Method called to create {@link BeanSerializer} instance with
112
+ * all accumulated information. Will construct a serializer if we
113
+ * have enough information, or return null if not.
114
+ */
115
+ public JsonSerializer<?> build()
116
+ {
117
+ BeanPropertyWriter[] properties;
118
+ // No properties or any getter? No real serializer; caller gets to handle
119
+ if (_properties == null || _properties.isEmpty()) {
120
+ if (_anyGetter == null) {
121
+ return null;
122
+ }
123
+ properties = NO_PROPERTIES;
124
+ } else {
125
+ properties = _properties.toArray(new BeanPropertyWriter[_properties.size()]);
126
+
127
+ }
128
+ return new BeanSerializer(_beanDesc.getType(), properties, _filteredProperties, _anyGetter, _filterId);
129
+ }
130
+
131
+ /**
132
+ * Factory method for constructing an "empty" serializer; one that
133
+ * outputs no properties (but handles JSON objects properly, including
134
+ * type information)
135
+ */
136
+ public BeanSerializer createDummy() {
137
+ return BeanSerializer.createDummy(_beanDesc.getBeanClass());
138
+ }
139
+ }
140
+
@@ -0,0 +1,780 @@
1
+ package sh.calaba.org.codehaus.jackson.map.ser;
2
+
3
+ import java.util.*;
4
+
5
+ import sh.calaba.org.codehaus.jackson.map.*;
6
+ import sh.calaba.org.codehaus.jackson.map.introspect.*;
7
+ import sh.calaba.org.codehaus.jackson.map.jsontype.NamedType;
8
+ import sh.calaba.org.codehaus.jackson.map.jsontype.TypeResolverBuilder;
9
+ import sh.calaba.org.codehaus.jackson.map.ser.std.MapSerializer;
10
+ import sh.calaba.org.codehaus.jackson.map.type.*;
11
+ import sh.calaba.org.codehaus.jackson.map.util.ArrayBuilders;
12
+ import sh.calaba.org.codehaus.jackson.map.util.ClassUtil;
13
+ import sh.calaba.org.codehaus.jackson.type.JavaType;
14
+
15
+ /**
16
+ * Factory class that can provide serializers for any regular Java beans
17
+ * (as defined by "having at least one get method recognizable as bean
18
+ * accessor" -- where {@link Object#getClass} does not count);
19
+ * as well as for "standard" JDK types. Latter is achieved
20
+ * by delegating calls to {@link BasicSerializerFactory}
21
+ * to find serializers both for "standard" JDK types (and in some cases,
22
+ * sub-classes as is the case for collection classes like
23
+ * {@link java.util.List}s and {@link java.util.Map}s) and bean (value)
24
+ * classes.
25
+ *<p>
26
+ * Note about delegating calls to {@link BasicSerializerFactory}:
27
+ * although it would be nicer to use linear delegation
28
+ * for construction (to essentially dispatch all calls first to the
29
+ * underlying {@link BasicSerializerFactory}; or alternatively after
30
+ * failing to provide bean-based serializer}, there is a problem:
31
+ * priority levels for detecting standard types are mixed. That is,
32
+ * we want to check if a type is a bean after some of "standard" JDK
33
+ * types, but before the rest.
34
+ * As a result, "mixed" delegation used, and calls are NOT done using
35
+ * regular {@link SerializerFactory} interface but rather via
36
+ * direct calls to {@link BasicSerializerFactory}.
37
+ *<p>
38
+ * Finally, since all caching is handled by the serializer provider
39
+ * (not factory) and there is no configurability, this
40
+ * factory is stateless.
41
+ * This means that a global singleton instance can be used.
42
+ *<p>
43
+ * Notes for version 1.7 (and above): the new module registration system
44
+ * required addition of {@link #withConfig}, which has to
45
+ * be redefined by sub-classes so that they can work properly with
46
+ * pluggable additional serializer providing components.
47
+ */
48
+ public class BeanSerializerFactory
49
+ extends BasicSerializerFactory
50
+ {
51
+ /**
52
+ * Like {@link BasicSerializerFactory}, this factory is stateless, and
53
+ * thus a single shared global (== singleton) instance can be used
54
+ * without thread-safety issues.
55
+ */
56
+ public final static BeanSerializerFactory instance = new BeanSerializerFactory(null);
57
+
58
+ /**
59
+ * Configuration settings for this factory; immutable instance (just like this
60
+ * factory), new version created via copy-constructor (fluent-style)
61
+ *
62
+ * @since 1.7
63
+ */
64
+ protected final Config _factoryConfig;
65
+
66
+ /*
67
+ /**********************************************************
68
+ /* Config class implementation
69
+ /**********************************************************
70
+ */
71
+
72
+ /**
73
+ * Configuration settings container class for bean serializer factory
74
+ *
75
+ * @since 1.7
76
+ */
77
+ public static class ConfigImpl extends Config
78
+ {
79
+ /**
80
+ * Constant for empty <code>Serializers</code> array (which by definition
81
+ * is stateless and reusable)
82
+ */
83
+ protected final static Serializers[] NO_SERIALIZERS = new Serializers[0];
84
+
85
+ protected final static BeanSerializerModifier[] NO_MODIFIERS = new BeanSerializerModifier[0];
86
+
87
+ /**
88
+ * List of providers for additional serializers, checked before considering default
89
+ * basic or bean serialializers.
90
+ *
91
+ * @since 1.7
92
+ */
93
+ protected final Serializers[] _additionalSerializers;
94
+
95
+ /**
96
+ * @since 1.8
97
+ */
98
+ protected final Serializers[] _additionalKeySerializers;
99
+
100
+ /**
101
+ * List of modifiers that can change the way {@link BeanSerializer} instances
102
+ * are configured and constructed.
103
+ */
104
+ protected final BeanSerializerModifier[] _modifiers;
105
+
106
+ public ConfigImpl() {
107
+ this(null, null, null);
108
+ }
109
+
110
+ protected ConfigImpl(Serializers[] allAdditionalSerializers,
111
+ Serializers[] allAdditionalKeySerializers,
112
+ BeanSerializerModifier[] modifiers)
113
+ {
114
+ _additionalSerializers = (allAdditionalSerializers == null) ?
115
+ NO_SERIALIZERS : allAdditionalSerializers;
116
+ _additionalKeySerializers = (allAdditionalKeySerializers == null) ?
117
+ NO_SERIALIZERS : allAdditionalKeySerializers;
118
+ _modifiers = (modifiers == null) ? NO_MODIFIERS : modifiers;
119
+ }
120
+
121
+ @Override
122
+ public Config withAdditionalSerializers(Serializers additional)
123
+ {
124
+ if (additional == null) {
125
+ throw new IllegalArgumentException("Can not pass null Serializers");
126
+ }
127
+ Serializers[] all = ArrayBuilders.insertInListNoDup(_additionalSerializers, additional);
128
+ return new ConfigImpl(all, _additionalKeySerializers, _modifiers);
129
+ }
130
+
131
+ @Override
132
+ public Config withAdditionalKeySerializers(Serializers additional)
133
+ {
134
+ if (additional == null) {
135
+ throw new IllegalArgumentException("Can not pass null Serializers");
136
+ }
137
+ Serializers[] all = ArrayBuilders.insertInListNoDup(_additionalKeySerializers, additional);
138
+ return new ConfigImpl(_additionalSerializers, all, _modifiers);
139
+ }
140
+
141
+ @Override
142
+ public Config withSerializerModifier(BeanSerializerModifier modifier)
143
+ {
144
+ if (modifier == null) {
145
+ throw new IllegalArgumentException("Can not pass null modifier");
146
+ }
147
+ BeanSerializerModifier[] modifiers = ArrayBuilders.insertInListNoDup(_modifiers, modifier);
148
+ return new ConfigImpl(_additionalSerializers, _additionalKeySerializers, modifiers);
149
+ }
150
+
151
+ @Override
152
+ public boolean hasSerializers() { return _additionalSerializers.length > 0; }
153
+
154
+ @Override
155
+ public boolean hasKeySerializers() { return _additionalKeySerializers.length > 0; }
156
+
157
+ @Override
158
+ public boolean hasSerializerModifiers() { return _modifiers.length > 0; }
159
+
160
+ @Override
161
+ public Iterable<Serializers> serializers() {
162
+ return ArrayBuilders.arrayAsIterable(_additionalSerializers);
163
+ }
164
+
165
+ @Override
166
+ public Iterable<Serializers> keySerializers() {
167
+ return ArrayBuilders.arrayAsIterable(_additionalKeySerializers);
168
+ }
169
+
170
+ @Override
171
+ public Iterable<BeanSerializerModifier> serializerModifiers() {
172
+ return ArrayBuilders.arrayAsIterable(_modifiers);
173
+ }
174
+ }
175
+
176
+ /*
177
+ /**********************************************************
178
+ /* Life-cycle: creation, configuration
179
+ /**********************************************************
180
+ */
181
+
182
+ /**
183
+ * Constructor for creating instances with specified configuration.
184
+ */
185
+ protected BeanSerializerFactory(Config config)
186
+ {
187
+ if (config == null) {
188
+ config = new ConfigImpl();
189
+ }
190
+ _factoryConfig = config;
191
+ }
192
+
193
+ @Override public Config getConfig() { return _factoryConfig; }
194
+
195
+ /**
196
+ * Method used by module registration functionality, to attach additional
197
+ * serializer providers into this serializer factory. This is typically
198
+ * handled by constructing a new instance with additional serializers,
199
+ * to ensure thread-safe access.
200
+ *
201
+ * @since 1.7
202
+ */
203
+ @Override
204
+ public SerializerFactory withConfig(Config config)
205
+ {
206
+ if (_factoryConfig == config) {
207
+ return this;
208
+ }
209
+ /* 22-Nov-2010, tatu: Handling of subtypes is tricky if we do immutable-with-copy-ctor;
210
+ * and we pretty much have to here either choose between losing subtype instance
211
+ * when registering additional serializers, or losing serializers.
212
+ * Instead, let's actually just throw an error if this method is called when subtype
213
+ * has not properly overridden this method; this to indicate problem as soon as possible.
214
+ */
215
+ if (getClass() != BeanSerializerFactory.class) {
216
+ throw new IllegalStateException("Subtype of BeanSerializerFactory ("+getClass().getName()
217
+ +") has not properly overridden method 'withAdditionalSerializers': can not instantiate subtype with "
218
+ +"additional serializer definitions");
219
+ }
220
+ return new BeanSerializerFactory(config);
221
+ }
222
+
223
+ @Override
224
+ protected Iterable<Serializers> customSerializers() {
225
+ return _factoryConfig.serializers();
226
+ }
227
+
228
+ /*
229
+ /**********************************************************
230
+ /* SerializerFactory impl
231
+ /**********************************************************
232
+ */
233
+
234
+ /**
235
+ * Main serializer constructor method. We will have to be careful
236
+ * with respect to ordering of various method calls: essentially
237
+ * we want to reliably figure out which classes are standard types,
238
+ * and which are beans. The problem is that some bean Classes may
239
+ * implement standard interfaces (say, {@link java.lang.Iterable}.
240
+ *<p>
241
+ * Note: sub-classes may choose to complete replace implementation,
242
+ * if they want to alter priority of serializer lookups.
243
+ */
244
+ @Override
245
+ @SuppressWarnings("unchecked")
246
+ public JsonSerializer<Object> createSerializer(SerializationConfig config, JavaType origType,
247
+ BeanProperty property)
248
+ throws JsonMappingException
249
+ {
250
+ // Very first thing, let's check if there is explicit serializer annotation:
251
+ BasicBeanDescription beanDesc = config.introspect(origType);
252
+ JsonSerializer<?> ser = findSerializerFromAnnotation(config, beanDesc.getClassInfo(), property);
253
+ if (ser != null) {
254
+ return (JsonSerializer<Object>) ser;
255
+ }
256
+
257
+ // Next: we may have annotations that further define types to use...
258
+ JavaType type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), origType);
259
+ // and if so, we consider it implicit "force static typing" instruction
260
+ boolean staticTyping = (type != origType);
261
+
262
+ // Container types differ from non-container types:
263
+ if (origType.isContainerType()) {
264
+ return (JsonSerializer<Object>) buildContainerSerializer(config, type, beanDesc, property, staticTyping);
265
+ }
266
+
267
+ // Modules may provide serializers of all types:
268
+ for (Serializers serializers : _factoryConfig.serializers()) {
269
+ ser = serializers.findSerializer(config, type, beanDesc, property);
270
+ if (ser != null) {
271
+ return (JsonSerializer<Object>) ser;
272
+ }
273
+ }
274
+
275
+ /* Otherwise, we will check "primary types"; both marker types that
276
+ * indicate specific handling (JsonSerializable), or main types that have
277
+ * precedence over container types
278
+ */
279
+ ser = findSerializerByLookup(type, config, beanDesc, property, staticTyping);
280
+ if (ser == null) {
281
+ ser = findSerializerByPrimaryType(type, config, beanDesc, property, staticTyping);
282
+ if (ser == null) {
283
+ /* And this is where this class comes in: if type is not a
284
+ * known "primary JDK type", perhaps it's a bean? We can still
285
+ * get a null, if we can't find a single suitable bean property.
286
+ */
287
+ ser = findBeanSerializer(config, type, beanDesc, property);
288
+ /* Finally: maybe we can still deal with it as an
289
+ * implementation of some basic JDK interface?
290
+ */
291
+ if (ser == null) {
292
+ ser = findSerializerByAddonType(config, type, beanDesc, property, staticTyping);
293
+ }
294
+ }
295
+ }
296
+ return (JsonSerializer<Object>) ser;
297
+ }
298
+
299
+ @Override
300
+ @SuppressWarnings("unchecked")
301
+ public JsonSerializer<Object> createKeySerializer(SerializationConfig config, JavaType type,
302
+ BeanProperty property)
303
+ {
304
+ // Minor optimization: to avoid constructing beanDesc, bail out if none registered
305
+ if (!_factoryConfig.hasKeySerializers()) {
306
+ return null;
307
+ }
308
+
309
+ // We should not need any member method info; at most class annotations for Map type
310
+ BasicBeanDescription beanDesc = config.introspectClassAnnotations(type.getRawClass());
311
+ JsonSerializer<?> ser = null;
312
+
313
+ // Only thing we have here are module-provided key serializers:
314
+ for (Serializers serializers : _factoryConfig.keySerializers()) {
315
+ ser = serializers.findSerializer(config, type, beanDesc, property);
316
+ if (ser != null) {
317
+ break;
318
+ }
319
+ }
320
+ return (JsonSerializer<Object>) ser;
321
+ }
322
+
323
+ /*
324
+ /**********************************************************
325
+ /* Other public methods that are not part of
326
+ /* JsonSerializerFactory API
327
+ /**********************************************************
328
+ */
329
+
330
+ /**
331
+ * Method that will try to construct a {@link BeanSerializer} for
332
+ * given class. Returns null if no properties are found.
333
+ */
334
+ @SuppressWarnings("unchecked")
335
+ public JsonSerializer<Object> findBeanSerializer(SerializationConfig config, JavaType type,
336
+ BasicBeanDescription beanDesc, BeanProperty property)
337
+ throws JsonMappingException
338
+ {
339
+ // First things first: we know some types are not beans...
340
+ if (!isPotentialBeanType(type.getRawClass())) {
341
+ return null;
342
+ }
343
+ JsonSerializer<Object> serializer = constructBeanSerializer(config, beanDesc, property);
344
+ // [JACKSON-440] Need to allow overriding actual serializer, as well...
345
+ if (_factoryConfig.hasSerializerModifiers()) {
346
+ for (BeanSerializerModifier mod : _factoryConfig.serializerModifiers()) {
347
+ serializer = (JsonSerializer<Object>)mod.modifySerializer(config, beanDesc, serializer);
348
+ }
349
+ }
350
+ return serializer;
351
+ }
352
+
353
+ /**
354
+ * Method called to create a type information serializer for values of given
355
+ * non-container property
356
+ * if one is needed. If not needed (no polymorphic handling configured), should
357
+ * return null.
358
+ *
359
+ * @param baseType Declared type to use as the base type for type information serializer
360
+ *
361
+ * @return Type serializer to use for property values, if one is needed; null if not.
362
+ *
363
+ * @since 1.5
364
+ */
365
+ public TypeSerializer findPropertyTypeSerializer(JavaType baseType, SerializationConfig config,
366
+ AnnotatedMember accessor, BeanProperty property)
367
+ throws JsonMappingException
368
+ {
369
+ AnnotationIntrospector ai = config.getAnnotationIntrospector();
370
+ TypeResolverBuilder<?> b = ai.findPropertyTypeResolver(config, accessor, baseType);
371
+ // Defaulting: if no annotations on member, check value class
372
+ if (b == null) {
373
+ return createTypeSerializer(config, baseType, property);
374
+ }
375
+ Collection<NamedType> subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(accessor, config, ai);
376
+ return b.buildTypeSerializer(config, baseType, subtypes, property);
377
+ }
378
+
379
+ /**
380
+ * Method called to create a type information serializer for values of given
381
+ * container property
382
+ * if one is needed. If not needed (no polymorphic handling configured), should
383
+ * return null.
384
+ *
385
+ * @param containerType Declared type of the container to use as the base type for type information serializer
386
+ *
387
+ * @return Type serializer to use for property value contents, if one is needed; null if not.
388
+ *
389
+ * @since 1.5
390
+ */
391
+ public TypeSerializer findPropertyContentTypeSerializer(JavaType containerType, SerializationConfig config,
392
+ AnnotatedMember accessor, BeanProperty property)
393
+ throws JsonMappingException
394
+ {
395
+ JavaType contentType = containerType.getContentType();
396
+ AnnotationIntrospector ai = config.getAnnotationIntrospector();
397
+ TypeResolverBuilder<?> b = ai.findPropertyContentTypeResolver(config, accessor, containerType);
398
+ // Defaulting: if no annotations on member, check value class
399
+ if (b == null) {
400
+ return createTypeSerializer(config, contentType, property);
401
+ }
402
+ Collection<NamedType> subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(accessor, config, ai);
403
+ return b.buildTypeSerializer(config, contentType, subtypes, property);
404
+ }
405
+
406
+ /*
407
+ /**********************************************************
408
+ /* Overridable non-public factory methods
409
+ /**********************************************************
410
+ */
411
+
412
+ /**
413
+ * Method called to construct serializer for serializing specified bean type.
414
+ *
415
+ * @since 1.6
416
+ */
417
+ @SuppressWarnings("unchecked")
418
+ protected JsonSerializer<Object> constructBeanSerializer(SerializationConfig config,
419
+ BasicBeanDescription beanDesc, BeanProperty property)
420
+ throws JsonMappingException
421
+ {
422
+ // 13-Oct-2010, tatu: quick sanity check: never try to create bean serializer for plain Object
423
+ if (beanDesc.getBeanClass() == Object.class) {
424
+ throw new IllegalArgumentException("Can not create bean serializer for Object.class");
425
+ }
426
+
427
+ BeanSerializerBuilder builder = constructBeanSerializerBuilder(beanDesc);
428
+
429
+ // First: any detectable (auto-detect, annotations) properties to serialize?
430
+ List<BeanPropertyWriter> props = findBeanProperties(config, beanDesc);
431
+
432
+ if (props == null) {
433
+ props = new ArrayList<BeanPropertyWriter>();
434
+ }
435
+ // [JACKSON-440] Need to allow modification bean properties to serialize:
436
+ if (_factoryConfig.hasSerializerModifiers()) {
437
+ for (BeanSerializerModifier mod : _factoryConfig.serializerModifiers()) {
438
+ props = mod.changeProperties(config, beanDesc, props);
439
+ }
440
+ }
441
+
442
+ // Any properties to suppress?
443
+ props = filterBeanProperties(config, beanDesc, props);
444
+ // Do they need to be sorted in some special way?
445
+ props = sortBeanProperties(config, beanDesc, props);
446
+
447
+ // [JACKSON-440] Need to allow reordering of properties to serialize
448
+ if (_factoryConfig.hasSerializerModifiers()) {
449
+ for (BeanSerializerModifier mod : _factoryConfig.serializerModifiers()) {
450
+ props = mod.orderProperties(config, beanDesc, props);
451
+ }
452
+ }
453
+
454
+ builder.setProperties(props);
455
+ builder.setFilterId(findFilterId(config, beanDesc));
456
+
457
+ AnnotatedMethod anyGetter = beanDesc.findAnyGetter();
458
+ if (anyGetter != null) { // since 1.6
459
+ if (config.isEnabled(SerializationConfig.Feature.CAN_OVERRIDE_ACCESS_MODIFIERS)) {
460
+ anyGetter.fixAccess();
461
+ }
462
+ JavaType type = anyGetter.getType(beanDesc.bindingsForBeanType());
463
+ // copied from BasicSerializerFactory.buildMapSerializer():
464
+ boolean staticTyping = config.isEnabled(SerializationConfig.Feature.USE_STATIC_TYPING);
465
+ JavaType valueType = type.getContentType();
466
+ TypeSerializer typeSer = createTypeSerializer(config, valueType, property);
467
+ // last 2 nulls; don't know key, value serializers (yet)
468
+ MapSerializer mapSer = MapSerializer.construct(/* ignored props*/ null, type, staticTyping,
469
+ typeSer, property, null, null);
470
+ builder.setAnyGetter(new AnyGetterWriter(anyGetter, mapSer));
471
+ }
472
+ // One more thing: need to gather view information, if any:
473
+ processViews(config, builder);
474
+ // And maybe let interested parties mess with the result bit more...
475
+ if (_factoryConfig.hasSerializerModifiers()) {
476
+ for (BeanSerializerModifier mod : _factoryConfig.serializerModifiers()) {
477
+ builder = mod.updateBuilder(config, beanDesc, builder);
478
+ }
479
+ }
480
+ JsonSerializer<Object> ser = (JsonSerializer<Object>) builder.build();
481
+
482
+ /* However, after all modifications: no properties, no serializer
483
+ * (note; as per [JACKSON-670], check was moved later on from an earlier location)
484
+ */
485
+ if (ser == null) {
486
+ /* 27-Nov-2009, tatu: Except that as per [JACKSON-201], we are
487
+ * ok with that as long as it has a recognized class annotation
488
+ * (which may come from a mix-in too)
489
+ */
490
+ if (beanDesc.hasKnownClassAnnotations()) {
491
+ return builder.createDummy();
492
+ }
493
+ }
494
+ return ser;
495
+ }
496
+
497
+ /**
498
+ * Method called to construct a filtered writer, for given view
499
+ * definitions. Default implementation constructs filter that checks
500
+ * active view type to views property is to be included in.
501
+ */
502
+ protected BeanPropertyWriter constructFilteredBeanWriter(BeanPropertyWriter writer, Class<?>[] inViews)
503
+ {
504
+ return FilteredBeanPropertyWriter.constructViewBased(writer, inViews);
505
+ }
506
+
507
+ protected PropertyBuilder constructPropertyBuilder(SerializationConfig config,
508
+ BasicBeanDescription beanDesc)
509
+ {
510
+ return new PropertyBuilder(config, beanDesc);
511
+ }
512
+
513
+ protected BeanSerializerBuilder constructBeanSerializerBuilder(BasicBeanDescription beanDesc) {
514
+ return new BeanSerializerBuilder(beanDesc);
515
+ }
516
+
517
+ /**
518
+ * Method called to find filter that is configured to be used with bean
519
+ * serializer being built, if any.
520
+ *
521
+ * @since 1.7
522
+ */
523
+ protected Object findFilterId(SerializationConfig config, BasicBeanDescription beanDesc)
524
+ {
525
+ return config.getAnnotationIntrospector().findFilterId(beanDesc.getClassInfo());
526
+ }
527
+
528
+ /*
529
+ /**********************************************************
530
+ /* Overridable non-public introspection methods
531
+ /**********************************************************
532
+ */
533
+
534
+ /**
535
+ * Helper method used to skip processing for types that we know
536
+ * can not be (i.e. are never consider to be) beans:
537
+ * things like primitives, Arrays, Enums, and proxy types.
538
+ *<p>
539
+ * Note that usually we shouldn't really be getting these sort of
540
+ * types anyway; but better safe than sorry.
541
+ */
542
+ protected boolean isPotentialBeanType(Class<?> type)
543
+ {
544
+ return (ClassUtil.canBeABeanType(type) == null) && !ClassUtil.isProxyType(type);
545
+ }
546
+
547
+ /**
548
+ * Method used to collect all actual serializable properties.
549
+ * Can be overridden to implement custom detection schemes.
550
+ */
551
+ protected List<BeanPropertyWriter> findBeanProperties(SerializationConfig config, BasicBeanDescription beanDesc)
552
+ throws JsonMappingException
553
+ {
554
+ List<BeanPropertyDefinition> properties = beanDesc.findProperties();
555
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
556
+
557
+ // [JACKSON-429]: ignore specified types
558
+ removeIgnorableTypes(config, beanDesc, properties);
559
+
560
+ // and possibly remove ones without matching mutator...
561
+ if (config.isEnabled(SerializationConfig.Feature.REQUIRE_SETTERS_FOR_GETTERS)) {
562
+ removeSetterlessGetters(config, beanDesc, properties);
563
+ }
564
+
565
+ // nothing? can't proceed (caller may or may not throw an exception)
566
+ if (properties.isEmpty()) {
567
+ return null;
568
+ }
569
+
570
+ // null is for value type serializer, which we don't have access to from here (ditto for bean prop)
571
+ boolean staticTyping = usesStaticTyping(config, beanDesc, null, null);
572
+ PropertyBuilder pb = constructPropertyBuilder(config, beanDesc);
573
+
574
+ ArrayList<BeanPropertyWriter> result = new ArrayList<BeanPropertyWriter>(properties.size());
575
+ TypeBindings typeBind = beanDesc.bindingsForBeanType();
576
+ // [JACKSON-98]: start with field properties, if any
577
+ for (BeanPropertyDefinition property : properties) {
578
+ AnnotatedMember accessor = property.getAccessor();
579
+ // [JACKSON-235]: suppress writing of back references
580
+ AnnotationIntrospector.ReferenceProperty prop = intr.findReferenceType(accessor);
581
+ if (prop != null && prop.isBackReference()) {
582
+ continue;
583
+ }
584
+ String name = property.getName();
585
+ if (accessor instanceof AnnotatedMethod) {
586
+ result.add(_constructWriter(config, typeBind, pb, staticTyping, name, (AnnotatedMethod) accessor));
587
+ } else {
588
+ result.add(_constructWriter(config, typeBind, pb, staticTyping, name, (AnnotatedField) accessor));
589
+ }
590
+ }
591
+ return result;
592
+ }
593
+
594
+ /*
595
+ /**********************************************************
596
+ /* Overridable non-public methods for manipulating bean properties
597
+ /**********************************************************
598
+ */
599
+
600
+ /**
601
+ * Overridable method that can filter out properties. Default implementation
602
+ * checks annotations class may have.
603
+ */
604
+ protected List<BeanPropertyWriter> filterBeanProperties(SerializationConfig config,
605
+ BasicBeanDescription beanDesc, List<BeanPropertyWriter> props)
606
+ {
607
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
608
+ AnnotatedClass ac = beanDesc.getClassInfo();
609
+ String[] ignored = intr.findPropertiesToIgnore(ac);
610
+ if (ignored != null && ignored.length > 0) {
611
+ HashSet<String> ignoredSet = ArrayBuilders.arrayToSet(ignored);
612
+ Iterator<BeanPropertyWriter> it = props.iterator();
613
+ while (it.hasNext()) {
614
+ if (ignoredSet.contains(it.next().getName())) {
615
+ it.remove();
616
+ }
617
+ }
618
+ }
619
+ return props;
620
+ }
621
+
622
+ /**
623
+ * Overridable method that will impose given partial ordering on
624
+ * list of discovered propertied. Method can be overridden to
625
+ * provide custom ordering of properties, beyond configurability
626
+ * offered by annotations (whic allow alphabetic ordering, as
627
+ * well as explicit ordering by providing array of property names).
628
+ *<p>
629
+ * By default Creator properties will be ordered before other
630
+ * properties. Explicit custom ordering will override this implicit
631
+ * default ordering.
632
+ */
633
+ /**
634
+ * Method that used to be called (pre-1.9) to impose configured
635
+ * ordering on list of discovered properties.
636
+ * With 1.9 it is not needed any more as ordering is done earlier.
637
+ *
638
+ * @deprecated Since 1.9 this method does nothing, so there is no
639
+ * benefit from overriding it; it will be removed from 2.0.
640
+ */
641
+ @Deprecated
642
+ protected List<BeanPropertyWriter> sortBeanProperties(SerializationConfig config,
643
+ BasicBeanDescription beanDesc, List<BeanPropertyWriter> props)
644
+ {
645
+ return props;
646
+ }
647
+
648
+ /**
649
+ * Method called to handle view information for constructed serializer,
650
+ * based on bean property writers.
651
+ *<p>
652
+ * Note that this method is designed to be overridden by sub-classes
653
+ * if they want to provide custom view handling. As such it is not
654
+ * considered an internal implementation detail, and will be supported
655
+ * as part of API going forward.
656
+ *<p>
657
+ * NOTE: signature of this method changed in 1.7, due to other significant
658
+ * changes (esp. use of builder for serializer construction).
659
+ */
660
+ protected void processViews(SerializationConfig config, BeanSerializerBuilder builder)
661
+ {
662
+ // [JACKSON-232]: whether non-annotated fields are included by default or not is configurable
663
+ List<BeanPropertyWriter> props = builder.getProperties();
664
+ boolean includeByDefault = config.isEnabled(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION);
665
+ final int propCount = props.size();
666
+ int viewsFound = 0;
667
+ BeanPropertyWriter[] filtered = new BeanPropertyWriter[propCount];
668
+ // Simple: view information is stored within individual writers, need to combine:
669
+ for (int i = 0; i < propCount; ++i) {
670
+ BeanPropertyWriter bpw = props.get(i);
671
+ Class<?>[] views = bpw.getViews();
672
+ if (views == null) { // no view info? include or exclude by default?
673
+ if (includeByDefault) {
674
+ filtered[i] = bpw;
675
+ }
676
+ } else {
677
+ ++viewsFound;
678
+ filtered[i] = constructFilteredBeanWriter(bpw, views);
679
+ }
680
+ }
681
+ // minor optimization: if no view info, include-by-default, can leave out filtering info altogether:
682
+ if (includeByDefault && viewsFound == 0) {
683
+ return;
684
+ }
685
+ builder.setFilteredProperties(filtered);
686
+ }
687
+
688
+ /**
689
+ * Method that will apply by-type limitations (as per [JACKSON-429]);
690
+ * by default this is based on {@link sh.calaba.org.codehaus.jackson.annotate.JsonIgnoreType} annotation but
691
+ * can be supplied by module-provided introspectors too.
692
+ */
693
+ protected void removeIgnorableTypes(SerializationConfig config, BasicBeanDescription beanDesc,
694
+ List<BeanPropertyDefinition> properties)
695
+ {
696
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
697
+ HashMap<Class<?>,Boolean> ignores = new HashMap<Class<?>,Boolean>();
698
+ Iterator<BeanPropertyDefinition> it = properties.iterator();
699
+ while (it.hasNext()) {
700
+ BeanPropertyDefinition property = it.next();
701
+ AnnotatedMember accessor = property.getAccessor();
702
+ if (accessor == null) {
703
+ it.remove();
704
+ continue;
705
+ }
706
+ Class<?> type = accessor.getRawType();
707
+ Boolean result = ignores.get(type);
708
+ if (result == null) {
709
+ BasicBeanDescription desc = config.introspectClassAnnotations(type);
710
+ AnnotatedClass ac = desc.getClassInfo();
711
+ result = intr.isIgnorableType(ac);
712
+ // default to false, non-ignorable
713
+ if (result == null) {
714
+ result = Boolean.FALSE;
715
+ }
716
+ ignores.put(type, result);
717
+ }
718
+ // lotsa work, and yes, it is ignorable type, so:
719
+ if (result.booleanValue()) {
720
+ it.remove();
721
+ }
722
+ }
723
+ }
724
+
725
+ /**
726
+ * Helper method that will remove all properties that do not have a
727
+ * mutator.
728
+ *
729
+ * @since 1.9
730
+ */
731
+ protected void removeSetterlessGetters(SerializationConfig config, BasicBeanDescription beanDesc,
732
+ List<BeanPropertyDefinition> properties)
733
+ {
734
+ Iterator<BeanPropertyDefinition> it = properties.iterator();
735
+ while (it.hasNext()) {
736
+ BeanPropertyDefinition property = it.next();
737
+ if (!property.couldDeserialize()) {
738
+ it.remove();
739
+ }
740
+ }
741
+ }
742
+
743
+ /*
744
+ /**********************************************************
745
+ /* Internal helper methods
746
+ /**********************************************************
747
+ */
748
+
749
+ /**
750
+ * Secondary helper method for constructing {@link BeanPropertyWriter} for
751
+ * given member (field or method).
752
+ */
753
+ protected BeanPropertyWriter _constructWriter(SerializationConfig config, TypeBindings typeContext,
754
+ PropertyBuilder pb, boolean staticTyping, String name, AnnotatedMember accessor)
755
+ throws JsonMappingException
756
+ {
757
+ if (config.isEnabled(SerializationConfig.Feature.CAN_OVERRIDE_ACCESS_MODIFIERS)) {
758
+ accessor.fixAccess();
759
+ }
760
+ JavaType type = accessor.getType(typeContext);
761
+ BeanProperty.Std property = new BeanProperty.Std(name, type, pb.getClassAnnotations(), accessor);
762
+
763
+ // Does member specify a serializer? If so, let's use it.
764
+ JsonSerializer<Object> annotatedSerializer = findSerializerFromAnnotation(config, accessor, property);
765
+ // And how about polymorphic typing? First special to cover JAXB per-field settings:
766
+ TypeSerializer contentTypeSer = null;
767
+ if (ClassUtil.isCollectionMapOrArray(type.getRawClass())) {
768
+ contentTypeSer = findPropertyContentTypeSerializer(type, config, accessor, property);
769
+ }
770
+
771
+ // and if not JAXB collection/array with annotations, maybe regular type info?
772
+ TypeSerializer typeSer = findPropertyTypeSerializer(type, config, accessor, property);
773
+ BeanPropertyWriter pbw = pb.buildWriter(name, type, annotatedSerializer,
774
+ typeSer, contentTypeSer, accessor, staticTyping);
775
+ // how about views? (1.4+)
776
+ AnnotationIntrospector intr = config.getAnnotationIntrospector();
777
+ pbw.setViews(intr.findSerializationViews(accessor));
778
+ return pbw;
779
+ }
780
+ }