calabash-android 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (532) hide show
  1. data/CHANGES.txt +1 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +8 -0
  4. data/Rakefile +2 -0
  5. data/bin/calabash-android +42 -0
  6. data/bin/calabash-android-build.rb +37 -0
  7. data/bin/calabash-android-generate.rb +26 -0
  8. data/bin/calabash-android-helpers.rb +71 -0
  9. data/bin/calabash-android-run.rb +18 -0
  10. data/bin/calabash-android-setup.rb +392 -0
  11. data/calabash-android.gemspec +23 -0
  12. data/doc/calabash-android-help.txt +21 -0
  13. data/epl-v10.html +261 -0
  14. data/features-skeleton/.irbrc +16 -0
  15. data/features-skeleton/irb_android.sh +2 -0
  16. data/features-skeleton/my_first.feature +5 -0
  17. data/features-skeleton/step_definitions/calabash_steps.rb +1 -0
  18. data/features-skeleton/support/app_installation_hooks.rb +26 -0
  19. data/features-skeleton/support/app_life_cycle_hooks.rb +28 -0
  20. data/features-skeleton/support/env.rb +1 -0
  21. data/features-skeleton/support/hooks.rb +18 -0
  22. data/lib/calabash-android.rb +2 -0
  23. data/lib/calabash-android/calabash_steps.rb +18 -0
  24. data/lib/calabash-android/canned_steps.md +239 -0
  25. data/lib/calabash-android/color_helper.rb +13 -0
  26. data/lib/calabash-android/cucumber.rb +9 -0
  27. data/lib/calabash-android/lib/screenShotTaker.jar +0 -0
  28. data/lib/calabash-android/management/adb.rb +11 -0
  29. data/lib/calabash-android/management/app_installation.rb +21 -0
  30. data/lib/calabash-android/operations.rb +283 -0
  31. data/lib/calabash-android/steps/additions_manual_steps.rb +11 -0
  32. data/lib/calabash-android/steps/app_steps.rb +10 -0
  33. data/lib/calabash-android/steps/assert_steps.rb +32 -0
  34. data/lib/calabash-android/steps/check_box_steps.rb +3 -0
  35. data/lib/calabash-android/steps/context_menu_steps.rb +12 -0
  36. data/lib/calabash-android/steps/date_picker_steps.rb +8 -0
  37. data/lib/calabash-android/steps/enter_text_steps.rb +21 -0
  38. data/lib/calabash-android/steps/location_steps.rb +19 -0
  39. data/lib/calabash-android/steps/navigation_steps.rb +27 -0
  40. data/lib/calabash-android/steps/press_button_steps.rb +35 -0
  41. data/lib/calabash-android/steps/progress_steps.rb +49 -0
  42. data/lib/calabash-android/steps/rotation_steps.rb +8 -0
  43. data/lib/calabash-android/steps/screenshot_steps.rb +11 -0
  44. data/lib/calabash-android/steps/spinner_steps.rb +3 -0
  45. data/lib/calabash-android/steps/time_picker_steps.rb +8 -0
  46. data/lib/calabash-android/version.rb +6 -0
  47. data/test-server/AndroidManifest.xml +13 -0
  48. data/test-server/build.xml +192 -0
  49. data/test-server/calabash-js/src/calabash.js +125 -0
  50. data/test-server/calabash-js/src/set_text.js +132 -0
  51. data/test-server/instrumentation-backend/.classpath +10 -0
  52. data/test-server/instrumentation-backend/.project +33 -0
  53. data/test-server/instrumentation-backend/.settings/org.eclipse.jdt.core.prefs +12 -0
  54. data/test-server/instrumentation-backend/AndroidManifest.xml +15 -0
  55. data/test-server/instrumentation-backend/assets/foo.bar +0 -0
  56. data/test-server/instrumentation-backend/gen/com/lesspainful/simpleui/test/R.java +23 -0
  57. data/test-server/instrumentation-backend/libs/robotium-solo-2.5.jar +0 -0
  58. data/test-server/instrumentation-backend/project.properties +11 -0
  59. data/test-server/instrumentation-backend/res/drawable-hdpi/ic_launcher.png +0 -0
  60. data/test-server/instrumentation-backend/res/drawable-ldpi/ic_launcher.png +0 -0
  61. data/test-server/instrumentation-backend/res/drawable-mdpi/ic_launcher.png +0 -0
  62. data/test-server/instrumentation-backend/res/layout/main.xml +12 -0
  63. data/test-server/instrumentation-backend/res/values/strings.xml +7 -0
  64. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +48 -0
  65. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java +196 -0
  66. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +64 -0
  67. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java +136 -0
  68. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Action.java +11 -0
  69. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Actions.java +113 -0
  70. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NullAction.java +23 -0
  71. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java +22 -0
  72. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java +27 -0
  73. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonNumber.java +22 -0
  74. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/WaitForButton.java +47 -0
  75. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/checkbox/ToggleCheckboxNumber.java +22 -0
  76. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressText.java +22 -0
  77. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuById.java +26 -0
  78. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByIndex.java +22 -0
  79. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java +26 -0
  80. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/ClickOnScreen.java +31 -0
  81. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +28 -0
  82. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/ListActions.java +26 -0
  83. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/LongPressListItems.java +22 -0
  84. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/PressListItems.java +22 -0
  85. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +79 -0
  86. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollDown.java +28 -0
  87. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollUp.java +28 -0
  88. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/DownKey.java +24 -0
  89. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/GoBack.java +22 -0
  90. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/PressMenu.java +26 -0
  91. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java +24 -0
  92. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java +43 -0
  93. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertText.java +31 -0
  94. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertTextOfSpecificTextViewByContentDescription.java +32 -0
  95. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextByIndex.java +22 -0
  96. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextFieldByContentDescription.java +33 -0
  97. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClickOnText.java +22 -0
  98. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByContentDescription.java +32 -0
  99. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByIndex.java +22 -0
  100. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByContentDescription.java +33 -0
  101. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByIndex.java +24 -0
  102. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByContentDescription.java +34 -0
  103. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByIndex.java +26 -0
  104. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java +63 -0
  105. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/LongPressOnViewById.java +34 -0
  106. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/Press.java +89 -0
  107. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/WaitForViewById.java +41 -0
  108. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/Wait.java +24 -0
  109. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForDialogClose.java +21 -0
  110. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForProgress.java +47 -0
  111. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForScreen.java +49 -0
  112. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForText.java +26 -0
  113. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +109 -0
  114. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +33 -0
  115. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +33 -0
  116. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +99 -0
  117. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +43 -0
  118. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +24 -0
  119. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +99 -0
  120. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +74 -0
  121. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +43 -0
  122. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +50 -0
  123. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +44 -0
  124. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java +413 -0
  125. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java +90 -0
  126. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java +29 -0
  127. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonEncoding.java +47 -0
  128. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonFactory.java +937 -0
  129. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerationException.java +28 -0
  130. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerator.java +1197 -0
  131. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonLocation.java +141 -0
  132. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonNode.java +879 -0
  133. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParseException.java +23 -0
  134. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParser.java +1434 -0
  135. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonProcessingException.java +80 -0
  136. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonStreamContext.java +122 -0
  137. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonToken.java +161 -0
  138. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/ObjectCodec.java +157 -0
  139. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/PrettyPrinter.java +166 -0
  140. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/SerializableString.java +54 -0
  141. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Version.java +90 -0
  142. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Versioned.java +20 -0
  143. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JacksonAnnotation.java +20 -0
  144. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnyGetter.java +25 -0
  145. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnySetter.java +24 -0
  146. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAutoDetect.java +148 -0
  147. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonBackReference.java +41 -0
  148. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonCreator.java +19 -0
  149. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonGetter.java +35 -0
  150. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnore.java +57 -0
  151. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreProperties.java +48 -0
  152. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreType.java +33 -0
  153. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonManagedReference.java +41 -0
  154. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonMethod.java +90 -0
  155. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonProperty.java +38 -0
  156. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonPropertyOrder.java +46 -0
  157. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonRawValue.java +33 -0
  158. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSetter.java +33 -0
  159. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSubTypes.java +44 -0
  160. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeInfo.java +236 -0
  161. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeName.java +28 -0
  162. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonUnwrapped.java +76 -0
  163. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonValue.java +46 -0
  164. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonWriteNullProperties.java +34 -0
  165. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/package-info.java +16 -0
  166. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatDetector.java +176 -0
  167. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatMatcher.java +117 -0
  168. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/InputAccessor.java +130 -0
  169. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/MatchStrength.java +64 -0
  170. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/package-info.java +8 -0
  171. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ByteSourceBootstrapper.java +518 -0
  172. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/DefaultPrettyPrinter.java +13 -0
  173. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Indenter.java +23 -0
  174. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonGeneratorBase.java +570 -0
  175. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonNumericParserBase.java +20 -0
  176. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserBase.java +1067 -0
  177. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserMinimalBase.java +539 -0
  178. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonReadContext.java +188 -0
  179. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonWriteContext.java +178 -0
  180. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParser.java +1815 -0
  181. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParserBase.java +228 -0
  182. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/StreamBasedParserBase.java +197 -0
  183. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8Generator.java +1757 -0
  184. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8StreamParser.java +2966 -0
  185. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/WriterBasedGenerator.java +1815 -0
  186. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/package-info.java +6 -0
  187. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/BaseReader.java +117 -0
  188. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/CharacterEscapes.java +73 -0
  189. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/IOContext.java +239 -0
  190. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/InputDecorator.java +67 -0
  191. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/JsonStringEncoder.java +408 -0
  192. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/MergedStream.java +145 -0
  193. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberInput.java +303 -0
  194. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberOutput.java +398 -0
  195. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/OutputDecorator.java +40 -0
  196. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SegmentedStringWriter.java +104 -0
  197. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SerializedString.java +114 -0
  198. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF32Reader.java +214 -0
  199. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF8Writer.java +387 -0
  200. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/package.html +4 -0
  201. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AbstractTypeResolver.java +63 -0
  202. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AnnotationIntrospector.java +1485 -0
  203. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanDescription.java +171 -0
  204. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanProperty.java +123 -0
  205. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanPropertyDefinition.java +66 -0
  206. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ClassIntrospector.java +117 -0
  207. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualDeserializer.java +38 -0
  208. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualKeyDeserializer.java +33 -0
  209. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualSerializer.java +38 -0
  210. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationConfig.java +926 -0
  211. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationContext.java +262 -0
  212. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationProblemHandler.java +56 -0
  213. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerFactory.java +356 -0
  214. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerProvider.java +185 -0
  215. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Deserializers.java +339 -0
  216. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/HandlerInstantiator.java +115 -0
  217. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/InjectableValues.java +85 -0
  218. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonDeserializer.java +166 -0
  219. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonMappingException.java +335 -0
  220. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializable.java +34 -0
  221. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializableWithType.java +22 -0
  222. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializer.java +138 -0
  223. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializer.java +31 -0
  224. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializers.java +21 -0
  225. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MapperConfig.java +1154 -0
  226. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingIterator.java +190 -0
  227. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingJsonFactory.java +81 -0
  228. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Module.java +255 -0
  229. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectMapper.java +2885 -0
  230. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectReader.java +958 -0
  231. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectWriter.java +554 -0
  232. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/PropertyNamingStrategy.java +258 -0
  233. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableDeserializer.java +23 -0
  234. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableSerializer.java +23 -0
  235. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/RuntimeJsonMappingException.java +21 -0
  236. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializationConfig.java +1041 -0
  237. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerFactory.java +198 -0
  238. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerProvider.java +552 -0
  239. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Serializers.java +137 -0
  240. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeDeserializer.java +118 -0
  241. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeSerializer.java +164 -0
  242. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonInject.java +30 -0
  243. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonStdImpl.java +25 -0
  244. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonCachable.java +32 -0
  245. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonDeserialize.java +109 -0
  246. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonFilter.java +31 -0
  247. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonRootName.java +29 -0
  248. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonSerialize.java +216 -0
  249. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeIdResolver.java +35 -0
  250. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeResolver.java +28 -0
  251. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonValueInstantiator.java +26 -0
  252. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonView.java +37 -0
  253. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/NoClass.java +19 -0
  254. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/package-info.java +5 -0
  255. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/AbstractDeserializer.java +102 -0
  256. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializer.java +28 -0
  257. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializers.java +11 -0
  258. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BasicDeserializerFactory.java +894 -0
  259. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializer.java +1537 -0
  260. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerBuilder.java +277 -0
  261. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerFactory.java +1474 -0
  262. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerModifier.java +58 -0
  263. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CollectionDeserializer.java +47 -0
  264. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ContainerDeserializer.java +14 -0
  265. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CustomDeserializerFactory.java +227 -0
  266. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/DateDeserializer.java +9 -0
  267. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumDeserializer.java +15 -0
  268. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumResolver.java +17 -0
  269. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/FromStringDeserializer.java +13 -0
  270. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/JsonNodeDeserializer.java +54 -0
  271. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/MapDeserializer.java +44 -0
  272. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableAnyProperty.java +177 -0
  273. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableBeanProperty.java +827 -0
  274. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializationContext.java +326 -0
  275. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializer.java +94 -0
  276. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializerProvider.java +494 -0
  277. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializers.java +119 -0
  278. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializer.java +12 -0
  279. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializers.java +11 -0
  280. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdScalarDeserializer.java +13 -0
  281. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ThrowableDeserializer.java +13 -0
  282. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/UntypedObjectDeserializer.java +9 -0
  283. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiator.java +280 -0
  284. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiators.java +52 -0
  285. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/BeanPropertyMap.java +257 -0
  286. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorCollector.java +141 -0
  287. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorProperty.java +152 -0
  288. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java +173 -0
  289. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java +117 -0
  290. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValue.java +117 -0
  291. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValueBuffer.java +102 -0
  292. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/UnwrappedPropertyHandler.java +41 -0
  293. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ValueInjector.java +45 -0
  294. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/package-info.java +9 -0
  295. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/package-info.java +5 -0
  296. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicBooleanDeserializer.java +22 -0
  297. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicReferenceDeserializer.java +47 -0
  298. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CalendarDeserializer.java +47 -0
  299. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ClassDeserializer.java +49 -0
  300. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CollectionDeserializer.java +265 -0
  301. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ContainerDeserializerBase.java +37 -0
  302. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/DateDeserializer.java +30 -0
  303. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumDeserializer.java +139 -0
  304. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumMapDeserializer.java +90 -0
  305. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumSetDeserializer.java +89 -0
  306. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java +265 -0
  307. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JavaTypeDeserializer.java +38 -0
  308. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JsonNodeDeserializer.java +314 -0
  309. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/MapDeserializer.java +412 -0
  310. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ObjectArrayDeserializer.java +201 -0
  311. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/PrimitiveArrayDeserializers.java +583 -0
  312. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdDeserializer.java +1136 -0
  313. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java +340 -0
  314. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializers.java +108 -0
  315. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdScalarDeserializer.java +34 -0
  316. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdValueInstantiator.java +392 -0
  317. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringCollectionDeserializer.java +227 -0
  318. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringDeserializer.java +55 -0
  319. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ThrowableDeserializer.java +164 -0
  320. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TimestampDeserializer.java +30 -0
  321. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TokenBufferDeserializer.java +36 -0
  322. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/UntypedObjectDeserializer.java +248 -0
  323. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/package-info.java +15 -0
  324. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/exc/UnrecognizedPropertyException.java +75 -0
  325. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLDeserializers.java +114 -0
  326. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLSerializers.java +72 -0
  327. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/DOMDeserializer.java +65 -0
  328. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/OptionalHandlerFactory.java +217 -0
  329. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/package-info.java +23 -0
  330. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/Annotated.java +85 -0
  331. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedClass.java +980 -0
  332. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedConstructor.java +143 -0
  333. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedField.java +119 -0
  334. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMember.java +56 -0
  335. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethod.java +188 -0
  336. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethodMap.java +85 -0
  337. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedParameter.java +191 -0
  338. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedWithParams.java +195 -0
  339. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotationMap.java +101 -0
  340. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicBeanDescription.java +615 -0
  341. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicClassIntrospector.java +364 -0
  342. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java +813 -0
  343. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MemberKey.java +83 -0
  344. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MethodFilter.java +12 -0
  345. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java +209 -0
  346. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertiesCollector.java +713 -0
  347. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertyBuilder.java +648 -0
  348. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/VisibilityChecker.java +424 -0
  349. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/package-info.java +12 -0
  350. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/NamedType.java +53 -0
  351. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/SubtypeResolver.java +39 -0
  352. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeIdResolver.java +74 -0
  353. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeResolverBuilder.java +151 -0
  354. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeDeserializer.java +126 -0
  355. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeSerializer.java +110 -0
  356. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeDeserializer.java +37 -0
  357. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeSerializer.java +129 -0
  358. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeDeserializer.java +191 -0
  359. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeSerializer.java +69 -0
  360. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeDeserializer.java +103 -0
  361. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeSerializer.java +121 -0
  362. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/ClassNameIdResolver.java +138 -0
  363. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/MinimalClassNameIdResolver.java +66 -0
  364. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdSubtypeResolver.java +151 -0
  365. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdTypeResolverBuilder.java +202 -0
  366. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeDeserializerBase.java +154 -0
  367. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeIdResolverBase.java +37 -0
  368. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeNameIdResolver.java +154 -0
  369. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeSerializerBase.java +31 -0
  370. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/package-info.java +9 -0
  371. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/package-info.java +10 -0
  372. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleAbstractTypeResolver.java +86 -0
  373. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleDeserializers.java +130 -0
  374. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleKeyDeserializers.java +59 -0
  375. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleModule.java +265 -0
  376. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleSerializers.java +206 -0
  377. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleValueInstantiators.java +45 -0
  378. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/package-info.java +16 -0
  379. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/package-info.java +34 -0
  380. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/AnyGetterWriter.java +48 -0
  381. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ArraySerializers.java +7 -0
  382. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BasicSerializerFactory.java +806 -0
  383. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyFilter.java +30 -0
  384. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyWriter.java +512 -0
  385. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializer.java +126 -0
  386. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerBuilder.java +140 -0
  387. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerFactory.java +780 -0
  388. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerModifier.java +95 -0
  389. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ContainerSerializers.java +8 -0
  390. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/CustomSerializerFactory.java +293 -0
  391. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/EnumSerializer.java +17 -0
  392. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilterProvider.java +23 -0
  393. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilteredBeanPropertyWriter.java +96 -0
  394. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/JdkSerializers.java +11 -0
  395. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/MapSerializer.java +58 -0
  396. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/PropertyBuilder.java +372 -0
  397. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ScalarSerializerBase.java +18 -0
  398. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/SerializerBase.java +23 -0
  399. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdKeySerializer.java +10 -0
  400. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializerProvider.java +852 -0
  401. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializers.java +372 -0
  402. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ToStringSerializer.java +14 -0
  403. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/FailingSerializer.java +43 -0
  404. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/JsonSerializerMap.java +93 -0
  405. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/PropertySerializerMap.java +231 -0
  406. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/ReadOnlyClassToSerializerMap.java +73 -0
  407. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SerializerCache.java +304 -0
  408. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleBeanPropertyFilter.java +109 -0
  409. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleFilterProvider.java +114 -0
  410. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnknownSerializer.java +54 -0
  411. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanPropertyWriter.java +99 -0
  412. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanSerializer.java +76 -0
  413. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/package-info.java +5 -0
  414. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/package-info.java +5 -0
  415. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/AsArraySerializerBase.java +185 -0
  416. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/BeanSerializerBase.java +340 -0
  417. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CalendarSerializer.java +43 -0
  418. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CollectionSerializer.java +113 -0
  419. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ContainerSerializerBase.java +51 -0
  420. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/DateSerializer.java +42 -0
  421. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumMapSerializer.java +218 -0
  422. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSerializer.java +84 -0
  423. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSetSerializer.java +47 -0
  424. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IndexedStringListSerializer.java +116 -0
  425. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/InetAddressSerializer.java +51 -0
  426. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IterableSerializer.java +63 -0
  427. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java +233 -0
  428. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/MapSerializer.java +422 -0
  429. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NonTypedScalarSerializerBase.java +34 -0
  430. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NullSerializer.java +38 -0
  431. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ObjectArraySerializer.java +281 -0
  432. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/RawSerializer.java +52 -0
  433. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ScalarSerializerBase.java +52 -0
  434. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableSerializer.java +99 -0
  435. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableWithTypeSerializer.java +90 -0
  436. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializerBase.java +184 -0
  437. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StaticListSerializerBase.java +46 -0
  438. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdArraySerializers.java +476 -0
  439. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdContainerSerializers.java +249 -0
  440. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdJdkSerializers.java +195 -0
  441. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializer.java +43 -0
  442. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializers.java +95 -0
  443. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringCollectionSerializer.java +119 -0
  444. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringSerializer.java +36 -0
  445. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TimeZoneSerializer.java +38 -0
  446. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ToStringSerializer.java +73 -0
  447. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TokenBufferSerializer.java +66 -0
  448. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ArrayType.java +260 -0
  449. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ClassKey.java +94 -0
  450. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionLikeType.java +204 -0
  451. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionType.java +94 -0
  452. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/HierarchicType.java +88 -0
  453. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapLikeType.java +265 -0
  454. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapType.java +146 -0
  455. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/SimpleType.java +250 -0
  456. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBase.java +148 -0
  457. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBindings.java +351 -0
  458. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeFactory.java +1165 -0
  459. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeModifier.java +38 -0
  460. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeParser.java +134 -0
  461. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/package-info.java +10 -0
  462. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Annotations.java +23 -0
  463. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ArrayBuilders.java +293 -0
  464. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/BeanUtil.java +260 -0
  465. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ClassUtil.java +645 -0
  466. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Comparators.java +48 -0
  467. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumResolver.java +108 -0
  468. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumValues.java +82 -0
  469. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601DateFormat.java +52 -0
  470. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601Utils.java +230 -0
  471. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONPObject.java +105 -0
  472. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONWrappedObject.java +117 -0
  473. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LRUMap.java +28 -0
  474. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LinkedNode.java +45 -0
  475. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Named.java +10 -0
  476. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ObjectBuffer.java +257 -0
  477. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/PrimitiveArrayBuilder.java +180 -0
  478. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Provider.java +21 -0
  479. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/RootNameLookup.java +54 -0
  480. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/StdDateFormat.java +348 -0
  481. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/package-info.java +4 -0
  482. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ArrayNode.java +758 -0
  483. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BaseJsonNode.java +122 -0
  484. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BigIntegerNode.java +104 -0
  485. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BinaryNode.java +136 -0
  486. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BooleanNode.java +84 -0
  487. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ContainerNode.java +185 -0
  488. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DecimalNode.java +96 -0
  489. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DoubleNode.java +106 -0
  490. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/IntNode.java +122 -0
  491. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/JsonNodeFactory.java +222 -0
  492. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/LongNode.java +99 -0
  493. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/MissingNode.java +97 -0
  494. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NodeCursor.java +222 -0
  495. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NullNode.java +58 -0
  496. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NumericNode.java +72 -0
  497. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ObjectNode.java +696 -0
  498. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/POJONode.java +145 -0
  499. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TextNode.java +299 -0
  500. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TreeTraversingParser.java +383 -0
  501. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ValueNode.java +58 -0
  502. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/package-info.java +8 -0
  503. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/package-info.java +30 -0
  504. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSchema.java +82 -0
  505. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSerializableSchema.java +46 -0
  506. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/SchemaAware.java +25 -0
  507. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/package-info.java +5 -0
  508. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/BytesToNameCanonicalizer.java +969 -0
  509. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/CharsToNameCanonicalizer.java +578 -0
  510. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name.java +50 -0
  511. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name1.java +44 -0
  512. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name2.java +40 -0
  513. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name3.java +39 -0
  514. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/NameN.java +68 -0
  515. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/package-info.java +5 -0
  516. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/JavaType.java +503 -0
  517. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/TypeReference.java +60 -0
  518. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/package-info.java +8 -0
  519. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/BufferRecycler.java +109 -0
  520. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/ByteArrayBuilder.java +294 -0
  521. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/CharTypes.java +237 -0
  522. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/DefaultPrettyPrinter.java +282 -0
  523. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/InternCache.java +49 -0
  524. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonGeneratorDelegate.java +273 -0
  525. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserDelegate.java +251 -0
  526. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserSequence.java +150 -0
  527. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/MinimalPrettyPrinter.java +152 -0
  528. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TextBuffer.java +707 -0
  529. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java +1233 -0
  530. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java +79 -0
  531. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java +4 -0
  532. metadata +619 -0
@@ -0,0 +1,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
+ }