calabash-android 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (532) hide show
  1. data/CHANGES.txt +1 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +8 -0
  4. data/Rakefile +2 -0
  5. data/bin/calabash-android +42 -0
  6. data/bin/calabash-android-build.rb +37 -0
  7. data/bin/calabash-android-generate.rb +26 -0
  8. data/bin/calabash-android-helpers.rb +71 -0
  9. data/bin/calabash-android-run.rb +18 -0
  10. data/bin/calabash-android-setup.rb +392 -0
  11. data/calabash-android.gemspec +23 -0
  12. data/doc/calabash-android-help.txt +21 -0
  13. data/epl-v10.html +261 -0
  14. data/features-skeleton/.irbrc +16 -0
  15. data/features-skeleton/irb_android.sh +2 -0
  16. data/features-skeleton/my_first.feature +5 -0
  17. data/features-skeleton/step_definitions/calabash_steps.rb +1 -0
  18. data/features-skeleton/support/app_installation_hooks.rb +26 -0
  19. data/features-skeleton/support/app_life_cycle_hooks.rb +28 -0
  20. data/features-skeleton/support/env.rb +1 -0
  21. data/features-skeleton/support/hooks.rb +18 -0
  22. data/lib/calabash-android.rb +2 -0
  23. data/lib/calabash-android/calabash_steps.rb +18 -0
  24. data/lib/calabash-android/canned_steps.md +239 -0
  25. data/lib/calabash-android/color_helper.rb +13 -0
  26. data/lib/calabash-android/cucumber.rb +9 -0
  27. data/lib/calabash-android/lib/screenShotTaker.jar +0 -0
  28. data/lib/calabash-android/management/adb.rb +11 -0
  29. data/lib/calabash-android/management/app_installation.rb +21 -0
  30. data/lib/calabash-android/operations.rb +283 -0
  31. data/lib/calabash-android/steps/additions_manual_steps.rb +11 -0
  32. data/lib/calabash-android/steps/app_steps.rb +10 -0
  33. data/lib/calabash-android/steps/assert_steps.rb +32 -0
  34. data/lib/calabash-android/steps/check_box_steps.rb +3 -0
  35. data/lib/calabash-android/steps/context_menu_steps.rb +12 -0
  36. data/lib/calabash-android/steps/date_picker_steps.rb +8 -0
  37. data/lib/calabash-android/steps/enter_text_steps.rb +21 -0
  38. data/lib/calabash-android/steps/location_steps.rb +19 -0
  39. data/lib/calabash-android/steps/navigation_steps.rb +27 -0
  40. data/lib/calabash-android/steps/press_button_steps.rb +35 -0
  41. data/lib/calabash-android/steps/progress_steps.rb +49 -0
  42. data/lib/calabash-android/steps/rotation_steps.rb +8 -0
  43. data/lib/calabash-android/steps/screenshot_steps.rb +11 -0
  44. data/lib/calabash-android/steps/spinner_steps.rb +3 -0
  45. data/lib/calabash-android/steps/time_picker_steps.rb +8 -0
  46. data/lib/calabash-android/version.rb +6 -0
  47. data/test-server/AndroidManifest.xml +13 -0
  48. data/test-server/build.xml +192 -0
  49. data/test-server/calabash-js/src/calabash.js +125 -0
  50. data/test-server/calabash-js/src/set_text.js +132 -0
  51. data/test-server/instrumentation-backend/.classpath +10 -0
  52. data/test-server/instrumentation-backend/.project +33 -0
  53. data/test-server/instrumentation-backend/.settings/org.eclipse.jdt.core.prefs +12 -0
  54. data/test-server/instrumentation-backend/AndroidManifest.xml +15 -0
  55. data/test-server/instrumentation-backend/assets/foo.bar +0 -0
  56. data/test-server/instrumentation-backend/gen/com/lesspainful/simpleui/test/R.java +23 -0
  57. data/test-server/instrumentation-backend/libs/robotium-solo-2.5.jar +0 -0
  58. data/test-server/instrumentation-backend/project.properties +11 -0
  59. data/test-server/instrumentation-backend/res/drawable-hdpi/ic_launcher.png +0 -0
  60. data/test-server/instrumentation-backend/res/drawable-ldpi/ic_launcher.png +0 -0
  61. data/test-server/instrumentation-backend/res/drawable-mdpi/ic_launcher.png +0 -0
  62. data/test-server/instrumentation-backend/res/layout/main.xml +12 -0
  63. data/test-server/instrumentation-backend/res/values/strings.xml +7 -0
  64. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +48 -0
  65. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java +196 -0
  66. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +64 -0
  67. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java +136 -0
  68. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Action.java +11 -0
  69. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Actions.java +113 -0
  70. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NullAction.java +23 -0
  71. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java +22 -0
  72. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java +27 -0
  73. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonNumber.java +22 -0
  74. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/WaitForButton.java +47 -0
  75. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/checkbox/ToggleCheckboxNumber.java +22 -0
  76. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressText.java +22 -0
  77. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuById.java +26 -0
  78. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByIndex.java +22 -0
  79. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java +26 -0
  80. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/ClickOnScreen.java +31 -0
  81. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +28 -0
  82. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/ListActions.java +26 -0
  83. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/LongPressListItems.java +22 -0
  84. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/PressListItems.java +22 -0
  85. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +79 -0
  86. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollDown.java +28 -0
  87. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollUp.java +28 -0
  88. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/DownKey.java +24 -0
  89. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/GoBack.java +22 -0
  90. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/PressMenu.java +26 -0
  91. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java +24 -0
  92. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java +43 -0
  93. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertText.java +31 -0
  94. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertTextOfSpecificTextViewByContentDescription.java +32 -0
  95. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextByIndex.java +22 -0
  96. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextFieldByContentDescription.java +33 -0
  97. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClickOnText.java +22 -0
  98. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByContentDescription.java +32 -0
  99. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByIndex.java +22 -0
  100. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByContentDescription.java +33 -0
  101. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByIndex.java +24 -0
  102. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByContentDescription.java +34 -0
  103. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByIndex.java +26 -0
  104. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java +63 -0
  105. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/LongPressOnViewById.java +34 -0
  106. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/Press.java +89 -0
  107. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/WaitForViewById.java +41 -0
  108. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/Wait.java +24 -0
  109. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForDialogClose.java +21 -0
  110. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForProgress.java +47 -0
  111. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForScreen.java +49 -0
  112. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForText.java +26 -0
  113. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +109 -0
  114. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +33 -0
  115. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +33 -0
  116. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +99 -0
  117. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +43 -0
  118. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +24 -0
  119. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +99 -0
  120. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +74 -0
  121. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +43 -0
  122. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +50 -0
  123. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +44 -0
  124. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java +413 -0
  125. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java +90 -0
  126. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java +29 -0
  127. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonEncoding.java +47 -0
  128. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonFactory.java +937 -0
  129. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerationException.java +28 -0
  130. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerator.java +1197 -0
  131. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonLocation.java +141 -0
  132. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonNode.java +879 -0
  133. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParseException.java +23 -0
  134. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParser.java +1434 -0
  135. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonProcessingException.java +80 -0
  136. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonStreamContext.java +122 -0
  137. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonToken.java +161 -0
  138. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/ObjectCodec.java +157 -0
  139. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/PrettyPrinter.java +166 -0
  140. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/SerializableString.java +54 -0
  141. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Version.java +90 -0
  142. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Versioned.java +20 -0
  143. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JacksonAnnotation.java +20 -0
  144. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnyGetter.java +25 -0
  145. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnySetter.java +24 -0
  146. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAutoDetect.java +148 -0
  147. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonBackReference.java +41 -0
  148. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonCreator.java +19 -0
  149. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonGetter.java +35 -0
  150. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnore.java +57 -0
  151. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreProperties.java +48 -0
  152. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreType.java +33 -0
  153. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonManagedReference.java +41 -0
  154. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonMethod.java +90 -0
  155. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonProperty.java +38 -0
  156. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonPropertyOrder.java +46 -0
  157. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonRawValue.java +33 -0
  158. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSetter.java +33 -0
  159. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSubTypes.java +44 -0
  160. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeInfo.java +236 -0
  161. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeName.java +28 -0
  162. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonUnwrapped.java +76 -0
  163. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonValue.java +46 -0
  164. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonWriteNullProperties.java +34 -0
  165. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/package-info.java +16 -0
  166. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatDetector.java +176 -0
  167. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatMatcher.java +117 -0
  168. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/InputAccessor.java +130 -0
  169. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/MatchStrength.java +64 -0
  170. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/package-info.java +8 -0
  171. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ByteSourceBootstrapper.java +518 -0
  172. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/DefaultPrettyPrinter.java +13 -0
  173. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Indenter.java +23 -0
  174. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonGeneratorBase.java +570 -0
  175. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonNumericParserBase.java +20 -0
  176. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserBase.java +1067 -0
  177. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserMinimalBase.java +539 -0
  178. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonReadContext.java +188 -0
  179. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonWriteContext.java +178 -0
  180. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParser.java +1815 -0
  181. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParserBase.java +228 -0
  182. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/StreamBasedParserBase.java +197 -0
  183. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8Generator.java +1757 -0
  184. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8StreamParser.java +2966 -0
  185. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/WriterBasedGenerator.java +1815 -0
  186. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/package-info.java +6 -0
  187. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/BaseReader.java +117 -0
  188. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/CharacterEscapes.java +73 -0
  189. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/IOContext.java +239 -0
  190. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/InputDecorator.java +67 -0
  191. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/JsonStringEncoder.java +408 -0
  192. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/MergedStream.java +145 -0
  193. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberInput.java +303 -0
  194. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberOutput.java +398 -0
  195. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/OutputDecorator.java +40 -0
  196. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SegmentedStringWriter.java +104 -0
  197. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SerializedString.java +114 -0
  198. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF32Reader.java +214 -0
  199. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF8Writer.java +387 -0
  200. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/package.html +4 -0
  201. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AbstractTypeResolver.java +63 -0
  202. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AnnotationIntrospector.java +1485 -0
  203. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanDescription.java +171 -0
  204. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanProperty.java +123 -0
  205. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanPropertyDefinition.java +66 -0
  206. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ClassIntrospector.java +117 -0
  207. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualDeserializer.java +38 -0
  208. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualKeyDeserializer.java +33 -0
  209. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualSerializer.java +38 -0
  210. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationConfig.java +926 -0
  211. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationContext.java +262 -0
  212. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationProblemHandler.java +56 -0
  213. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerFactory.java +356 -0
  214. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerProvider.java +185 -0
  215. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Deserializers.java +339 -0
  216. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/HandlerInstantiator.java +115 -0
  217. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/InjectableValues.java +85 -0
  218. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonDeserializer.java +166 -0
  219. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonMappingException.java +335 -0
  220. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializable.java +34 -0
  221. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializableWithType.java +22 -0
  222. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializer.java +138 -0
  223. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializer.java +31 -0
  224. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializers.java +21 -0
  225. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MapperConfig.java +1154 -0
  226. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingIterator.java +190 -0
  227. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingJsonFactory.java +81 -0
  228. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Module.java +255 -0
  229. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectMapper.java +2885 -0
  230. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectReader.java +958 -0
  231. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectWriter.java +554 -0
  232. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/PropertyNamingStrategy.java +258 -0
  233. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableDeserializer.java +23 -0
  234. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableSerializer.java +23 -0
  235. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/RuntimeJsonMappingException.java +21 -0
  236. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializationConfig.java +1041 -0
  237. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerFactory.java +198 -0
  238. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerProvider.java +552 -0
  239. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Serializers.java +137 -0
  240. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeDeserializer.java +118 -0
  241. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeSerializer.java +164 -0
  242. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonInject.java +30 -0
  243. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonStdImpl.java +25 -0
  244. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonCachable.java +32 -0
  245. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonDeserialize.java +109 -0
  246. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonFilter.java +31 -0
  247. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonRootName.java +29 -0
  248. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonSerialize.java +216 -0
  249. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeIdResolver.java +35 -0
  250. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeResolver.java +28 -0
  251. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonValueInstantiator.java +26 -0
  252. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonView.java +37 -0
  253. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/NoClass.java +19 -0
  254. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/package-info.java +5 -0
  255. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/AbstractDeserializer.java +102 -0
  256. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializer.java +28 -0
  257. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializers.java +11 -0
  258. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BasicDeserializerFactory.java +894 -0
  259. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializer.java +1537 -0
  260. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerBuilder.java +277 -0
  261. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerFactory.java +1474 -0
  262. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerModifier.java +58 -0
  263. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CollectionDeserializer.java +47 -0
  264. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ContainerDeserializer.java +14 -0
  265. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CustomDeserializerFactory.java +227 -0
  266. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/DateDeserializer.java +9 -0
  267. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumDeserializer.java +15 -0
  268. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumResolver.java +17 -0
  269. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/FromStringDeserializer.java +13 -0
  270. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/JsonNodeDeserializer.java +54 -0
  271. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/MapDeserializer.java +44 -0
  272. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableAnyProperty.java +177 -0
  273. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableBeanProperty.java +827 -0
  274. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializationContext.java +326 -0
  275. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializer.java +94 -0
  276. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializerProvider.java +494 -0
  277. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializers.java +119 -0
  278. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializer.java +12 -0
  279. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializers.java +11 -0
  280. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdScalarDeserializer.java +13 -0
  281. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ThrowableDeserializer.java +13 -0
  282. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/UntypedObjectDeserializer.java +9 -0
  283. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiator.java +280 -0
  284. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiators.java +52 -0
  285. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/BeanPropertyMap.java +257 -0
  286. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorCollector.java +141 -0
  287. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorProperty.java +152 -0
  288. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java +173 -0
  289. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java +117 -0
  290. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValue.java +117 -0
  291. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValueBuffer.java +102 -0
  292. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/UnwrappedPropertyHandler.java +41 -0
  293. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ValueInjector.java +45 -0
  294. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/package-info.java +9 -0
  295. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/package-info.java +5 -0
  296. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicBooleanDeserializer.java +22 -0
  297. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicReferenceDeserializer.java +47 -0
  298. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CalendarDeserializer.java +47 -0
  299. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ClassDeserializer.java +49 -0
  300. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CollectionDeserializer.java +265 -0
  301. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ContainerDeserializerBase.java +37 -0
  302. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/DateDeserializer.java +30 -0
  303. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumDeserializer.java +139 -0
  304. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumMapDeserializer.java +90 -0
  305. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumSetDeserializer.java +89 -0
  306. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java +265 -0
  307. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JavaTypeDeserializer.java +38 -0
  308. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JsonNodeDeserializer.java +314 -0
  309. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/MapDeserializer.java +412 -0
  310. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ObjectArrayDeserializer.java +201 -0
  311. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/PrimitiveArrayDeserializers.java +583 -0
  312. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdDeserializer.java +1136 -0
  313. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java +340 -0
  314. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializers.java +108 -0
  315. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdScalarDeserializer.java +34 -0
  316. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdValueInstantiator.java +392 -0
  317. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringCollectionDeserializer.java +227 -0
  318. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringDeserializer.java +55 -0
  319. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ThrowableDeserializer.java +164 -0
  320. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TimestampDeserializer.java +30 -0
  321. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TokenBufferDeserializer.java +36 -0
  322. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/UntypedObjectDeserializer.java +248 -0
  323. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/package-info.java +15 -0
  324. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/exc/UnrecognizedPropertyException.java +75 -0
  325. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLDeserializers.java +114 -0
  326. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLSerializers.java +72 -0
  327. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/DOMDeserializer.java +65 -0
  328. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/OptionalHandlerFactory.java +217 -0
  329. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/package-info.java +23 -0
  330. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/Annotated.java +85 -0
  331. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedClass.java +980 -0
  332. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedConstructor.java +143 -0
  333. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedField.java +119 -0
  334. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMember.java +56 -0
  335. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethod.java +188 -0
  336. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethodMap.java +85 -0
  337. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedParameter.java +191 -0
  338. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedWithParams.java +195 -0
  339. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotationMap.java +101 -0
  340. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicBeanDescription.java +615 -0
  341. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicClassIntrospector.java +364 -0
  342. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java +813 -0
  343. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MemberKey.java +83 -0
  344. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MethodFilter.java +12 -0
  345. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java +209 -0
  346. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertiesCollector.java +713 -0
  347. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertyBuilder.java +648 -0
  348. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/VisibilityChecker.java +424 -0
  349. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/package-info.java +12 -0
  350. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/NamedType.java +53 -0
  351. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/SubtypeResolver.java +39 -0
  352. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeIdResolver.java +74 -0
  353. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeResolverBuilder.java +151 -0
  354. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeDeserializer.java +126 -0
  355. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeSerializer.java +110 -0
  356. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeDeserializer.java +37 -0
  357. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeSerializer.java +129 -0
  358. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeDeserializer.java +191 -0
  359. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeSerializer.java +69 -0
  360. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeDeserializer.java +103 -0
  361. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeSerializer.java +121 -0
  362. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/ClassNameIdResolver.java +138 -0
  363. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/MinimalClassNameIdResolver.java +66 -0
  364. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdSubtypeResolver.java +151 -0
  365. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdTypeResolverBuilder.java +202 -0
  366. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeDeserializerBase.java +154 -0
  367. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeIdResolverBase.java +37 -0
  368. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeNameIdResolver.java +154 -0
  369. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeSerializerBase.java +31 -0
  370. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/package-info.java +9 -0
  371. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/package-info.java +10 -0
  372. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleAbstractTypeResolver.java +86 -0
  373. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleDeserializers.java +130 -0
  374. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleKeyDeserializers.java +59 -0
  375. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleModule.java +265 -0
  376. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleSerializers.java +206 -0
  377. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleValueInstantiators.java +45 -0
  378. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/package-info.java +16 -0
  379. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/package-info.java +34 -0
  380. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/AnyGetterWriter.java +48 -0
  381. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ArraySerializers.java +7 -0
  382. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BasicSerializerFactory.java +806 -0
  383. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyFilter.java +30 -0
  384. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyWriter.java +512 -0
  385. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializer.java +126 -0
  386. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerBuilder.java +140 -0
  387. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerFactory.java +780 -0
  388. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerModifier.java +95 -0
  389. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ContainerSerializers.java +8 -0
  390. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/CustomSerializerFactory.java +293 -0
  391. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/EnumSerializer.java +17 -0
  392. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilterProvider.java +23 -0
  393. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilteredBeanPropertyWriter.java +96 -0
  394. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/JdkSerializers.java +11 -0
  395. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/MapSerializer.java +58 -0
  396. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/PropertyBuilder.java +372 -0
  397. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ScalarSerializerBase.java +18 -0
  398. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/SerializerBase.java +23 -0
  399. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdKeySerializer.java +10 -0
  400. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializerProvider.java +852 -0
  401. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializers.java +372 -0
  402. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ToStringSerializer.java +14 -0
  403. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/FailingSerializer.java +43 -0
  404. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/JsonSerializerMap.java +93 -0
  405. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/PropertySerializerMap.java +231 -0
  406. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/ReadOnlyClassToSerializerMap.java +73 -0
  407. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SerializerCache.java +304 -0
  408. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleBeanPropertyFilter.java +109 -0
  409. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleFilterProvider.java +114 -0
  410. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnknownSerializer.java +54 -0
  411. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanPropertyWriter.java +99 -0
  412. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanSerializer.java +76 -0
  413. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/package-info.java +5 -0
  414. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/package-info.java +5 -0
  415. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/AsArraySerializerBase.java +185 -0
  416. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/BeanSerializerBase.java +340 -0
  417. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CalendarSerializer.java +43 -0
  418. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CollectionSerializer.java +113 -0
  419. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ContainerSerializerBase.java +51 -0
  420. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/DateSerializer.java +42 -0
  421. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumMapSerializer.java +218 -0
  422. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSerializer.java +84 -0
  423. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSetSerializer.java +47 -0
  424. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IndexedStringListSerializer.java +116 -0
  425. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/InetAddressSerializer.java +51 -0
  426. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IterableSerializer.java +63 -0
  427. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java +233 -0
  428. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/MapSerializer.java +422 -0
  429. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NonTypedScalarSerializerBase.java +34 -0
  430. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NullSerializer.java +38 -0
  431. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ObjectArraySerializer.java +281 -0
  432. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/RawSerializer.java +52 -0
  433. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ScalarSerializerBase.java +52 -0
  434. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableSerializer.java +99 -0
  435. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableWithTypeSerializer.java +90 -0
  436. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializerBase.java +184 -0
  437. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StaticListSerializerBase.java +46 -0
  438. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdArraySerializers.java +476 -0
  439. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdContainerSerializers.java +249 -0
  440. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdJdkSerializers.java +195 -0
  441. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializer.java +43 -0
  442. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializers.java +95 -0
  443. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringCollectionSerializer.java +119 -0
  444. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringSerializer.java +36 -0
  445. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TimeZoneSerializer.java +38 -0
  446. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ToStringSerializer.java +73 -0
  447. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TokenBufferSerializer.java +66 -0
  448. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ArrayType.java +260 -0
  449. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ClassKey.java +94 -0
  450. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionLikeType.java +204 -0
  451. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionType.java +94 -0
  452. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/HierarchicType.java +88 -0
  453. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapLikeType.java +265 -0
  454. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapType.java +146 -0
  455. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/SimpleType.java +250 -0
  456. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBase.java +148 -0
  457. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBindings.java +351 -0
  458. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeFactory.java +1165 -0
  459. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeModifier.java +38 -0
  460. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeParser.java +134 -0
  461. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/package-info.java +10 -0
  462. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Annotations.java +23 -0
  463. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ArrayBuilders.java +293 -0
  464. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/BeanUtil.java +260 -0
  465. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ClassUtil.java +645 -0
  466. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Comparators.java +48 -0
  467. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumResolver.java +108 -0
  468. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumValues.java +82 -0
  469. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601DateFormat.java +52 -0
  470. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601Utils.java +230 -0
  471. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONPObject.java +105 -0
  472. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONWrappedObject.java +117 -0
  473. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LRUMap.java +28 -0
  474. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LinkedNode.java +45 -0
  475. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Named.java +10 -0
  476. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ObjectBuffer.java +257 -0
  477. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/PrimitiveArrayBuilder.java +180 -0
  478. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Provider.java +21 -0
  479. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/RootNameLookup.java +54 -0
  480. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/StdDateFormat.java +348 -0
  481. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/package-info.java +4 -0
  482. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ArrayNode.java +758 -0
  483. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BaseJsonNode.java +122 -0
  484. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BigIntegerNode.java +104 -0
  485. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BinaryNode.java +136 -0
  486. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BooleanNode.java +84 -0
  487. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ContainerNode.java +185 -0
  488. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DecimalNode.java +96 -0
  489. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DoubleNode.java +106 -0
  490. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/IntNode.java +122 -0
  491. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/JsonNodeFactory.java +222 -0
  492. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/LongNode.java +99 -0
  493. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/MissingNode.java +97 -0
  494. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NodeCursor.java +222 -0
  495. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NullNode.java +58 -0
  496. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NumericNode.java +72 -0
  497. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ObjectNode.java +696 -0
  498. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/POJONode.java +145 -0
  499. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TextNode.java +299 -0
  500. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TreeTraversingParser.java +383 -0
  501. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ValueNode.java +58 -0
  502. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/package-info.java +8 -0
  503. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/package-info.java +30 -0
  504. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSchema.java +82 -0
  505. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSerializableSchema.java +46 -0
  506. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/SchemaAware.java +25 -0
  507. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/package-info.java +5 -0
  508. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/BytesToNameCanonicalizer.java +969 -0
  509. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/CharsToNameCanonicalizer.java +578 -0
  510. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name.java +50 -0
  511. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name1.java +44 -0
  512. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name2.java +40 -0
  513. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name3.java +39 -0
  514. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/NameN.java +68 -0
  515. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/package-info.java +5 -0
  516. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/JavaType.java +503 -0
  517. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/TypeReference.java +60 -0
  518. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/package-info.java +8 -0
  519. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/BufferRecycler.java +109 -0
  520. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/ByteArrayBuilder.java +294 -0
  521. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/CharTypes.java +237 -0
  522. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/DefaultPrettyPrinter.java +282 -0
  523. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/InternCache.java +49 -0
  524. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonGeneratorDelegate.java +273 -0
  525. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserDelegate.java +251 -0
  526. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserSequence.java +150 -0
  527. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/MinimalPrettyPrinter.java +152 -0
  528. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TextBuffer.java +707 -0
  529. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java +1233 -0
  530. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java +79 -0
  531. data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java +4 -0
  532. metadata +619 -0
@@ -0,0 +1,1233 @@
1
+ package sh.calaba.org.codehaus.jackson.util;
2
+
3
+ import java.io.IOException;
4
+ import java.math.BigDecimal;
5
+ import java.math.BigInteger;
6
+
7
+ import sh.calaba.org.codehaus.jackson.Base64Variant;
8
+ import sh.calaba.org.codehaus.jackson.JsonGenerationException;
9
+ import sh.calaba.org.codehaus.jackson.JsonGenerator;
10
+ import sh.calaba.org.codehaus.jackson.JsonLocation;
11
+ import sh.calaba.org.codehaus.jackson.JsonNode;
12
+ import sh.calaba.org.codehaus.jackson.JsonParseException;
13
+ import sh.calaba.org.codehaus.jackson.JsonParser;
14
+ import sh.calaba.org.codehaus.jackson.JsonProcessingException;
15
+ import sh.calaba.org.codehaus.jackson.JsonStreamContext;
16
+ import sh.calaba.org.codehaus.jackson.JsonToken;
17
+ import sh.calaba.org.codehaus.jackson.ObjectCodec;
18
+ import sh.calaba.org.codehaus.jackson.SerializableString;
19
+ import sh.calaba.org.codehaus.jackson.impl.JsonParserMinimalBase;
20
+ import sh.calaba.org.codehaus.jackson.impl.JsonReadContext;
21
+ import sh.calaba.org.codehaus.jackson.impl.JsonWriteContext;
22
+ import sh.calaba.org.codehaus.jackson.io.SerializedString;
23
+
24
+
25
+
26
+ /**
27
+ * Utility class used for efficient storage of {@link JsonToken}
28
+ * sequences, needed for temporary buffering.
29
+ * Space efficient for different sequence lengths (especially so for smaller
30
+ * ones; but not significantly less efficient for larger), highly esh.calaba.org.codehaus.jacksonar iteration and appending. Implemented as segmented/chunked
31
+ * linked list of tokens; only modifications are via appends.
32
+ *
33
+ * @since 1.5
34
+ */
35
+ public class TokenBuffer
36
+ /* Won't use JsonGeneratorBase, to minimize overhead for validity
37
+ * checking
38
+ */
39
+ extends JsonGenerator
40
+ {
41
+ protected final static int DEFAULT_PARSER_FEATURES = JsonParser.Feature.collectDefaults();
42
+
43
+ /*
44
+ /**********************************************************
45
+ /* Configuration
46
+ /**********************************************************
47
+ */
48
+
49
+ /**
50
+ * Object codec to use for stream-based object
51
+ * conversion through parser/generator interfaces. If null,
52
+ * such methods can not be used.
53
+ */
54
+ protected ObjectCodec _objectCodec;
55
+
56
+ /**
57
+ * Bit flagsh.calaba.org.codehaus.jacksonat indicate which
58
+ * {@link sh.calaba.org.codehaus.jackson.JsonGenerator.Feature}s
59
+ * are enabled.
60
+ *<p>
61
+ * NOTE: most features have no effect on this class
62
+ */
63
+ protected int _generatorFeatures;
64
+
65
+ protected boolean _closed;
66
+
67
+ /*
68
+ /**********************************************************
69
+ /* Token buffering state
70
+ /**********************************************************
71
+ */
72
+
73
+ /**
74
+ * First segment, for contents this buffer has
75
+ */
76
+ protected Segment _first;
77
+
78
+ /**
79
+ * Last segment of this buffer, one that is used
80
+ * for appending more tokens
81
+ */
82
+ protected Segment _last;
83
+
84
+ /**
85
+ * Offset within last segment,
86
+ */
87
+ protected int _appendOffset;
88
+
89
+ /*
90
+ /**********************************************************
91
+ /* Output state
92
+ /**********************************************************
93
+ */
94
+
95
+ protected JsonWriteContext _writeContext;
96
+
97
+ /*
98
+ /**********************************************************
99
+ /* Life-cycle
100
+ /**********************************************************
101
+ */
102
+
103
+ /**
104
+ * @param codec Object codec to use for stream-based object
105
+ * conversion through parser/generator interfaces. If null,
106
+ * such methods can not be used.
107
+ */
108
+ public TokenBuffer(ObjectCodec codec)
109
+ {
110
+ _objectCodec = codec;
111
+ _generatorFeatures = DEFAULT_PARSER_FEATURES;
112
+ _writeContext = JsonWriteContext.createRootContext();
113
+ // at first we have just one segment
114
+ _first = _last = new Segment();
115
+ _appendOffset = 0;
116
+ }
117
+
118
+ /**
119
+ * Method used to create a {@link JsonParser} that can read contents
120
+ * stored in this buffer. Will use default <code>_objectCodec</code> for
121
+ * object conversions.
122
+ *<p>
123
+ * Note: instances are not synchronized, that is, they are not thread-safe
124
+ * if there are concurrent appends to the underlying buffer.
125
+ *
126
+ * @return Parser that can be used for reading contents stored in this buffer
127
+ */
128
+ public JsonParser asParser()
129
+ {
130
+ return asParser(_objectCodec);
131
+ }
132
+
133
+ /**
134
+ * Method used to create a {@link JsonParser} that can read contents
135
+ * stored in this buffer.
136
+ *<p>
137
+ * Note: instances are not synchronized, that is, they are not thread-safe
138
+ * if there are concurrent appends to the underlying buffer.
139
+ *
140
+ * @param codec Object codec to use for stream-based object
141
+ * conversion through parser/generator interfaces. If null,
142
+ * such methods can not be used.
143
+ *
144
+ * @return Parser that can be used for reading contents stored in this buffer
145
+ */
146
+ public JsonParser asParser(ObjectCodec codec)
147
+ {
148
+ return new Parser(_first, codec);
149
+ }
150
+
151
+ /**
152
+ * @param src Parser to use for accessing source information
153
+ * like location, configured codec
154
+ */
155
+ public JsonParser asParser(JsonParser src)
156
+ {
157
+ Parser p = new Parser(_first, src.getCodec());
158
+ p.setLocation(src.getTokenLocation());
159
+ return p;
160
+ }
161
+
162
+ /*
163
+ /**********************************************************
164
+ /* Other custom methods not needed for implementing interfaces
165
+ /**********************************************************
166
+ */
167
+
168
+ /**
169
+ * Helper method that will write all contents of this buffer
170
+ * using given {@link JsonGenerator}.
171
+ *<p>
172
+ * Note: this method would be enough to implement
173
+ * <code>JsonSerializer</code> for <code>TokenBuffer</code> type;
174
+ * but we can not have upwards
175
+ * references (from core to mapper package); and as such we also
176
+ * can not take second argument.
177
+ */
178
+ public void serialize(JsonGenerator jgen)
179
+ throws IOException, JsonGenerationException
180
+ {
181
+ Segment segment = _first;
182
+ int ptr = -1;
183
+
184
+ while (true) {
185
+ if (++ptr >= Segment.TOKENS_PER_SEGMENT) {
186
+ ptr = 0;
187
+ segment = segment.next();
188
+ if (segment == null) break;
189
+ }
190
+ JsonToken t = segment.type(ptr);
191
+ if (t == null) break;
192
+
193
+ // Note: copied from 'copyCurrentEvent'...
194
+ switch (t) {
195
+ case START_OBJECT:
196
+ jgen.writeStartObject();
197
+ break;
198
+ case END_OBJECT:
199
+ jgen.writeEndObject();
200
+ break;
201
+ case START_ARRAY:
202
+ jgen.writeStartArray();
203
+ break;
204
+ case END_ARRAY:
205
+ jgen.writeEndArray();
206
+ break;
207
+ case FIELD_NAME:
208
+ {
209
+ // 13-Dec-2010, tatu: Maybe we should start using different type tokens to reduce casting?
210
+ Object ob = segment.get(ptr);
211
+ if (ob instanceof SerializableString) {
212
+ jgen.writeFieldName((SerializableString) ob);
213
+ } else {
214
+ jgen.writeFieldName((String) ob);
215
+ }
216
+ }
217
+ break;
218
+ case VALUE_STRING:
219
+ {
220
+ Object ob = segment.get(ptr);
221
+ if (ob instanceof SerializableString) {
222
+ jgen.writeString((SerializableString) ob);
223
+ } else {
224
+ jgen.writeString((String) ob);
225
+ }
226
+ }
227
+ break;
228
+ case VALUE_NUMBER_INT:
229
+ {
230
+ Number n = (Number) segment.get(ptr);
231
+ if (n instanceof BigInteger) {
232
+ jgen.writeNumber((BigInteger) n);
233
+ } else if (n instanceof Long) {
234
+ jgen.writeNumber(n.longValue());
235
+ } else {
236
+ jgen.writeNumber(n.intValue());
237
+ }
238
+ }
239
+ break;
240
+ case VALUE_NUMBER_FLOAT:
241
+ {
242
+ Object n = segment.get(ptr);
243
+ if (n instanceof BigDecimal) {
244
+ jgen.writeNumber((BigDecimal) n);
245
+ } else if (n instanceof Float) {
246
+ jgen.writeNumber(((Float) n).floatValue());
247
+ } else if (n instanceof Double) {
248
+ jgen.writeNumber(((Double) n).doubleValue());
249
+ } else if (n == null) {
250
+ jgen.writeNull();
251
+ } else if (n instanceof String) {
252
+ jgen.writeNumber((String) n);
253
+ } else {
254
+ throw new JsonGenerationException("Unrecognized value type for VALUE_NUMBER_FLOAT: "+n.getClass().getName()+", can not serialize");
255
+ }
256
+ }
257
+ break;
258
+ case VALUE_TRUE:
259
+ jgen.writeBoolean(true);
260
+ break;
261
+ case VALUE_FALSE:
262
+ jgen.writeBoolean(false);
263
+ break;
264
+ case VALUE_NULL:
265
+ jgen.writeNull();
266
+ break;
267
+ case VALUE_EMBEDDED_OBJECT:
268
+ jgen.writeObject(segment.get(ptr));
269
+ break;
270
+ default:
271
+ throw new RuntimeException("Internal error: should never end up through this code path");
272
+ }
273
+ }
274
+ }
275
+
276
+ @Override
277
+ public String toString()
278
+ {
279
+ // Let's print up to 100 first tokens...
280
+ final int MAX_COUNT = 100;
281
+
282
+ StringBuilder sb = new StringBuilder();
283
+ sb.append("[TokenBuffer: ");
284
+ JsonParser jp = asParser();
285
+ int count = 0;
286
+
287
+ while (true) {
288
+ JsonToken t;
289
+ try {
290
+ t = jp.nextToken();
291
+ } catch (IOException ioe) { // should never occur
292
+ throw new IllegalStateException(ioe);
293
+ }
294
+ if (t == null) break;
295
+ if (count < MAX_COUNT) {
296
+ if (count > 0) {
297
+ sb.append(", ");
298
+ }
299
+ sb.append(t.toString());
300
+ }
301
+ ++count;
302
+ }
303
+
304
+ if (count >= MAX_COUNT) {
305
+ sb.append(" ... (truncated ").append(count-MAX_COUNT).append(" entries)");
306
+ }
307
+ sb.append(']');
308
+ return sb.toString();
309
+ }
310
+
311
+ /*
312
+ /**********************************************************
313
+ /* JsonGenerator implementation: configuration
314
+ /**********************************************************
315
+ */
316
+
317
+ @Override
318
+ public JsonGenerator enable(Feature f) {
319
+ _generatorFeatures |= f.getMask();
320
+ return this;
321
+ }
322
+
323
+ @Override
324
+ public JsonGenerator disable(Feature f) {
325
+ _generatorFeatures &= ~f.getMask();
326
+ return this;
327
+ }
328
+
329
+ //public JsonGenerator configure(Feature f, boolean state) { }
330
+
331
+ @Override
332
+ public boolean isEnabled(Feature f) {
333
+ return (_generatorFeatures & f.getMask()) != 0;
334
+ }
335
+
336
+ @Override
337
+ public JsonGenerator useDefaultPrettyPrinter() {
338
+ // No-op: we don't indent
339
+ return this;
340
+ }
341
+
342
+ @Override
343
+ public JsonGenerator setCodec(ObjectCodec oc) {
344
+ _objectCodec = oc;
345
+ return this;
346
+ }
347
+
348
+ @Override
349
+ public ObjectCodec getCodec() { return _objectCodec; }
350
+
351
+ @Override
352
+ public final JsonWriteContext getOutputContext() { return _writeContext; }
353
+
354
+ /*
355
+ /**********************************************************
356
+ /* JsonGenerator implementation: low-level output handling
357
+ /**********************************************************
358
+ */
359
+
360
+ @Override
361
+ public void flush() throws IOException { /* NOP */ }
362
+
363
+ @Override
364
+ public void close() throws IOException {
365
+ _closed = true;
366
+ }
367
+
368
+ @Override
369
+ public boolean isClosed() { return _closed; }
370
+
371
+ /*
372
+ /**********************************************************
373
+ /* JsonGenerator implementation: write methods, structural
374
+ /**********************************************************
375
+ */
376
+
377
+ @Override
378
+ public final void writeStartArray()
379
+ throws IOException, JsonGenerationException
380
+ {
381
+ _append(JsonToken.START_ARRAY);
382
+ _writeContext = _writeContext.createChildArrayContext();
383
+ }
384
+
385
+ @Override
386
+ public final void writeEndArray()
387
+ throws IOException, JsonGenerationException
388
+ {
389
+ _append(JsonToken.END_ARRAY);
390
+ // Let's allow unbalanced tho... i.e. not run out of root level, ever
391
+ JsonWriteContext c = _writeContext.getParent();
392
+ if (c != null) {
393
+ _writeContext = c;
394
+ }
395
+ }
396
+
397
+ @Override
398
+ public final void writeStartObject()
399
+ throws IOException, JsonGenerationException
400
+ {
401
+ _append(JsonToken.START_OBJECT);
402
+ _writeContext = _writeContext.createChildObjectContext();
403
+ }
404
+
405
+ @Override
406
+ public final void writeEndObject()
407
+ throws IOException, JsonGenerationException
408
+ {
409
+ _append(JsonToken.END_OBJECT);
410
+ // Let's allow unbalanced tho... i.e. not run out of root level, ever
411
+ JsonWriteContext c = _writeContext.getParent();
412
+ if (c != null) {
413
+ _writeContext = c;
414
+ }
415
+ }
416
+
417
+ @Override
418
+ public final void writeFieldName(String name)
419
+ throws IOException, JsonGenerationException
420
+ {
421
+ _append(JsonToken.FIELD_NAME, name);
422
+ _writeContext.writeFieldName(name);
423
+ }
424
+
425
+ @Override
426
+ public void writeFieldName(SerializableString name)
427
+ throws IOException, JsonGenerationException
428
+ {
429
+ _append(JsonToken.FIELD_NAME, name);
430
+ _writeContext.writeFieldName(name.getValue());
431
+ }
432
+
433
+ @Override
434
+ public void writeFieldName(SerializedString name)
435
+ throws IOException, JsonGenerationException
436
+ {
437
+ _append(JsonToken.FIELD_NAME, name);
438
+ _writeContext.writeFieldName(name.getValue());
439
+ }
440
+
441
+ /*
442
+ /**********************************************************
443
+ /* JsonGenerator implementation: write methods, textual
444
+ /**********************************************************
445
+ */
446
+
447
+ @Override
448
+ public void writeString(String text) throws IOException,JsonGenerationException {
449
+ if (text == null) {
450
+ writeNull();
451
+ } else {
452
+ _append(JsonToken.VALUE_STRING, text);
453
+ }
454
+ }
455
+
456
+ @Override
457
+ public void writeString(char[] text, int offset, int len) throws IOException, JsonGenerationException {
458
+ writeString(new String(text, offset, len));
459
+ }
460
+
461
+ @Override
462
+ public void writeString(SerializableString text) throws IOException, JsonGenerationException {
463
+ if (text == null) {
464
+ writeNull();
465
+ } else {
466
+ _append(JsonToken.VALUE_STRING, text);
467
+ }
468
+ }
469
+
470
+ @Override
471
+ public void writeRawUTF8String(byte[] text, int offset, int length)
472
+ throws IOException, JsonGenerationException
473
+ {
474
+ // could add support for buffering if we really want it...
475
+ _reportUnsupportedOperation();
476
+ }
477
+
478
+ @Override
479
+ public void writeUTF8String(byte[] text, int offset, int length)
480
+ throws IOException, JsonGenerationException
481
+ {
482
+ // could add support for buffering if we really want it...
483
+ _reportUnsupportedOperation();
484
+ }
485
+
486
+ @Override
487
+ public void writeRaw(String text) throws IOException, JsonGenerationException {
488
+ _reportUnsupportedOperation();
489
+ }
490
+
491
+ @Override
492
+ public void writeRaw(String text, int offset, int len) throws IOException, JsonGenerationException {
493
+ _reportUnsupportedOperation();
494
+ }
495
+
496
+ @Override
497
+ public void writeRaw(char[] text, int offset, int len) throws IOException, JsonGenerationException {
498
+ _reportUnsupportedOperation();
499
+ }
500
+
501
+ @Override
502
+ public void writeRaw(char c) throws IOException, JsonGenerationException {
503
+ _reportUnsupportedOperation();
504
+ }
505
+
506
+ @Override
507
+ public void writeRawValue(String text) throws IOException, JsonGenerationException {
508
+ _reportUnsupportedOperation();
509
+ }
510
+
511
+ @Override
512
+ public void writeRawValue(String text, int offset, int len) throws IOException, JsonGenerationException {
513
+ _reportUnsupportedOperation();
514
+ }
515
+
516
+ @Override
517
+ public void writeRawValue(char[] text, int offset, int len) throws IOException, JsonGenerationException {
518
+ _reportUnsupportedOperation();
519
+ }
520
+
521
+ /*
522
+ /**********************************************************
523
+ /* JsonGenerator implementation: write methods, primitive types
524
+ /**********************************************************
525
+ */
526
+
527
+ @Override
528
+ public void writeNumber(int i) throws IOException, JsonGenerationException {
529
+ _append(JsonToken.VALUE_NUMBER_INT, Integer.valueOf(i));
530
+ }
531
+
532
+ @Override
533
+ public void writeNumber(long l) throws IOException, JsonGenerationException {
534
+ _append(JsonToken.VALUE_NUMBER_INT, Long.valueOf(l));
535
+ }
536
+
537
+ @Override
538
+ public void writeNumber(double d) throws IOException,JsonGenerationException {
539
+ _append(JsonToken.VALUE_NUMBER_FLOAT, Double.valueOf(d));
540
+ }
541
+
542
+ @Override
543
+ public void writeNumber(float f) throws IOException, JsonGenerationException {
544
+ _append(JsonToken.VALUE_NUMBER_FLOAT, Float.valueOf(f));
545
+ }
546
+
547
+ @Override
548
+ public void writeNumber(BigDecimal dec) throws IOException,JsonGenerationException {
549
+ if (dec == null) {
550
+ writeNull();
551
+ } else {
552
+ _append(JsonToken.VALUE_NUMBER_FLOAT, dec);
553
+ }
554
+ }
555
+
556
+ @Override
557
+ public void writeNumber(BigInteger v) throws IOException, JsonGenerationException {
558
+ if (v == null) {
559
+ writeNull();
560
+ } else {
561
+ _append(JsonToken.VALUE_NUMBER_INT, v);
562
+ }
563
+ }
564
+
565
+ @Override
566
+ public void writeNumber(String encodedValue) throws IOException, JsonGenerationException {
567
+ /* 03-Dec-2010, tatu: related to [JACKSON-423], should try to keep as numeric
568
+ * identity as long as possible
569
+ */
570
+ _append(JsonToken.VALUE_NUMBER_FLOAT, encodedValue);
571
+ }
572
+
573
+ @Override
574
+ public void writeBoolean(boolean state) throws IOException,JsonGenerationException {
575
+ _append(state ? JsonToken.VALUE_TRUE : JsonToken.VALUE_FALSE);
576
+ }
577
+
578
+ @Override
579
+ public void writeNull() throws IOException, JsonGenerationException {
580
+ _append(JsonToken.VALUE_NULL);
581
+ }
582
+
583
+ /*
584
+ /***********************************************************
585
+ /* JsonGenerator implementation: write methods for POJOs/trees
586
+ /***********************************************************
587
+ */
588
+
589
+ @Override
590
+ public void writeObject(Object value)
591
+ throws IOException, JsonProcessingException
592
+ {
593
+ // embedded means that no conversions should be done...
594
+ _append(JsonToken.VALUE_EMBEDDED_OBJECT, value);
595
+ }
596
+
597
+ @Override
598
+ public void writeTree(JsonNode rootNode)
599
+ throws IOException, JsonProcessingException
600
+ {
601
+ /* 31-Dec-2009, tatu: no need to convert trees either is there?
602
+ * (note: may need to re-evaluate at some point)
603
+ */
604
+ _append(JsonToken.VALUE_EMBEDDED_OBJECT, rootNode);
605
+ }
606
+
607
+ /*
608
+ /***********************************************************
609
+ /* JsonGenerator implementation; binary
610
+ /***********************************************************
611
+ */
612
+
613
+ @Override
614
+ public void writeBinary(Base64Variant b64variant, byte[] data, int offset, int len)
615
+ throws IOException, JsonGenerationException
616
+ {
617
+ /* 31-Dec-2009, tatu: can do this using multiple alternatives; but for
618
+ * now, let's try to limit number of conversions.
619
+ * The only (?) tricky thing is that of whether to preserve variant,
620
+ * seems pointless, so let's not worry about it unless there's some
621
+ * compelling reason to.
622
+ */
623
+ byte[] copy = new byte[len];
624
+ System.arraycopy(data, offset, copy, 0, len);
625
+ writeObject(copy);
626
+ }
627
+
628
+ /*
629
+ /**********************************************************
630
+ /* JsonGenerator implementation; pass-through copy
631
+ /**********************************************************
632
+ */
633
+
634
+ @Override
635
+ public void copyCurrentEvent(JsonParser jp) throws IOException, JsonProcessingException
636
+ {
637
+ switch (jp.getCurrentToken()) {
638
+ case START_OBJECT:
639
+ writeStartObject();
640
+ break;
641
+ case END_OBJECT:
642
+ writeEndObject();
643
+ break;
644
+ case START_ARRAY:
645
+ writeStartArray();
646
+ break;
647
+ case END_ARRAY:
648
+ writeEndArray();
649
+ break;
650
+ case FIELD_NAME:
651
+ writeFieldName(jp.getCurrentName());
652
+ break;
653
+ case VALUE_STRING:
654
+ if (jp.hasTextCharacters()) {
655
+ writeString(jp.getTextCharacters(), jp.getTextOffset(), jp.getTextLength());
656
+ } else {
657
+ writeString(jp.getText());
658
+ }
659
+ break;
660
+ case VALUE_NUMBER_INT:
661
+ switch (jp.getNumberType()) {
662
+ case INT:
663
+ writeNumber(jp.getIntValue());
664
+ break;
665
+ case BIG_INTEGER:
666
+ writeNumber(jp.getBigIntegerValue());
667
+ break;
668
+ default:
669
+ writeNumber(jp.getLongValue());
670
+ }
671
+ break;
672
+ case VALUE_NUMBER_FLOAT:
673
+ switch (jp.getNumberType()) {
674
+ case BIG_DECIMAL:
675
+ writeNumber(jp.getDecimalValue());
676
+ break;
677
+ case FLOAT:
678
+ writeNumber(jp.getFloatValue());
679
+ break;
680
+ default:
681
+ writeNumber(jp.getDoubleValue());
682
+ }
683
+ break;
684
+ case VALUE_TRUE:
685
+ writeBoolean(true);
686
+ break;
687
+ case VALUE_FALSE:
688
+ writeBoolean(false);
689
+ break;
690
+ case VALUE_NULL:
691
+ writeNull();
692
+ break;
693
+ case VALUE_EMBEDDED_OBJECT:
694
+ writeObject(jp.getEmbeddedObject());
695
+ break;
696
+ default:
697
+ throw new RuntimeException("Internal error: should never end up through this code path");
698
+ }
699
+ }
700
+
701
+ @Override
702
+ public void copyCurrentStructure(JsonParser jp) throws IOException, JsonProcessingException {
703
+ JsonToken t = jp.getCurrentToken();
704
+
705
+ // Let's handle field-name separately first
706
+ if (t == JsonToken.FIELD_NAME) {
707
+ writeFieldName(jp.getCurrentName());
708
+ t = jp.nextToken();
709
+ // fall-through to copy the associated value
710
+ }
711
+
712
+ switch (t) {
713
+ case START_ARRAY:
714
+ writeStartArray();
715
+ while (jp.nextToken() != JsonToken.END_ARRAY) {
716
+ copyCurrentStructure(jp);
717
+ }
718
+ writeEndArray();
719
+ break;
720
+ case START_OBJECT:
721
+ writeStartObject();
722
+ while (jp.nextToken() != JsonToken.END_OBJECT) {
723
+ copyCurrentStructure(jp);
724
+ }
725
+ writeEndObject();
726
+ break;
727
+ default: // others are simple:
728
+ copyCurrentEvent(jp);
729
+ }
730
+ }
731
+
732
+ /*
733
+ /**********************************************************
734
+ /* Internal methods
735
+ /**********************************************************
736
+ */
737
+ protected final void _append(JsonToken type) {
738
+ Segment next = _last.append(_appendOffset, type);
739
+ if (next == null) {
740
+ ++_appendOffset;
741
+ } else {
742
+ _last = next;
743
+ _appendOffset = 1; // since we added first at 0
744
+ }
745
+ }
746
+
747
+ protected final void _append(JsonToken type, Object value) {
748
+ Segment next = _last.append(_appendOffset, type, value);
749
+ if (next == null) {
750
+ ++_appendOffset;
751
+ } else {
752
+ _last = next;
753
+ _appendOffset = 1;
754
+ }
755
+ }
756
+
757
+ protected void _reportUnsupportedOperation() {
758
+ throw new UnsupportedOperationException("Called operation not supported for TokenBuffer");
759
+ }
760
+
761
+ /*
762
+ /**********************************************************
763
+ /* Supporting classes
764
+ /**********************************************************
765
+ */
766
+
767
+ protected final static class Parser
768
+ extends JsonParserMinimalBase
769
+ {
770
+ protected ObjectCodec _codec;
771
+
772
+ /*
773
+ /**********************************************************
774
+ /* Parsing state
775
+ /**********************************************************
776
+ */
777
+
778
+ /**
779
+ * Currently active segment
780
+ */
781
+ protected Segment _segment;
782
+
783
+ /**
784
+ * Pointer to current token within current segment
785
+ */
786
+ protected int _segmentPtr;
787
+
788
+ /**
789
+ * Information about parser context, context in which
790
+ * the next token is to be parsed (root, array, object).
791
+ */
792
+ protected JsonReadContext _parsingContext;
793
+
794
+ protected boolean _closed;
795
+
796
+ protected transient ByteArrayBuilder _byteBuilder;
797
+
798
+ protected JsonLocation _location = null;
799
+
800
+ /*
801
+ /**********************************************************
802
+ /* Construction, init
803
+ /**********************************************************
804
+ */
805
+
806
+ public Parser(Segment firstSeg, ObjectCodec codec)
807
+ {
808
+ super(0);
809
+ _segment = firstSeg;
810
+ _segmentPtr = -1; // not yet read
811
+ _codec = codec;
812
+ _parsingContext = JsonReadContext.createRootContext(-1, -1);
813
+ }
814
+
815
+ public void setLocation(JsonLocation l) {
816
+ _location = l;
817
+ }
818
+
819
+ @Override
820
+ public ObjectCodec getCodec() { return _codec; }
821
+
822
+ @Override
823
+ public void setCodec(ObjectCodec c) { _codec = c; }
824
+
825
+ /*
826
+ /**********************************************************
827
+ /* Extended API beyond JsonParser
828
+ /**********************************************************
829
+ */
830
+
831
+ public JsonToken peekNextToken()
832
+ throws IOException, JsonParseException
833
+ {
834
+ // closed? nothing more to peek, either
835
+ if (_closed) return null;
836
+ Segment seg = _segment;
837
+ int ptr = _segmentPtr+1;
838
+ if (ptr >= Segment.TOKENS_PER_SEGMENT) {
839
+ ptr = 0;
840
+ seg = (seg == null) ? null : seg.next();
841
+ }
842
+ return (seg == null) ? null : seg.type(ptr);
843
+ }
844
+
845
+ /*
846
+ /**********************************************************
847
+ /* Closeable implementation
848
+ /**********************************************************
849
+ */
850
+
851
+ @Override
852
+ public void close() throws IOException {
853
+ if (!_closed) {
854
+ _closed = true;
855
+ }
856
+ }
857
+
858
+ /*
859
+ /**********************************************************
860
+ /* Public API, traversal
861
+ /**********************************************************
862
+ */
863
+
864
+ @Override
865
+ public JsonToken nextToken() throws IOException, JsonParseException
866
+ {
867
+ // If we are closed, nothing more to do
868
+ if (_closed || (_segment == null)) return null;
869
+
870
+ // Ok, then: any more tokens?
871
+ if (++_segmentPtr >= Segment.TOKENS_PER_SEGMENT) {
872
+ _segmentPtr = 0;
873
+ _segment = _segment.next();
874
+ if (_segment == null) {
875
+ return null;
876
+ }
877
+ }
878
+ _currToken = _segment.type(_segmentPtr);
879
+ // Field name? Need to update context
880
+ if (_currToken == JsonToken.FIELD_NAME) {
881
+ Object ob = _currentObject();
882
+ String name = (ob instanceof String) ? ((String) ob) : ob.toString();
883
+ _parsingContext.setCurrentName(name);
884
+ } else if (_currToken == JsonToken.START_OBJECT) {
885
+ _parsingContext = _parsingContext.createChildObjectContext(-1, -1);
886
+ } else if (_currToken == JsonToken.START_ARRAY) {
887
+ _parsingContext = _parsingContext.createChildArrayContext(-1, -1);
888
+ } else if (_currToken == JsonToken.END_OBJECT
889
+ || _currToken == JsonToken.END_ARRAY) {
890
+ // Closing JSON Object/Array? Close matching context
891
+ _parsingContext = _parsingContext.getParent();
892
+ // but allow unbalanced cases too (more close markers)
893
+ if (_parsingContext == null) {
894
+ _parsingContext = JsonReadContext.createRootContext(-1, -1);
895
+ }
896
+ }
897
+ return _currToken;
898
+ }
899
+
900
+ @Override
901
+ public boolean isClosed() { return _closed; }
902
+
903
+ /*
904
+ /**********************************************************
905
+ /* Public API, token accessors
906
+ /**********************************************************
907
+ */
908
+
909
+ @Override
910
+ public JsonStreamContext getParsingContext() { return _parsingContext; }
911
+
912
+ @Override
913
+ public JsonLocation getTokenLocation() { return getCurrentLocation(); }
914
+
915
+ @Override
916
+ public JsonLocation getCurrentLocation() {
917
+ return (_location == null) ? JsonLocation.NA : _location;
918
+ }
919
+
920
+ @Override
921
+ public String getCurrentName() { return _parsingContext.getCurrentName(); }
922
+
923
+ /*
924
+ /**********************************************************
925
+ /* Public API, access to token information, text
926
+ /**********************************************************
927
+ */
928
+
929
+ @Override
930
+ public String getText()
931
+ {
932
+ // common cases first:
933
+ if (_currToken == JsonToken.VALUE_STRING
934
+ || _currToken == JsonToken.FIELD_NAME) {
935
+ Object ob = _currentObject();
936
+ if (ob instanceof String) {
937
+ return (String) ob;
938
+ }
939
+ return (ob == null) ? null : ob.toString();
940
+ }
941
+ if (_currToken == null) {
942
+ return null;
943
+ }
944
+ switch (_currToken) {
945
+ case VALUE_NUMBER_INT:
946
+ case VALUE_NUMBER_FLOAT:
947
+ Object ob = _currentObject();
948
+ return (ob == null) ? null : ob.toString();
949
+ }
950
+ return _currToken.asString();
951
+ }
952
+
953
+ @Override
954
+ public char[] getTextCharacters() {
955
+ String str = getText();
956
+ return (str == null) ? null : str.toCharArray();
957
+ }
958
+
959
+ @Override
960
+ public int getTextLength() {
961
+ String str = getText();
962
+ return (str == null) ? 0 : str.length();
963
+ }
964
+
965
+ @Override
966
+ public int getTextOffset() { return 0; }
967
+
968
+ @Override
969
+ public boolean hasTextCharacters() {
970
+ // We never have raw buffer available, so:
971
+ return false;
972
+ }
973
+
974
+ /*
975
+ /**********************************************************
976
+ /* Public API, access to token information, numeric
977
+ /**********************************************************
978
+ */
979
+
980
+ @Override
981
+ public BigInteger getBigIntegerValue() throws IOException, JsonParseException
982
+ {
983
+ Number n = getNumberValue();
984
+ if (n instanceof BigInteger) {
985
+ return (BigInteger) n;
986
+ }
987
+ switch (getNumberType()) {
988
+ case BIG_DECIMAL:
989
+ return ((BigDecimal) n).toBigInteger();
990
+ }
991
+ // int/long is simple, but let's also just truncate float/double:
992
+ return BigInteger.valueOf(n.longValue());
993
+ }
994
+
995
+ @Override
996
+ public BigDecimal getDecimalValue() throws IOException, JsonParseException
997
+ {
998
+ Number n = getNumberValue();
999
+ if (n instanceof BigDecimal) {
1000
+ return (BigDecimal) n;
1001
+ }
1002
+ switch (getNumberType()) {
1003
+ case INT:
1004
+ case LONG:
1005
+ return BigDecimal.valueOf(n.longValue());
1006
+ case BIG_INTEGER:
1007
+ return new BigDecimal((BigInteger) n);
1008
+ }
1009
+ // float or double
1010
+ return BigDecimal.valueOf(n.doubleValue());
1011
+ }
1012
+
1013
+ @Override
1014
+ public double getDoubleValue() throws IOException, JsonParseException {
1015
+ return getNumberValue().doubleValue();
1016
+ }
1017
+
1018
+ @Override
1019
+ public float getFloatValue() throws IOException, JsonParseException {
1020
+ return getNumberValue().floatValue();
1021
+ }
1022
+
1023
+ @Override
1024
+ public int getIntValue() throws IOException, JsonParseException
1025
+ {
1026
+ // optimize common case:
1027
+ if (_currToken == JsonToken.VALUE_NUMBER_INT) {
1028
+ return ((Number) _currentObject()).intValue();
1029
+ }
1030
+ return getNumberValue().intValue();
1031
+ }
1032
+
1033
+ @Override
1034
+ public long getLongValue() throws IOException, JsonParseException {
1035
+ return getNumberValue().longValue();
1036
+ }
1037
+
1038
+ @Override
1039
+ public NumberType getNumberType() throws IOException, JsonParseException
1040
+ {
1041
+ Number n = getNumberValue();
1042
+ if (n instanceof Integer) return NumberType.INT;
1043
+ if (n instanceof Long) return NumberType.LONG;
1044
+ if (n instanceof Double) return NumberType.DOUBLE;
1045
+ if (n instanceof BigDecimal) return NumberType.BIG_DECIMAL;
1046
+ if (n instanceof Float) return NumberType.FLOAT;
1047
+ if (n instanceof BigInteger) return NumberType.BIG_INTEGER;
1048
+ return null;
1049
+ }
1050
+
1051
+ @Override
1052
+ public final Number getNumberValue() throws IOException, JsonParseException {
1053
+ _checkIsNumber();
1054
+ return (Number) _currentObject();
1055
+ }
1056
+
1057
+ /*
1058
+ /**********************************************************
1059
+ /* Public API, access to token information, other
1060
+ /**********************************************************
1061
+ */
1062
+
1063
+ @Override
1064
+ public Object getEmbeddedObject()
1065
+ {
1066
+ if (_currToken == JsonToken.VALUE_EMBEDDED_OBJECT) {
1067
+ return _currentObject();
1068
+ }
1069
+ return null;
1070
+ }
1071
+
1072
+ @Override
1073
+ public byte[] getBinaryValue(Base64Variant b64variant) throws IOException, JsonParseException
1074
+ {
1075
+ // First: maybe we some special types?
1076
+ if (_currToken == JsonToken.VALUE_EMBEDDED_OBJECT) {
1077
+ // Embedded byte array would work nicely...
1078
+ Object ob = _currentObject();
1079
+ if (ob instanceof byte[]) {
1080
+ return (byte[]) ob;
1081
+ }
1082
+ // fall through to error case
1083
+ }
1084
+ if (_currToken != JsonToken.VALUE_STRING) {
1085
+ throw _constructError("Current token ("+_currToken+") not VALUE_STRING (or VALUE_EMBEDDED_OBJECT with byte[]), can not access as binary");
1086
+ }
1087
+ final String str = getText();
1088
+ if (str == null) {
1089
+ return null;
1090
+ }
1091
+ ByteArrayBuilder builder = _byteBuilder;
1092
+ if (builder == null) {
1093
+ _byteBuilder = builder = new ByteArrayBuilder(100);
1094
+ } else {
1095
+ _byteBuilder.reset();
1096
+ }
1097
+ _decodeBase64(str, builder, b64variant);
1098
+ return builder.toByteArray();
1099
+ }
1100
+
1101
+ /*
1102
+ /**********************************************************
1103
+ /* Internal methods
1104
+ /**********************************************************
1105
+ */
1106
+
1107
+ protected final Object _currentObject() {
1108
+ return _segment.get(_segmentPtr);
1109
+ }
1110
+
1111
+ protected final void _checkIsNumber() throws JsonParseException
1112
+ {
1113
+ if (_currToken == null || !_currToken.isNumeric()) {
1114
+ throw _constructError("Current token ("+_currToken+") not numeric, can not use numeric value accessors");
1115
+ }
1116
+ }
1117
+
1118
+ @Override
1119
+ protected void _handleEOF() throws JsonParseException {
1120
+ _throwInternal();
1121
+ }
1122
+ }
1123
+
1124
+ /**
1125
+ * Individual segment of TokenBuffer that can store up to 16 tokens
1126
+ * (limited by 4 bits per token type marker requirement).
1127
+ * Current implementation uses fixed length array; could alternatively
1128
+ * use 16 distinct fields and switch statement (slightly more efficient
1129
+ * storage, slightly slower access)
1130
+ */
1131
+ protected final static class Segment
1132
+ {
1133
+ public final static int TOKENS_PER_SEGMENT = 16;
1134
+
1135
+ /**
1136
+ * Static array used for fast conversion between token markers and
1137
+ * matching {@link JsonToken} instances
1138
+ */
1139
+ private final static JsonToken[] TOKEN_TYPES_BY_INDEX;
1140
+ static {
1141
+ // ... here we know that there are <= 16 values in JsonToken enum
1142
+ TOKEN_TYPES_BY_INDEX = new JsonToken[16];
1143
+ JsonToken[] t = JsonToken.values();
1144
+ System.arraycopy(t, 1, TOKEN_TYPES_BY_INDEX, 1, Math.min(15, t.length - 1));
1145
+ }
1146
+
1147
+ // // // Linking
1148
+
1149
+ protected Segment _next;
1150
+
1151
+ // // // State
1152
+
1153
+ /**
1154
+ * Bit field used to store types of buffered tokens; 4 bits per token.
1155
+ * Value 0 is reserved for "not in use"
1156
+ */
1157
+ protected long _tokenTypes;
1158
+
1159
+
1160
+ // Actual tokens
1161
+
1162
+ protected final Object[] _tokens = new Object[TOKENS_PER_SEGMENT];
1163
+
1164
+ public Segment() { }
1165
+
1166
+ // // // Accessors
1167
+
1168
+ public JsonToken type(int index)
1169
+ {
1170
+ long l = _tokenTypes;
1171
+ if (index > 0) {
1172
+ l >>= (index << 2);
1173
+ }
1174
+ int ix = ((int) l) & 0xF;
1175
+ return TOKEN_TYPES_BY_INDEX[ix];
1176
+ }
1177
+
1178
+ public Object get(int index) {
1179
+ return _tokens[index];
1180
+ }
1181
+
1182
+ public Segment next() { return _next; }
1183
+
1184
+ // // // Mutators
1185
+
1186
+ public Segment append(int index, JsonToken tokenType)
1187
+ {
1188
+ if (index < TOKENS_PER_SEGMENT) {
1189
+ set(index, tokenType);
1190
+ return null;
1191
+ }
1192
+ _next = new Segment();
1193
+ _next.set(0, tokenType);
1194
+ return _next;
1195
+ }
1196
+
1197
+ public Segment append(int index, JsonToken tokenType, Object value)
1198
+ {
1199
+ if (index < TOKENS_PER_SEGMENT) {
1200
+ set(index, tokenType, value);
1201
+ return null;
1202
+ }
1203
+ _next = new Segment();
1204
+ _next.set(0, tokenType, value);
1205
+ return _next;
1206
+ }
1207
+
1208
+ public void set(int index, JsonToken tokenType)
1209
+ {
1210
+ long typeCode = tokenType.ordinal();
1211
+ /* Assumption here is that there are no overwrites, just appends;
1212
+ * and so no masking is needed
1213
+ */
1214
+ if (index > 0) {
1215
+ typeCode <<= (index << 2);
1216
+ }
1217
+ _tokenTypes |= typeCode;
1218
+ }
1219
+
1220
+ public void set(int index, JsonToken tokenType, Object value)
1221
+ {
1222
+ _tokens[index] = value;
1223
+ long typeCode = tokenType.ordinal();
1224
+ /* Assumption here is that there are no overwrites, just appends;
1225
+ * and so no masking is needed
1226
+ */
1227
+ if (index > 0) {
1228
+ typeCode <<= (index << 2);
1229
+ }
1230
+ _tokenTypes |= typeCode;
1231
+ }
1232
+ }
1233
+ }