calabash-android 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. data/CHANGES.txt +1 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +8 -0
  4. data/Rakefile +2 -0
  5. data/bin/calabash-android +42 -0
  6. data/bin/calabash-android-build.rb +37 -0
  7. data/bin/calabash-android-generate.rb +26 -0
  8. data/bin/calabash-android-helpers.rb +71 -0
  9. data/bin/calabash-android-run.rb +18 -0
  10. data/bin/calabash-android-setup.rb +392 -0
  11. data/calabash-android.gemspec +23 -0
  12. data/doc/calabash-android-help.txt +21 -0
  13. data/epl-v10.html +261 -0
  14. data/features-skeleton/.irbrc +16 -0
  15. data/features-skeleton/irb_android.sh +2 -0
  16. data/features-skeleton/my_first.feature +5 -0
  17. data/features-skeleton/step_definitions/calabash_steps.rb +1 -0
  18. data/features-skeleton/support/app_installation_hooks.rb +26 -0
  19. data/features-skeleton/support/app_life_cycle_hooks.rb +28 -0
  20. data/features-skeleton/support/env.rb +1 -0
  21. data/features-skeleton/support/hooks.rb +18 -0
  22. data/lib/calabash-android.rb +2 -0
  23. data/lib/calabash-android/calabash_steps.rb +18 -0
  24. data/lib/calabash-android/canned_steps.md +239 -0
  25. data/lib/calabash-android/color_helper.rb +13 -0
  26. data/lib/calabash-android/cucumber.rb +9 -0
  27. data/lib/calabash-android/lib/screenShotTaker.jar +0 -0
  28. data/lib/calabash-android/management/adb.rb +11 -0
  29. data/lib/calabash-android/management/app_installation.rb +21 -0
  30. data/lib/calabash-android/operations.rb +283 -0
  31. data/lib/calabash-android/steps/additions_manual_steps.rb +11 -0
  32. data/lib/calabash-android/steps/app_steps.rb +10 -0
  33. data/lib/calabash-android/steps/assert_steps.rb +32 -0
  34. data/lib/calabash-android/steps/check_box_steps.rb +3 -0
  35. data/lib/calabash-android/steps/context_menu_steps.rb +12 -0
  36. data/lib/calabash-android/steps/date_picker_steps.rb +8 -0
  37. data/lib/calabash-android/steps/enter_text_steps.rb +21 -0
  38. data/lib/calabash-android/steps/location_steps.rb +19 -0
  39. data/lib/calabash-android/steps/navigation_steps.rb +27 -0
  40. data/lib/calabash-android/steps/press_button_steps.rb +35 -0
  41. data/lib/calabash-android/steps/progress_steps.rb +49 -0
  42. data/lib/calabash-android/steps/rotation_steps.rb +8 -0
  43. data/lib/calabash-android/steps/screenshot_steps.rb +11 -0
  44. data/lib/calabash-android/steps/spinner_steps.rb +3 -0
  45. data/lib/calabash-android/steps/time_picker_steps.rb +8 -0
  46. data/lib/calabash-android/version.rb +6 -0
  47. data/test-server/AndroidManifest.xml +13 -0
  48. data/test-server/build.xml +192 -0
  49. data/test-server/calabash-js/src/calabash.js +125 -0
  50. data/test-server/calabash-js/src/set_text.js +132 -0
  51. data/test-server/instrumentation-backend/.classpath +10 -0
  52. data/test-server/instrumentation-backend/.project +33 -0
  53. data/test-server/instrumentation-backend/.settings/org.eclipse.jdt.core.prefs +12 -0
  54. data/test-server/instrumentation-backend/AndroidManifest.xml +15 -0
  55. data/test-server/instrumentation-backend/assets/foo.bar +0 -0
  56. data/test-server/instrumentation-backend/gen/com/lesspainful/simpleui/test/R.java +23 -0
  57. data/test-server/instrumentation-backend/libs/robotium-solo-2.5.jar +0 -0
  58. data/test-server/instrumentation-backend/project.properties +11 -0
  59. data/test-server/instrumentation-backend/res/drawable-hdpi/ic_launcher.png +0 -0
  60. data/test-server/instrumentation-backend/res/drawable-ldpi/ic_launcher.png +0 -0
  61. data/test-server/instrumentation-backend/res/drawable-mdpi/ic_launcher.png +0 -0
  62. data/test-server/instrumentation-backend/res/layout/main.xml +12 -0
  63. data/test-server/instrumentation-backend/res/values/strings.xml +7 -0
  64. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +48 -0
  65. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java +196 -0
  66. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +64 -0
  67. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java +136 -0
  68. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Action.java +11 -0
  69. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Actions.java +113 -0
  70. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NullAction.java +23 -0
  71. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java +22 -0
  72. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java +27 -0
  73. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonNumber.java +22 -0
  74. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/WaitForButton.java +47 -0
  75. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/checkbox/ToggleCheckboxNumber.java +22 -0
  76. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressText.java +22 -0
  77. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuById.java +26 -0
  78. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByIndex.java +22 -0
  79. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java +26 -0
  80. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/ClickOnScreen.java +31 -0
  81. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +28 -0
  82. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/ListActions.java +26 -0
  83. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/LongPressListItems.java +22 -0
  84. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/PressListItems.java +22 -0
  85. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +79 -0
  86. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollDown.java +28 -0
  87. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollUp.java +28 -0
  88. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/DownKey.java +24 -0
  89. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/GoBack.java +22 -0
  90. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/PressMenu.java +26 -0
  91. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java +24 -0
  92. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java +43 -0
  93. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertText.java +31 -0
  94. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertTextOfSpecificTextViewByContentDescription.java +32 -0
  95. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextByIndex.java +22 -0
  96. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextFieldByContentDescription.java +33 -0
  97. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClickOnText.java +22 -0
  98. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByContentDescription.java +32 -0
  99. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByIndex.java +22 -0
  100. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByContentDescription.java +33 -0
  101. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByIndex.java +24 -0
  102. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByContentDescription.java +34 -0
  103. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByIndex.java +26 -0
  104. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java +63 -0
  105. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/LongPressOnViewById.java +34 -0
  106. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/Press.java +89 -0
  107. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/WaitForViewById.java +41 -0
  108. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/Wait.java +24 -0
  109. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForDialogClose.java +21 -0
  110. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForProgress.java +47 -0
  111. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForScreen.java +49 -0
  112. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForText.java +26 -0
  113. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +109 -0
  114. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +33 -0
  115. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +33 -0
  116. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +99 -0
  117. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +43 -0
  118. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +24 -0
  119. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +99 -0
  120. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +74 -0
  121. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +43 -0
  122. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +50 -0
  123. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +44 -0
  124. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java +413 -0
  125. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java +90 -0
  126. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java +29 -0
  127. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonEncoding.java +47 -0
  128. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonFactory.java +937 -0
  129. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerationException.java +28 -0
  130. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerator.java +1197 -0
  131. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonLocation.java +141 -0
  132. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonNode.java +879 -0
  133. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParseException.java +23 -0
  134. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParser.java +1434 -0
  135. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonProcessingException.java +80 -0
  136. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonStreamContext.java +122 -0
  137. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonToken.java +161 -0
  138. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/ObjectCodec.java +157 -0
  139. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/PrettyPrinter.java +166 -0
  140. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/SerializableString.java +54 -0
  141. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Version.java +90 -0
  142. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Versioned.java +20 -0
  143. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JacksonAnnotation.java +20 -0
  144. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnyGetter.java +25 -0
  145. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnySetter.java +24 -0
  146. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAutoDetect.java +148 -0
  147. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonBackReference.java +41 -0
  148. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonCreator.java +19 -0
  149. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonGetter.java +35 -0
  150. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnore.java +57 -0
  151. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreProperties.java +48 -0
  152. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreType.java +33 -0
  153. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonManagedReference.java +41 -0
  154. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonMethod.java +90 -0
  155. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonProperty.java +38 -0
  156. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonPropertyOrder.java +46 -0
  157. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonRawValue.java +33 -0
  158. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSetter.java +33 -0
  159. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSubTypes.java +44 -0
  160. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeInfo.java +236 -0
  161. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeName.java +28 -0
  162. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonUnwrapped.java +76 -0
  163. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonValue.java +46 -0
  164. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonWriteNullProperties.java +34 -0
  165. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/package-info.java +16 -0
  166. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatDetector.java +176 -0
  167. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatMatcher.java +117 -0
  168. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/InputAccessor.java +130 -0
  169. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/MatchStrength.java +64 -0
  170. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/package-info.java +8 -0
  171. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ByteSourceBootstrapper.java +518 -0
  172. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/DefaultPrettyPrinter.java +13 -0
  173. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Indenter.java +23 -0
  174. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonGeneratorBase.java +570 -0
  175. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonNumericParserBase.java +20 -0
  176. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserBase.java +1067 -0
  177. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserMinimalBase.java +539 -0
  178. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonReadContext.java +188 -0
  179. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonWriteContext.java +178 -0
  180. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParser.java +1815 -0
  181. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParserBase.java +228 -0
  182. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/StreamBasedParserBase.java +197 -0
  183. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8Generator.java +1757 -0
  184. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8StreamParser.java +2966 -0
  185. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/WriterBasedGenerator.java +1815 -0
  186. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/package-info.java +6 -0
  187. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/BaseReader.java +117 -0
  188. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/CharacterEscapes.java +73 -0
  189. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/IOContext.java +239 -0
  190. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/InputDecorator.java +67 -0
  191. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/JsonStringEncoder.java +408 -0
  192. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/MergedStream.java +145 -0
  193. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberInput.java +303 -0
  194. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberOutput.java +398 -0
  195. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/OutputDecorator.java +40 -0
  196. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SegmentedStringWriter.java +104 -0
  197. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SerializedString.java +114 -0
  198. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF32Reader.java +214 -0
  199. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF8Writer.java +387 -0
  200. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/package.html +4 -0
  201. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AbstractTypeResolver.java +63 -0
  202. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AnnotationIntrospector.java +1485 -0
  203. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanDescription.java +171 -0
  204. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanProperty.java +123 -0
  205. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanPropertyDefinition.java +66 -0
  206. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ClassIntrospector.java +117 -0
  207. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualDeserializer.java +38 -0
  208. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualKeyDeserializer.java +33 -0
  209. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualSerializer.java +38 -0
  210. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationConfig.java +926 -0
  211. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationContext.java +262 -0
  212. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationProblemHandler.java +56 -0
  213. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerFactory.java +356 -0
  214. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerProvider.java +185 -0
  215. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Deserializers.java +339 -0
  216. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/HandlerInstantiator.java +115 -0
  217. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/InjectableValues.java +85 -0
  218. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonDeserializer.java +166 -0
  219. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonMappingException.java +335 -0
  220. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializable.java +34 -0
  221. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializableWithType.java +22 -0
  222. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializer.java +138 -0
  223. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializer.java +31 -0
  224. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializers.java +21 -0
  225. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MapperConfig.java +1154 -0
  226. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingIterator.java +190 -0
  227. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingJsonFactory.java +81 -0
  228. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Module.java +255 -0
  229. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectMapper.java +2885 -0
  230. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectReader.java +958 -0
  231. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectWriter.java +554 -0
  232. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/PropertyNamingStrategy.java +258 -0
  233. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableDeserializer.java +23 -0
  234. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableSerializer.java +23 -0
  235. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/RuntimeJsonMappingException.java +21 -0
  236. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializationConfig.java +1041 -0
  237. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerFactory.java +198 -0
  238. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerProvider.java +552 -0
  239. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Serializers.java +137 -0
  240. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeDeserializer.java +118 -0
  241. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeSerializer.java +164 -0
  242. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonInject.java +30 -0
  243. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonStdImpl.java +25 -0
  244. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonCachable.java +32 -0
  245. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonDeserialize.java +109 -0
  246. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonFilter.java +31 -0
  247. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonRootName.java +29 -0
  248. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonSerialize.java +216 -0
  249. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeIdResolver.java +35 -0
  250. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeResolver.java +28 -0
  251. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonValueInstantiator.java +26 -0
  252. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonView.java +37 -0
  253. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/NoClass.java +19 -0
  254. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/package-info.java +5 -0
  255. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/AbstractDeserializer.java +102 -0
  256. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializer.java +28 -0
  257. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializers.java +11 -0
  258. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BasicDeserializerFactory.java +894 -0
  259. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializer.java +1537 -0
  260. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerBuilder.java +277 -0
  261. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerFactory.java +1474 -0
  262. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerModifier.java +58 -0
  263. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CollectionDeserializer.java +47 -0
  264. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ContainerDeserializer.java +14 -0
  265. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CustomDeserializerFactory.java +227 -0
  266. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/DateDeserializer.java +9 -0
  267. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumDeserializer.java +15 -0
  268. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumResolver.java +17 -0
  269. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/FromStringDeserializer.java +13 -0
  270. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/JsonNodeDeserializer.java +54 -0
  271. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/MapDeserializer.java +44 -0
  272. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableAnyProperty.java +177 -0
  273. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableBeanProperty.java +827 -0
  274. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializationContext.java +326 -0
  275. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializer.java +94 -0
  276. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializerProvider.java +494 -0
  277. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializers.java +119 -0
  278. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializer.java +12 -0
  279. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializers.java +11 -0
  280. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdScalarDeserializer.java +13 -0
  281. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ThrowableDeserializer.java +13 -0
  282. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/UntypedObjectDeserializer.java +9 -0
  283. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiator.java +280 -0
  284. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiators.java +52 -0
  285. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/BeanPropertyMap.java +257 -0
  286. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorCollector.java +141 -0
  287. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorProperty.java +152 -0
  288. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java +173 -0
  289. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java +117 -0
  290. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValue.java +117 -0
  291. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValueBuffer.java +102 -0
  292. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/UnwrappedPropertyHandler.java +41 -0
  293. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ValueInjector.java +45 -0
  294. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/package-info.java +9 -0
  295. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/package-info.java +5 -0
  296. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicBooleanDeserializer.java +22 -0
  297. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicReferenceDeserializer.java +47 -0
  298. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CalendarDeserializer.java +47 -0
  299. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ClassDeserializer.java +49 -0
  300. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CollectionDeserializer.java +265 -0
  301. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ContainerDeserializerBase.java +37 -0
  302. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/DateDeserializer.java +30 -0
  303. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumDeserializer.java +139 -0
  304. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumMapDeserializer.java +90 -0
  305. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumSetDeserializer.java +89 -0
  306. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java +265 -0
  307. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JavaTypeDeserializer.java +38 -0
  308. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JsonNodeDeserializer.java +314 -0
  309. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/MapDeserializer.java +412 -0
  310. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ObjectArrayDeserializer.java +201 -0
  311. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/PrimitiveArrayDeserializers.java +583 -0
  312. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdDeserializer.java +1136 -0
  313. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java +340 -0
  314. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializers.java +108 -0
  315. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdScalarDeserializer.java +34 -0
  316. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdValueInstantiator.java +392 -0
  317. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringCollectionDeserializer.java +227 -0
  318. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringDeserializer.java +55 -0
  319. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ThrowableDeserializer.java +164 -0
  320. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TimestampDeserializer.java +30 -0
  321. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TokenBufferDeserializer.java +36 -0
  322. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/UntypedObjectDeserializer.java +248 -0
  323. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/package-info.java +15 -0
  324. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/exc/UnrecognizedPropertyException.java +75 -0
  325. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLDeserializers.java +114 -0
  326. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLSerializers.java +72 -0
  327. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/DOMDeserializer.java +65 -0
  328. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/OptionalHandlerFactory.java +217 -0
  329. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/package-info.java +23 -0
  330. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/Annotated.java +85 -0
  331. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedClass.java +980 -0
  332. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedConstructor.java +143 -0
  333. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedField.java +119 -0
  334. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMember.java +56 -0
  335. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethod.java +188 -0
  336. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethodMap.java +85 -0
  337. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedParameter.java +191 -0
  338. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedWithParams.java +195 -0
  339. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotationMap.java +101 -0
  340. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicBeanDescription.java +615 -0
  341. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicClassIntrospector.java +364 -0
  342. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java +813 -0
  343. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MemberKey.java +83 -0
  344. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MethodFilter.java +12 -0
  345. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java +209 -0
  346. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertiesCollector.java +713 -0
  347. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertyBuilder.java +648 -0
  348. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/VisibilityChecker.java +424 -0
  349. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/package-info.java +12 -0
  350. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/NamedType.java +53 -0
  351. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/SubtypeResolver.java +39 -0
  352. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeIdResolver.java +74 -0
  353. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeResolverBuilder.java +151 -0
  354. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeDeserializer.java +126 -0
  355. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeSerializer.java +110 -0
  356. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeDeserializer.java +37 -0
  357. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeSerializer.java +129 -0
  358. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeDeserializer.java +191 -0
  359. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeSerializer.java +69 -0
  360. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeDeserializer.java +103 -0
  361. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeSerializer.java +121 -0
  362. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/ClassNameIdResolver.java +138 -0
  363. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/MinimalClassNameIdResolver.java +66 -0
  364. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdSubtypeResolver.java +151 -0
  365. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdTypeResolverBuilder.java +202 -0
  366. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeDeserializerBase.java +154 -0
  367. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeIdResolverBase.java +37 -0
  368. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeNameIdResolver.java +154 -0
  369. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeSerializerBase.java +31 -0
  370. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/package-info.java +9 -0
  371. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/package-info.java +10 -0
  372. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleAbstractTypeResolver.java +86 -0
  373. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleDeserializers.java +130 -0
  374. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleKeyDeserializers.java +59 -0
  375. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleModule.java +265 -0
  376. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleSerializers.java +206 -0
  377. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleValueInstantiators.java +45 -0
  378. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/package-info.java +16 -0
  379. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/package-info.java +34 -0
  380. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/AnyGetterWriter.java +48 -0
  381. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ArraySerializers.java +7 -0
  382. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BasicSerializerFactory.java +806 -0
  383. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyFilter.java +30 -0
  384. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyWriter.java +512 -0
  385. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializer.java +126 -0
  386. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerBuilder.java +140 -0
  387. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerFactory.java +780 -0
  388. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerModifier.java +95 -0
  389. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ContainerSerializers.java +8 -0
  390. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/CustomSerializerFactory.java +293 -0
  391. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/EnumSerializer.java +17 -0
  392. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilterProvider.java +23 -0
  393. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilteredBeanPropertyWriter.java +96 -0
  394. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/JdkSerializers.java +11 -0
  395. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/MapSerializer.java +58 -0
  396. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/PropertyBuilder.java +372 -0
  397. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ScalarSerializerBase.java +18 -0
  398. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/SerializerBase.java +23 -0
  399. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdKeySerializer.java +10 -0
  400. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializerProvider.java +852 -0
  401. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializers.java +372 -0
  402. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ToStringSerializer.java +14 -0
  403. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/FailingSerializer.java +43 -0
  404. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/JsonSerializerMap.java +93 -0
  405. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/PropertySerializerMap.java +231 -0
  406. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/ReadOnlyClassToSerializerMap.java +73 -0
  407. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SerializerCache.java +304 -0
  408. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleBeanPropertyFilter.java +109 -0
  409. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleFilterProvider.java +114 -0
  410. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnknownSerializer.java +54 -0
  411. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanPropertyWriter.java +99 -0
  412. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanSerializer.java +76 -0
  413. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/package-info.java +5 -0
  414. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/package-info.java +5 -0
  415. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/AsArraySerializerBase.java +185 -0
  416. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/BeanSerializerBase.java +340 -0
  417. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CalendarSerializer.java +43 -0
  418. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CollectionSerializer.java +113 -0
  419. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ContainerSerializerBase.java +51 -0
  420. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/DateSerializer.java +42 -0
  421. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumMapSerializer.java +218 -0
  422. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSerializer.java +84 -0
  423. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSetSerializer.java +47 -0
  424. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IndexedStringListSerializer.java +116 -0
  425. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/InetAddressSerializer.java +51 -0
  426. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IterableSerializer.java +63 -0
  427. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java +233 -0
  428. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/MapSerializer.java +422 -0
  429. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NonTypedScalarSerializerBase.java +34 -0
  430. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NullSerializer.java +38 -0
  431. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ObjectArraySerializer.java +281 -0
  432. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/RawSerializer.java +52 -0
  433. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ScalarSerializerBase.java +52 -0
  434. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableSerializer.java +99 -0
  435. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableWithTypeSerializer.java +90 -0
  436. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializerBase.java +184 -0
  437. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StaticListSerializerBase.java +46 -0
  438. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdArraySerializers.java +476 -0
  439. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdContainerSerializers.java +249 -0
  440. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdJdkSerializers.java +195 -0
  441. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializer.java +43 -0
  442. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializers.java +95 -0
  443. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringCollectionSerializer.java +119 -0
  444. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringSerializer.java +36 -0
  445. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TimeZoneSerializer.java +38 -0
  446. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ToStringSerializer.java +73 -0
  447. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TokenBufferSerializer.java +66 -0
  448. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ArrayType.java +260 -0
  449. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ClassKey.java +94 -0
  450. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionLikeType.java +204 -0
  451. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionType.java +94 -0
  452. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/HierarchicType.java +88 -0
  453. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapLikeType.java +265 -0
  454. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapType.java +146 -0
  455. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/SimpleType.java +250 -0
  456. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBase.java +148 -0
  457. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBindings.java +351 -0
  458. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeFactory.java +1165 -0
  459. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeModifier.java +38 -0
  460. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeParser.java +134 -0
  461. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/package-info.java +10 -0
  462. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Annotations.java +23 -0
  463. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ArrayBuilders.java +293 -0
  464. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/BeanUtil.java +260 -0
  465. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ClassUtil.java +645 -0
  466. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Comparators.java +48 -0
  467. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumResolver.java +108 -0
  468. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumValues.java +82 -0
  469. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601DateFormat.java +52 -0
  470. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601Utils.java +230 -0
  471. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONPObject.java +105 -0
  472. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONWrappedObject.java +117 -0
  473. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LRUMap.java +28 -0
  474. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LinkedNode.java +45 -0
  475. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Named.java +10 -0
  476. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ObjectBuffer.java +257 -0
  477. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/PrimitiveArrayBuilder.java +180 -0
  478. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Provider.java +21 -0
  479. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/RootNameLookup.java +54 -0
  480. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/StdDateFormat.java +348 -0
  481. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/package-info.java +4 -0
  482. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ArrayNode.java +758 -0
  483. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BaseJsonNode.java +122 -0
  484. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BigIntegerNode.java +104 -0
  485. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BinaryNode.java +136 -0
  486. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BooleanNode.java +84 -0
  487. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ContainerNode.java +185 -0
  488. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DecimalNode.java +96 -0
  489. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DoubleNode.java +106 -0
  490. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/IntNode.java +122 -0
  491. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/JsonNodeFactory.java +222 -0
  492. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/LongNode.java +99 -0
  493. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/MissingNode.java +97 -0
  494. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NodeCursor.java +222 -0
  495. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NullNode.java +58 -0
  496. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NumericNode.java +72 -0
  497. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ObjectNode.java +696 -0
  498. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/POJONode.java +145 -0
  499. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TextNode.java +299 -0
  500. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TreeTraversingParser.java +383 -0
  501. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ValueNode.java +58 -0
  502. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/package-info.java +8 -0
  503. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/package-info.java +30 -0
  504. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSchema.java +82 -0
  505. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSerializableSchema.java +46 -0
  506. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/SchemaAware.java +25 -0
  507. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/package-info.java +5 -0
  508. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/BytesToNameCanonicalizer.java +969 -0
  509. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/CharsToNameCanonicalizer.java +578 -0
  510. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name.java +50 -0
  511. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name1.java +44 -0
  512. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name2.java +40 -0
  513. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name3.java +39 -0
  514. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/NameN.java +68 -0
  515. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/package-info.java +5 -0
  516. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/JavaType.java +503 -0
  517. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/TypeReference.java +60 -0
  518. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/package-info.java +8 -0
  519. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/BufferRecycler.java +109 -0
  520. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/ByteArrayBuilder.java +294 -0
  521. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/CharTypes.java +237 -0
  522. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/DefaultPrettyPrinter.java +282 -0
  523. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/InternCache.java +49 -0
  524. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonGeneratorDelegate.java +273 -0
  525. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserDelegate.java +251 -0
  526. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserSequence.java +150 -0
  527. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/MinimalPrettyPrinter.java +152 -0
  528. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TextBuffer.java +707 -0
  529. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java +1233 -0
  530. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java +79 -0
  531. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java +4 -0
  532. metadata +619 -0
@@ -0,0 +1,23 @@
1
+ /**
2
+ Contains extended support for "external" packages: things that
3
+ may or may not be present in runtime environment, but that are
4
+ commonly enough used so that explicit support can be added.
5
+ <p>
6
+ Currently supported extensions include:
7
+ <ul>
8
+ <li>Support for Java 1.5 core XML datatypes: the reason these are
9
+ considered "external" is that some platforms that claim to be 1.5 conformant
10
+ are only partially so (Google Android, GAE) and do not included these
11
+ types.
12
+ </li>
13
+ <li>Joda time. This package has superior date/time handling functionality,
14
+ and is thus supported. However, to minimize forced dependencies this
15
+ support is added as extension so that Joda is not needed by Jackson
16
+ itself: but if it is present, its core types are supported to some
17
+ degree
18
+ </li>
19
+ </ul>
20
+
21
+ */
22
+
23
+ package sh.calaba.org.codehaus.jackson.map.ext;
@@ -0,0 +1,85 @@
1
+ package sh.calaba.org.codehaus.jackson.map.introspect;
2
+
3
+ import java.lang.annotation.Annotation;
4
+ import java.lang.reflect.AnnotatedElement;
5
+ import java.lang.reflect.Modifier;
6
+ import java.lang.reflect.Type;
7
+
8
+ import sh.calaba.org.codehaus.jackson.map.type.TypeBindings;
9
+ import sh.calaba.org.codehaus.jackson.type.JavaType;
10
+
11
+ /**
12
+ * Shared base class used for anything on which annotations (included
13
+ * within a {@link AnnotationMap}).
14
+ */
15
+ public abstract class Annotated
16
+ {
17
+ protected Annotated() { }
18
+
19
+ public abstract <A extends Annotation> A getAnnotation(Class<A> acls);
20
+
21
+ public final <A extends Annotation> boolean hasAnnotation(Class<A> acls)
22
+ {
23
+ return getAnnotation(acls) != null;
24
+ }
25
+
26
+ /**
27
+ * Fluent factory method that will construct a new instance that uses specified
28
+ * instance annotations instead of currently configured ones.
29
+ *
30
+ * @since 1.9
31
+ */
32
+ public abstract Annotated withAnnotations(AnnotationMap fallback);
33
+
34
+ /**
35
+ * Fluent factory method that will construct a new instance that uses
36
+ * annotations from specified {@link Annotated} as fallback annotations
37
+ *
38
+ * @since 1.9
39
+ */
40
+ public final Annotated withFallBackAnnotationsFrom(Annotated annotated) {
41
+ return withAnnotations(AnnotationMap.merge(getAllAnnotations(), annotated.getAllAnnotations()));
42
+ }
43
+
44
+ /**
45
+ * Method that can be used to find actual JDK element that this instance
46
+ * represents. It is non-null, except for method/constructor parameters
47
+ * which do not have a JDK counterpart.
48
+ */
49
+ public abstract AnnotatedElement getAnnotated();
50
+
51
+ protected abstract int getModifiers();
52
+
53
+ public final boolean isPublic() {
54
+ return Modifier.isPublic(getModifiers());
55
+ }
56
+
57
+ public abstract String getName();
58
+
59
+ /**
60
+ * Full generic type of the annotated element; definition
61
+ * of what exactly this means depends on sub-class.
62
+ */
63
+ public JavaType getType(TypeBindings context) {
64
+ return context.resolveType(getGenericType());
65
+ }
66
+
67
+ /**
68
+ * Full generic type of the annotated element; definition
69
+ * of what exactly this means depends on sub-class.
70
+ *
71
+ * @since 1.5
72
+ */
73
+ public abstract Type getGenericType();
74
+
75
+ /**
76
+ * "Raw" type (type-erased class) of the annotated element; definition
77
+ * of what exactly this means depends on sub-class.
78
+ *
79
+ * @since 1.5
80
+ */
81
+ public abstract Class<?> getRawType();
82
+
83
+ protected abstract AnnotationMap getAllAnnotations();
84
+ }
85
+
@@ -0,0 +1,980 @@
1
+ package sh.calaba.org.codehaus.jackson.map.introspect;
2
+
3
+ import java.lang.annotation.Annotation;
4
+ import java.lang.reflect.*;
5
+ import java.util.*;
6
+
7
+ import sh.calaba.org.codehaus.jackson.map.AnnotationIntrospector;
8
+ import sh.calaba.org.codehaus.jackson.map.ClassIntrospector.MixInResolver;
9
+ import sh.calaba.org.codehaus.jackson.map.util.Annotations;
10
+ import sh.calaba.org.codehaus.jackson.map.util.ClassUtil;
11
+
12
+ public final class AnnotatedClass
13
+ extends Annotated
14
+ {
15
+ private final static AnnotationMap[] NO_ANNOTATION_MAPS = new AnnotationMap[0];
16
+
17
+ /*
18
+ /**********************************************************
19
+ /* Configuration
20
+ /**********************************************************
21
+ */
22
+
23
+ /**
24
+ * Class for which annotations apply, and that owns other
25
+ * components (constructors, methods)
26
+ */
27
+ final protected Class<?> _class;
28
+
29
+ /**
30
+ * Ordered set of super classes and interfaces of the
31
+ * class itself: included in order of precedence
32
+ */
33
+ final protected List<Class<?>> _superTypes;
34
+
35
+ /**
36
+ * Filter used to determine which annotations to gather; used
37
+ * to optimize things so that unnecessary annotations are
38
+ * ignored.
39
+ */
40
+ final protected AnnotationIntrospector _annotationIntrospector;
41
+
42
+ /**
43
+ * Object that knows mapping of mix-in classes (ones that contain
44
+ * annotations to add) with their target classes (ones that
45
+ * get these additional annotations "mixed in").
46
+ */
47
+ final protected MixInResolver _mixInResolver;
48
+
49
+ /**
50
+ * Primary mix-in class; one to use for the annotated class
51
+ * itself. Can be null.
52
+ */
53
+ final protected Class<?> _primaryMixIn;
54
+
55
+ /*
56
+ /**********************************************************
57
+ /* Gathered information
58
+ /**********************************************************
59
+ */
60
+
61
+ /**
62
+ * Combined list of Jackson annotations that the class has,
63
+ * including inheritable ones from super classes and interfaces
64
+ */
65
+ protected AnnotationMap _classAnnotations;
66
+
67
+ /**
68
+ * Default constructor of the annotated class, if it has one.
69
+ */
70
+ protected AnnotatedConstructor _defaultConstructor;
71
+
72
+ /**
73
+ * Single argument constructors the class has, if any.
74
+ */
75
+ protected List<AnnotatedConstructor> _constructors;
76
+
77
+ /**
78
+ * Single argument static methods that might be usable
79
+ * as factory methods
80
+ */
81
+ protected List<AnnotatedMethod> _creatorMethods;
82
+
83
+ /**
84
+ * Member methods of interest; for now ones with 0 or 1 arguments
85
+ * (just optimization, since others won't be used now)
86
+ */
87
+ protected AnnotatedMethodMap _memberMethods;
88
+
89
+ /**
90
+ * Member fields of interest: ones that are either public,
91
+ * or have at least one annotation.
92
+ */
93
+ protected List<AnnotatedField> _fields;
94
+
95
+ /*
96
+ /**********************************************************
97
+ /* Life-cycle
98
+ /**********************************************************
99
+ */
100
+
101
+ /**
102
+ * Constructor will not do any initializations, to allow for
103
+ * configuring instances differently depending on use cases
104
+ */
105
+ private AnnotatedClass(Class<?> cls, List<Class<?>> superTypes,
106
+ AnnotationIntrospector aintr, MixInResolver mir,
107
+ AnnotationMap classAnnotations)
108
+ {
109
+ _class = cls;
110
+ _superTypes = superTypes;
111
+ _annotationIntrospector = aintr;
112
+ _mixInResolver = mir;
113
+ _primaryMixIn = (_mixInResolver == null) ? null
114
+ : _mixInResolver.findMixInClassFor(_class);
115
+ _classAnnotations = classAnnotations;
116
+ }
117
+
118
+ @Override
119
+ public AnnotatedClass withAnnotations(AnnotationMap ann) {
120
+ return new AnnotatedClass(_class, _superTypes,
121
+ _annotationIntrospector, _mixInResolver, ann);
122
+ }
123
+
124
+ /**
125
+ * Factory method that instantiates an instance. Returned instance
126
+ * will only be initialized with class annotations, but not with
127
+ * any method information.
128
+ */
129
+ public static AnnotatedClass construct(Class<?> cls,
130
+ AnnotationIntrospector aintr, MixInResolver mir)
131
+ {
132
+ List<Class<?>> st = ClassUtil.findSuperTypes(cls, null);
133
+ AnnotatedClass ac = new AnnotatedClass(cls, st, aintr, mir, null);
134
+ ac.resolveClassAnnotations();
135
+ return ac;
136
+ }
137
+
138
+ /**
139
+ * Method similar to {@link #construct}, but that will NOT include
140
+ * information from supertypes; only class itself and any direct
141
+ * mix-ins it may have.
142
+ */
143
+ public static AnnotatedClass constructWithoutSuperTypes(Class<?> cls,
144
+ AnnotationIntrospector aintr, MixInResolver mir)
145
+ {
146
+ List<Class<?>> empty = Collections.emptyList();
147
+ AnnotatedClass ac = new AnnotatedClass(cls, empty, aintr, mir, null);
148
+ ac.resolveClassAnnotations();
149
+ return ac;
150
+ }
151
+
152
+ /*
153
+ /**********************************************************
154
+ /* Annotated impl
155
+ /**********************************************************
156
+ */
157
+
158
+ @Override
159
+ public Class<?> getAnnotated() { return _class; }
160
+
161
+ @Override
162
+ public int getModifiers() { return _class.getModifiers(); }
163
+
164
+ @Override
165
+ public String getName() { return _class.getName(); }
166
+
167
+ @Override
168
+ public <A extends Annotation> A getAnnotation(Class<A> acls)
169
+ {
170
+ if (_classAnnotations == null) {
171
+ return null;
172
+ }
173
+ return _classAnnotations.get(acls);
174
+ }
175
+
176
+ @Override
177
+ public Type getGenericType() {
178
+ return _class;
179
+ }
180
+
181
+ @Override
182
+ public Class<?> getRawType() {
183
+ return _class;
184
+ }
185
+
186
+ @Override
187
+ protected AnnotationMap getAllAnnotations() {
188
+ return _classAnnotations;
189
+ }
190
+
191
+ /*
192
+ /**********************************************************
193
+ /* Public API, generic accessors
194
+ /**********************************************************
195
+ */
196
+
197
+ /**
198
+ * @return 1.7
199
+ */
200
+ public Annotations getAnnotations() { return _classAnnotations; }
201
+
202
+ public boolean hasAnnotations() { return _classAnnotations.size() > 0; }
203
+
204
+ public AnnotatedConstructor getDefaultConstructor() { return _defaultConstructor; }
205
+
206
+ public List<AnnotatedConstructor> getConstructors()
207
+ {
208
+ if (_constructors == null) {
209
+ return Collections.emptyList();
210
+ }
211
+ return _constructors;
212
+ }
213
+
214
+ public List<AnnotatedMethod> getStaticMethods()
215
+ {
216
+ if (_creatorMethods == null) {
217
+ return Collections.emptyList();
218
+ }
219
+ return _creatorMethods;
220
+ }
221
+
222
+ public Iterable<AnnotatedMethod> memberMethods()
223
+ {
224
+ return _memberMethods;
225
+ }
226
+
227
+ public int getMemberMethodCount()
228
+ {
229
+ return _memberMethods.size();
230
+ }
231
+
232
+ public AnnotatedMethod findMethod(String name, Class<?>[] paramTypes)
233
+ {
234
+ return _memberMethods.find(name, paramTypes);
235
+ }
236
+
237
+ public int getFieldCount() {
238
+ return (_fields == null) ? 0 : _fields.size();
239
+ }
240
+
241
+ public Iterable<AnnotatedField> fields()
242
+ {
243
+ if (_fields == null) {
244
+ return Collections.emptyList();
245
+ }
246
+ return _fields;
247
+ }
248
+
249
+ /*
250
+ /**********************************************************
251
+ /* Public API, main-level resolution methods
252
+ /**********************************************************
253
+ */
254
+
255
+ /**
256
+ * Initialization method that will recursively collect Jackson
257
+ * annotations for this class and all super classes and
258
+ * interfaces.
259
+ *<p>
260
+ * Starting with 1.2, it will also apply mix-in annotations,
261
+ * as per [JACKSON-76]
262
+ */
263
+ public void resolveClassAnnotations()
264
+ {
265
+ _classAnnotations = new AnnotationMap();
266
+ // [JACKSON-659] Should skip processing if annotation processing disabled
267
+ if (_annotationIntrospector == null) {
268
+ return;
269
+ }
270
+
271
+ // add mix-in annotations first (overrides)
272
+ if (_primaryMixIn != null) {
273
+ _addClassMixIns(_classAnnotations, _class, _primaryMixIn);
274
+ }
275
+ // first, annotations from the class itself:
276
+ for (Annotation a : _class.getDeclaredAnnotations()) {
277
+ if (_annotationIntrospector.isHandled(a)) {
278
+ _classAnnotations.addIfNotPresent(a);
279
+ }
280
+ }
281
+
282
+ // and then from super types
283
+ for (Class<?> cls : _superTypes) {
284
+ // and mix mix-in annotations in-between
285
+ _addClassMixIns(_classAnnotations, cls);
286
+ for (Annotation a : cls.getDeclaredAnnotations()) {
287
+ if (_annotationIntrospector.isHandled(a)) {
288
+ _classAnnotations.addIfNotPresent(a);
289
+ }
290
+ }
291
+ }
292
+
293
+ /* and finally... any annotations there might be for plain
294
+ * old Object.class: separate because for all other purposes
295
+ * it is just ignored (not included in super types)
296
+ */
297
+ /* 12-Jul-2009, tatu: Should this be done for interfaces too?
298
+ * For now, yes, seems useful for some cases, and not harmful
299
+ * for any?
300
+ */
301
+ _addClassMixIns(_classAnnotations, Object.class);
302
+ }
303
+
304
+ /**
305
+ * Initialization method that will find out all constructors
306
+ * and potential static factory methods the class has.
307
+ *<p>
308
+ * Starting with 1.2, it will also apply mix-in annotations,
309
+ * as per [JACKSON-76]
310
+ *
311
+ * @param includeAll If true, includes all creator methods; if false,
312
+ * will only include the no-arguments "default" constructor
313
+ */
314
+ public void resolveCreators(boolean includeAll)
315
+ {
316
+ // Then see which constructors we have
317
+ _constructors = null;
318
+ Constructor<?>[] declaredCtors = _class.getDeclaredConstructors();
319
+ for (Constructor<?> ctor : declaredCtors) {
320
+ if (ctor.getParameterTypes().length == 0) {
321
+ _defaultConstructor = _constructConstructor(ctor, true);
322
+ } else {
323
+ if (includeAll) {
324
+ if (_constructors == null) {
325
+ _constructors = new ArrayList<AnnotatedConstructor>(Math.max(10, declaredCtors.length));
326
+ }
327
+ _constructors.add(_constructConstructor(ctor, false));
328
+ }
329
+ }
330
+ }
331
+ // and if need be, augment with mix-ins
332
+ if (_primaryMixIn != null) {
333
+ if (_defaultConstructor != null || _constructors != null) {
334
+ _addConstructorMixIns(_primaryMixIn);
335
+ }
336
+ }
337
+
338
+
339
+ /* And then... let's remove all constructors that are deemed
340
+ * ignorable after all annotations have been properly collapsed.
341
+ */
342
+ // 14-Feb-2011, tatu: AnnotationIntrospector is null if annotations not enabled; if so, can skip:
343
+ if (_annotationIntrospector != null) {
344
+ if (_defaultConstructor != null) {
345
+ if (_annotationIntrospector.isIgnorableConstructor(_defaultConstructor)) {
346
+ _defaultConstructor = null;
347
+ }
348
+ }
349
+ if (_constructors != null) {
350
+ // count down to allow safe removal
351
+ for (int i = _constructors.size(); --i >= 0; ) {
352
+ if (_annotationIntrospector.isIgnorableConstructor(_constructors.get(i))) {
353
+ _constructors.remove(i);
354
+ }
355
+ }
356
+ }
357
+ }
358
+
359
+ _creatorMethods = null;
360
+
361
+ if (includeAll) {
362
+ // Then static methods which are potential factory methods
363
+ for (Method m : _class.getDeclaredMethods()) {
364
+ if (!Modifier.isStatic(m.getModifiers())) {
365
+ continue;
366
+ }
367
+ int argCount = m.getParameterTypes().length;
368
+ // factory methods take at least one arg:
369
+ if (argCount < 1) {
370
+ continue;
371
+ }
372
+ if (_creatorMethods == null) {
373
+ _creatorMethods = new ArrayList<AnnotatedMethod>(8);
374
+ }
375
+ _creatorMethods.add(_constructCreatorMethod(m));
376
+ }
377
+ // mix-ins to mix in?
378
+ if (_primaryMixIn != null && _creatorMethods != null) {
379
+ _addFactoryMixIns(_primaryMixIn);
380
+ }
381
+ // anything to ignore at this point?
382
+ if (_annotationIntrospector != null) {
383
+ if (_creatorMethods != null) {
384
+ // count down to allow safe removal
385
+ for (int i = _creatorMethods.size(); --i >= 0; ) {
386
+ if (_annotationIntrospector.isIgnorableMethod(_creatorMethods.get(i))) {
387
+ _creatorMethods.remove(i);
388
+ }
389
+ }
390
+ }
391
+ }
392
+ }
393
+ }
394
+
395
+ /**
396
+ * Method for resolving member method information: aggregating all non-static methods
397
+ * and combining annotations (to implement method-annotation inheritance)
398
+ *
399
+ * @param methodFilter Filter used to determine which methods to include
400
+ *
401
+ * @since 1.9
402
+ */
403
+ public void resolveMemberMethods(MethodFilter methodFilter)
404
+ {
405
+ _memberMethods = new AnnotatedMethodMap();
406
+ AnnotatedMethodMap mixins = new AnnotatedMethodMap();
407
+ // first: methods from the class itself
408
+ _addMemberMethods(_class, methodFilter, _memberMethods, _primaryMixIn, mixins);
409
+
410
+ // and then augment these with annotations from super-types:
411
+ for (Class<?> cls : _superTypes) {
412
+ Class<?> mixin = (_mixInResolver == null) ? null : _mixInResolver.findMixInClassFor(cls);
413
+ _addMemberMethods(cls, methodFilter, _memberMethods, mixin, mixins);
414
+ }
415
+ // Special case: mix-ins for Object.class? (to apply to ALL classes)
416
+ if (_mixInResolver != null) {
417
+ Class<?> mixin = _mixInResolver.findMixInClassFor(Object.class);
418
+ if (mixin != null) {
419
+ _addMethodMixIns(methodFilter, _memberMethods, mixin, mixins);
420
+ }
421
+ }
422
+
423
+ /* Any unmatched mix-ins? Most likely error cases (not matching
424
+ * any method); but there is one possible real use case:
425
+ * exposing Object#hashCode (alas, Object#getClass can NOT be
426
+ * exposed, see [JACKSON-140])
427
+ */
428
+ // 14-Feb-2011, tatu: AnnotationIntrospector is null if annotations not enabled; if so, can skip:
429
+ if (_annotationIntrospector != null) {
430
+ if (!mixins.isEmpty()) {
431
+ Iterator<AnnotatedMethod> it = mixins.iterator();
432
+ while (it.hasNext()) {
433
+ AnnotatedMethod mixIn = it.next();
434
+ try {
435
+ Method m = Object.class.getDeclaredMethod(mixIn.getName(), mixIn.getParameterClasses());
436
+ if (m != null) {
437
+ AnnotatedMethod am = _constructMethod(m);
438
+ _addMixOvers(mixIn.getAnnotated(), am, false);
439
+ _memberMethods.add(am);
440
+ }
441
+ } catch (Exception e) { }
442
+ }
443
+ }
444
+ }
445
+ }
446
+
447
+ /**
448
+ * Method that will collect all member (non-static) fields
449
+ * that are either public, or have at least a single annotation
450
+ * associated with them.
451
+ *
452
+ * @since 1.9
453
+ */
454
+ public void resolveFields()
455
+ {
456
+ LinkedHashMap<String,AnnotatedField> foundFields = new LinkedHashMap<String,AnnotatedField>();
457
+ _addFields(foundFields, _class);
458
+ if (foundFields.isEmpty()) {
459
+ _fields = Collections.emptyList();
460
+ } else {
461
+ _fields = new ArrayList<AnnotatedField>(foundFields.size());
462
+ _fields.addAll(foundFields.values());
463
+ }
464
+ }
465
+
466
+ /*
467
+ /**********************************************************
468
+ /* Deprecated methods
469
+ /**********************************************************
470
+ */
471
+
472
+ /**
473
+ * @since 1.9 Use version without arguments
474
+ */
475
+ @Deprecated
476
+ public void resolveMemberMethods(MethodFilter methodFilter, boolean collectIgnored)
477
+ {
478
+ resolveMemberMethods(methodFilter);
479
+ }
480
+
481
+ /**
482
+ * @since 1.9 Use version without arguments
483
+ */
484
+ @Deprecated
485
+ public void resolveFields(boolean collectIgnored)
486
+ {
487
+ resolveFields();
488
+ }
489
+
490
+ /*
491
+ /**********************************************************
492
+ /* Helper methods for resolving class annotations
493
+ /* (resolution consisting of inheritance, overrides,
494
+ /* and injection of mix-ins as necessary)
495
+ /**********************************************************
496
+ */
497
+
498
+ /**
499
+ * Helper method for adding any mix-in annotations specified
500
+ * class might have.
501
+ */
502
+ protected void _addClassMixIns(AnnotationMap annotations, Class<?> toMask)
503
+ {
504
+ if (_mixInResolver != null) {
505
+ _addClassMixIns(annotations, toMask, _mixInResolver.findMixInClassFor(toMask));
506
+ }
507
+ }
508
+
509
+ protected void _addClassMixIns(AnnotationMap annotations, Class<?> toMask,
510
+ Class<?> mixin)
511
+ {
512
+ if (mixin == null) {
513
+ return;
514
+ }
515
+ // Ok, first: annotations from mix-in class itself:
516
+ for (Annotation a : mixin.getDeclaredAnnotations()) {
517
+ if (_annotationIntrospector.isHandled(a)) {
518
+ annotations.addIfNotPresent(a);
519
+ }
520
+ }
521
+ /* And then from its supertypes, if any. But note that we will
522
+ * only consider super-types up until reaching the masked
523
+ * class (if found); this because often mix-in class
524
+ * is a sub-class (for convenience reasons). And if so, we
525
+ * absolutely must NOT include super types of masked class,
526
+ * as that would inverse precedence of annotations.
527
+ */
528
+ for (Class<?> parent : ClassUtil.findSuperTypes(mixin, toMask)) {
529
+ for (Annotation a : parent.getDeclaredAnnotations()) {
530
+ if (_annotationIntrospector.isHandled(a)) {
531
+ annotations.addIfNotPresent(a);
532
+ }
533
+ }
534
+ }
535
+ }
536
+
537
+ /*
538
+ /**********************************************************
539
+ /* Helper methods for populating creator (ctor, factory) information
540
+ /**********************************************************
541
+ */
542
+
543
+ protected void _addConstructorMixIns(Class<?> mixin)
544
+ {
545
+ MemberKey[] ctorKeys = null;
546
+ int ctorCount = (_constructors == null) ? 0 : _constructors.size();
547
+ for (Constructor<?> ctor : mixin.getDeclaredConstructors()) {
548
+ if (ctor.getParameterTypes().length == 0) {
549
+ if (_defaultConstructor != null) {
550
+ _addMixOvers(ctor, _defaultConstructor, false);
551
+ }
552
+ } else {
553
+ if (ctorKeys == null) {
554
+ ctorKeys = new MemberKey[ctorCount];
555
+ for (int i = 0; i < ctorCount; ++i) {
556
+ ctorKeys[i] = new MemberKey(_constructors.get(i).getAnnotated());
557
+ }
558
+ }
559
+ MemberKey key = new MemberKey(ctor);
560
+
561
+ for (int i = 0; i < ctorCount; ++i) {
562
+ if (!key.equals(ctorKeys[i])) {
563
+ continue;
564
+ }
565
+ _addMixOvers(ctor, _constructors.get(i), true);
566
+ break;
567
+ }
568
+ }
569
+ }
570
+ }
571
+
572
+ protected void _addFactoryMixIns(Class<?> mixin)
573
+ {
574
+ MemberKey[] methodKeys = null;
575
+ int methodCount = _creatorMethods.size();
576
+
577
+ for (Method m : mixin.getDeclaredMethods()) {
578
+ if (!Modifier.isStatic(m.getModifiers())) {
579
+ continue;
580
+ }
581
+ if (m.getParameterTypes().length == 0) {
582
+ continue;
583
+ }
584
+ if (methodKeys == null) {
585
+ methodKeys = new MemberKey[methodCount];
586
+ for (int i = 0; i < methodCount; ++i) {
587
+ methodKeys[i] = new MemberKey(_creatorMethods.get(i).getAnnotated());
588
+ }
589
+ }
590
+ MemberKey key = new MemberKey(m);
591
+ for (int i = 0; i < methodCount; ++i) {
592
+ if (!key.equals(methodKeys[i])) {
593
+ continue;
594
+ }
595
+ _addMixOvers(m, _creatorMethods.get(i), true);
596
+ break;
597
+ }
598
+ }
599
+ }
600
+
601
+ /*
602
+ /**********************************************************
603
+ /* Helper methods for populating method information
604
+ /**********************************************************
605
+ */
606
+
607
+ protected void _addMemberMethods(Class<?> cls,
608
+ MethodFilter methodFilter, AnnotatedMethodMap methods,
609
+ Class<?> mixInCls, AnnotatedMethodMap mixIns)
610
+ {
611
+ // first, mixIns, since they have higher priority then class methods
612
+ if (mixInCls != null) {
613
+ _addMethodMixIns(methodFilter, methods, mixInCls, mixIns);
614
+ }
615
+
616
+ if (cls == null) { // just so caller need not check when passing super-class
617
+ return;
618
+ }
619
+ // then methods from the class itself
620
+ for (Method m : cls.getDeclaredMethods()) {
621
+ if (!_isIncludableMethod(m, methodFilter)) {
622
+ continue;
623
+ }
624
+ AnnotatedMethod old = methods.find(m);
625
+ if (old == null) {
626
+ AnnotatedMethod newM = _constructMethod(m);
627
+ methods.add(newM);
628
+ // Ok, but is there a mix-in to connect now?
629
+ old = mixIns.remove(m);
630
+ if (old != null) {
631
+ _addMixOvers(old.getAnnotated(), newM, false);
632
+ }
633
+ } else {
634
+ /* If sub-class already has the method, we only want to augment
635
+ * annotations with entries that are not masked by sub-class.
636
+ */
637
+ _addMixUnders(m, old);
638
+
639
+ /* 06-Jan-2010, tatu: [JACKSON-450] Except that if method we saw first is
640
+ * from an interface, and we now find a non-interface definition, we should
641
+ * use this method, but with combination of annotations.
642
+ * This helps (or rather, is essential) with JAXB annotations and
643
+ * may also result in faster method calls (interface calls are slightly
644
+ * costlier than regular method calls)
645
+ */
646
+ if (old.getDeclaringClass().isInterface() && !m.getDeclaringClass().isInterface()) {
647
+ methods.add(old.withMethod(m));
648
+ }
649
+ }
650
+ }
651
+ }
652
+
653
+ protected void _addMethodMixIns(MethodFilter methodFilter, AnnotatedMethodMap methods,
654
+ Class<?> mixInCls, AnnotatedMethodMap mixIns)
655
+ {
656
+ for (Method m : mixInCls.getDeclaredMethods()) {
657
+ if (!_isIncludableMethod(m, methodFilter)) {
658
+ continue;
659
+ }
660
+ AnnotatedMethod am = methods.find(m);
661
+ /* Do we already have a method to augment (from sub-class
662
+ * that will mask this mixIn)? If so, add if visible
663
+ * without masking (no such annotation)
664
+ */
665
+ if (am != null) {
666
+ _addMixUnders(m, am);
667
+ /* Otherwise will have precedence, but must wait
668
+ * until we find the real method (mixIn methods are
669
+ * just placeholder, can't be called)
670
+ */
671
+ } else {
672
+ mixIns.add(_constructMethod(m));
673
+ }
674
+ }
675
+ }
676
+
677
+ /*
678
+ /**********************************************************
679
+ /* Helper methods for populating field information
680
+ /**********************************************************
681
+ */
682
+
683
+ protected void _addFields(Map<String,AnnotatedField> fields, Class<?> c)
684
+ {
685
+ /* First, a quick test: we only care for regular classes (not
686
+ * interfaces, primitive types etc), except for Object.class.
687
+ * A simple check to rule out other cases is to see if there
688
+ * is a super class or not.
689
+ */
690
+ Class<?> parent = c.getSuperclass();
691
+ if (parent != null) {
692
+ // Let's add super-class' fields first, then ours.
693
+ /* 21-Feb-2010, tatu: Need to handle masking: as per [JACKSON-226]
694
+ * we otherwise get into trouble...
695
+ */
696
+ _addFields(fields, parent);
697
+ for (Field f : c.getDeclaredFields()) {
698
+ // static fields not included, nor transient
699
+ if (!_isIncludableField(f)) {
700
+ continue;
701
+ }
702
+ /* Ok now: we can (and need) not filter out ignorable fields
703
+ * at this point; partly because mix-ins haven't been
704
+ * added, and partly because logic can be done when
705
+ * determining get/settability of the field.
706
+ */
707
+ fields.put(f.getName(), _constructField(f));
708
+ }
709
+ // And then... any mix-in overrides?
710
+ if (_mixInResolver != null) {
711
+ Class<?> mixin = _mixInResolver.findMixInClassFor(c);
712
+ if (mixin != null) {
713
+ _addFieldMixIns(mixin, fields);
714
+ }
715
+ }
716
+ }
717
+ }
718
+
719
+ /**
720
+ * Method called to add field mix-ins from given mix-in class (and its fields)
721
+ * into already collected actual fields (from introspected classes and their
722
+ * super-classes)
723
+ */
724
+ protected void _addFieldMixIns(Class<?> mixin, Map<String,AnnotatedField> fields)
725
+ {
726
+ for (Field mixinField : mixin.getDeclaredFields()) {
727
+ /* there are some dummy things (static, synthetic); better
728
+ * ignore
729
+ */
730
+ if (!_isIncludableField(mixinField)) {
731
+ continue;
732
+ }
733
+ String name = mixinField.getName();
734
+ // anything to mask? (if not, quietly ignore)
735
+ AnnotatedField maskedField = fields.get(name);
736
+ if (maskedField != null) {
737
+ for (Annotation a : mixinField.getDeclaredAnnotations()) {
738
+ if (_annotationIntrospector.isHandled(a)) {
739
+ maskedField.addOrOverride(a);
740
+ }
741
+ }
742
+ }
743
+ }
744
+ }
745
+
746
+ /*
747
+ /**********************************************************
748
+ /* Helper methods, constructing value types
749
+ /**********************************************************
750
+ */
751
+
752
+ protected AnnotatedMethod _constructMethod(Method m)
753
+ {
754
+ /* note: parameter annotations not used for regular (getter, setter)
755
+ * methods; only for creator methods (static factory methods)
756
+ * -- at least not yet!
757
+ */
758
+ if (_annotationIntrospector == null) { // when annotation processing is disabled
759
+ return new AnnotatedMethod(m, _emptyAnnotationMap(), null);
760
+ }
761
+ return new AnnotatedMethod(m, _collectRelevantAnnotations(m.getDeclaredAnnotations()), null);
762
+ }
763
+
764
+ protected AnnotatedConstructor _constructConstructor(Constructor<?> ctor, boolean defaultCtor)
765
+ {
766
+ if (_annotationIntrospector == null) { // when annotation processing is disabled
767
+ return new AnnotatedConstructor(ctor, _emptyAnnotationMap(), _emptyAnnotationMaps(ctor.getParameterTypes().length));
768
+ }
769
+ if (defaultCtor) {
770
+ return new AnnotatedConstructor(ctor, _collectRelevantAnnotations(ctor.getDeclaredAnnotations()), null);
771
+ }
772
+ Annotation[][] paramAnns = ctor.getParameterAnnotations();
773
+ int paramCount = ctor.getParameterTypes().length;
774
+ /* [JACKSON-701]: Looks like JDK has discrepancy, whereas annotations for implicit 'this'
775
+ * (for non-static inner classes) are NOT included, but type is? Strange, sounds like
776
+ * a bug. Alas, we can't really fix that...
777
+ */
778
+ /* Also: [JACKSON-767] (enum value constructors)
779
+ */
780
+ AnnotationMap[] resolvedAnnotations = null;
781
+ if (paramCount != paramAnns.length) {
782
+ // Limits of the work-around (to avoid hiding real errors):
783
+ // first, only applicable for member classes and then either:
784
+
785
+ Class<?> dc = ctor.getDeclaringClass();
786
+ // (a) is enum, which have two extra hidden params (name, index)
787
+ if (dc.isEnum() && (paramCount == paramAnns.length + 2)) {
788
+ Annotation[][] old = paramAnns;
789
+ paramAnns = new Annotation[old.length+2][];
790
+ System.arraycopy(old, 0, paramAnns, 2, old.length);
791
+ resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
792
+ } else if (dc.isMemberClass()) {
793
+ // (b) non-static inner classes, get implicit 'this' for parameter, not annotation
794
+ if (paramCount == (paramAnns.length + 1)) {
795
+ // hack attack: prepend a null entry to make things match
796
+ Annotation[][] old = paramAnns;
797
+ paramAnns = new Annotation[old.length+1][];
798
+ System.arraycopy(old, 0, paramAnns, 1, old.length);
799
+ resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
800
+ }
801
+ }
802
+ if (resolvedAnnotations == null) {
803
+ throw new IllegalStateException("Internal error: constructor for "+ctor.getDeclaringClass().getName()
804
+ +" has mismatch: "+paramCount+" parameters; "+paramAnns.length+" sets of annotations");
805
+ }
806
+ } else {
807
+ resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
808
+ }
809
+ return new AnnotatedConstructor(ctor, _collectRelevantAnnotations(ctor.getDeclaredAnnotations()),
810
+ resolvedAnnotations);
811
+ }
812
+
813
+ protected AnnotatedMethod _constructCreatorMethod(Method m)
814
+ {
815
+ if (_annotationIntrospector == null) { // when annotation processing is disabled
816
+ return new AnnotatedMethod(m, _emptyAnnotationMap(), _emptyAnnotationMaps(m.getParameterTypes().length));
817
+ }
818
+ return new AnnotatedMethod(m, _collectRelevantAnnotations(m.getDeclaredAnnotations()),
819
+ _collectRelevantAnnotations(m.getParameterAnnotations()));
820
+ }
821
+
822
+ protected AnnotatedField _constructField(Field f)
823
+ {
824
+ if (_annotationIntrospector == null) { // when annotation processing is disabled
825
+ return new AnnotatedField(f, _emptyAnnotationMap());
826
+ }
827
+ return new AnnotatedField(f, _collectRelevantAnnotations(f.getDeclaredAnnotations()));
828
+ }
829
+
830
+ protected AnnotationMap[] _collectRelevantAnnotations(Annotation[][] anns)
831
+ {
832
+ int len = anns.length;
833
+ AnnotationMap[] result = new AnnotationMap[len];
834
+ for (int i = 0; i < len; ++i) {
835
+ result[i] = _collectRelevantAnnotations(anns[i]);
836
+ }
837
+ return result;
838
+ }
839
+
840
+ protected AnnotationMap _collectRelevantAnnotations(Annotation[] anns)
841
+ {
842
+ AnnotationMap annMap = new AnnotationMap();
843
+ if (anns != null) {
844
+ for (Annotation a : anns) {
845
+ if (_annotationIntrospector.isHandled(a)) {
846
+ annMap.add(a);
847
+ }
848
+ }
849
+ }
850
+ return annMap;
851
+ }
852
+
853
+ private AnnotationMap _emptyAnnotationMap() {
854
+ return new AnnotationMap();
855
+ }
856
+
857
+ private AnnotationMap[] _emptyAnnotationMaps(int count) {
858
+ if (count == 0) {
859
+ return NO_ANNOTATION_MAPS;
860
+ }
861
+ AnnotationMap[] maps = new AnnotationMap[count];
862
+ for (int i = 0; i < count; ++i) {
863
+ maps[i] = _emptyAnnotationMap();
864
+ }
865
+ return maps;
866
+ }
867
+
868
+ /*
869
+ /**********************************************************
870
+ /* Helper methods, inclusion filtering
871
+ /**********************************************************
872
+ */
873
+
874
+ protected boolean _isIncludableMethod(Method m, MethodFilter filter)
875
+ {
876
+ if (filter != null && !filter.includeMethod(m)) {
877
+ return false;
878
+ }
879
+ /* 07-Apr-2009, tatu: Looks like generics can introduce hidden
880
+ * bridge and/or synthetic methods. I don't think we want to
881
+ * consider those...
882
+ */
883
+ if (m.isSynthetic() || m.isBridge()) {
884
+ return false;
885
+ }
886
+ return true;
887
+ }
888
+
889
+ private boolean _isIncludableField(Field f)
890
+ {
891
+ /* I'm pretty sure synthetic fields are to be skipped...
892
+ * (methods definitely are)
893
+ */
894
+ if (f.isSynthetic()) {
895
+ return false;
896
+ }
897
+ // Static fields are never included, nor transient
898
+ int mods = f.getModifiers();
899
+ if (Modifier.isStatic(mods) || Modifier.isTransient(mods)) {
900
+ return false;
901
+ }
902
+ return true;
903
+ }
904
+
905
+ /*
906
+ /**********************************************************
907
+ /* Helper methods, attaching annotations
908
+ /**********************************************************
909
+ */
910
+
911
+ /**
912
+ * @param addParamAnnotations Whether parameter annotations are to be
913
+ * added as well
914
+ */
915
+ protected void _addMixOvers(Constructor<?> mixin, AnnotatedConstructor target,
916
+ boolean addParamAnnotations)
917
+ {
918
+ for (Annotation a : mixin.getDeclaredAnnotations()) {
919
+ if (_annotationIntrospector.isHandled(a)) {
920
+ target.addOrOverride(a);
921
+ }
922
+ }
923
+ if (addParamAnnotations) {
924
+ Annotation[][] pa = mixin.getParameterAnnotations();
925
+ for (int i = 0, len = pa.length; i < len; ++i) {
926
+ for (Annotation a : pa[i]) {
927
+ target.addOrOverrideParam(i, a);
928
+ }
929
+ }
930
+ }
931
+ }
932
+
933
+ /**
934
+ * @param addParamAnnotations Whether parameter annotations are to be
935
+ * added as well
936
+ */
937
+ protected void _addMixOvers(Method mixin, AnnotatedMethod target,
938
+ boolean addParamAnnotations)
939
+ {
940
+ for (Annotation a : mixin.getDeclaredAnnotations()) {
941
+ if (_annotationIntrospector.isHandled(a)) {
942
+ target.addOrOverride(a);
943
+ }
944
+ }
945
+ if (addParamAnnotations) {
946
+ Annotation[][] pa = mixin.getParameterAnnotations();
947
+ for (int i = 0, len = pa.length; i < len; ++i) {
948
+ for (Annotation a : pa[i]) {
949
+ target.addOrOverrideParam(i, a);
950
+ }
951
+ }
952
+ }
953
+ }
954
+
955
+ /**
956
+ * Method that will add annotations from specified source method to target method,
957
+ * but only if target does not yet have them.
958
+ */
959
+ protected void _addMixUnders(Method src, AnnotatedMethod target)
960
+ {
961
+ for (Annotation a : src.getDeclaredAnnotations()) {
962
+ if (_annotationIntrospector.isHandled(a)) {
963
+ target.addIfNotPresent(a);
964
+ }
965
+ }
966
+ }
967
+
968
+ /*
969
+ /**********************************************************
970
+ /* Other methods
971
+ /**********************************************************
972
+ */
973
+
974
+ @Override
975
+ public String toString()
976
+ {
977
+ return "[AnnotedClass "+_class.getName()+"]";
978
+ }
979
+ }
980
+