calabash-android 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES.txt +1 -0
- data/Gemfile +4 -0
- data/LICENSE +8 -0
- data/Rakefile +2 -0
- data/bin/calabash-android +42 -0
- data/bin/calabash-android-build.rb +37 -0
- data/bin/calabash-android-generate.rb +26 -0
- data/bin/calabash-android-helpers.rb +71 -0
- data/bin/calabash-android-run.rb +18 -0
- data/bin/calabash-android-setup.rb +392 -0
- data/calabash-android.gemspec +23 -0
- data/doc/calabash-android-help.txt +21 -0
- data/epl-v10.html +261 -0
- data/features-skeleton/.irbrc +16 -0
- data/features-skeleton/irb_android.sh +2 -0
- data/features-skeleton/my_first.feature +5 -0
- data/features-skeleton/step_definitions/calabash_steps.rb +1 -0
- data/features-skeleton/support/app_installation_hooks.rb +26 -0
- data/features-skeleton/support/app_life_cycle_hooks.rb +28 -0
- data/features-skeleton/support/env.rb +1 -0
- data/features-skeleton/support/hooks.rb +18 -0
- data/lib/calabash-android.rb +2 -0
- data/lib/calabash-android/calabash_steps.rb +18 -0
- data/lib/calabash-android/canned_steps.md +239 -0
- data/lib/calabash-android/color_helper.rb +13 -0
- data/lib/calabash-android/cucumber.rb +9 -0
- data/lib/calabash-android/lib/screenShotTaker.jar +0 -0
- data/lib/calabash-android/management/adb.rb +11 -0
- data/lib/calabash-android/management/app_installation.rb +21 -0
- data/lib/calabash-android/operations.rb +283 -0
- data/lib/calabash-android/steps/additions_manual_steps.rb +11 -0
- data/lib/calabash-android/steps/app_steps.rb +10 -0
- data/lib/calabash-android/steps/assert_steps.rb +32 -0
- data/lib/calabash-android/steps/check_box_steps.rb +3 -0
- data/lib/calabash-android/steps/context_menu_steps.rb +12 -0
- data/lib/calabash-android/steps/date_picker_steps.rb +8 -0
- data/lib/calabash-android/steps/enter_text_steps.rb +21 -0
- data/lib/calabash-android/steps/location_steps.rb +19 -0
- data/lib/calabash-android/steps/navigation_steps.rb +27 -0
- data/lib/calabash-android/steps/press_button_steps.rb +35 -0
- data/lib/calabash-android/steps/progress_steps.rb +49 -0
- data/lib/calabash-android/steps/rotation_steps.rb +8 -0
- data/lib/calabash-android/steps/screenshot_steps.rb +11 -0
- data/lib/calabash-android/steps/spinner_steps.rb +3 -0
- data/lib/calabash-android/steps/time_picker_steps.rb +8 -0
- data/lib/calabash-android/version.rb +6 -0
- data/test-server/AndroidManifest.xml +13 -0
- data/test-server/build.xml +192 -0
- data/test-server/calabash-js/src/calabash.js +125 -0
- data/test-server/calabash-js/src/set_text.js +132 -0
- data/test-server/instrumentation-backend/.classpath +10 -0
- data/test-server/instrumentation-backend/.project +33 -0
- data/test-server/instrumentation-backend/.settings/org.eclipse.jdt.core.prefs +12 -0
- data/test-server/instrumentation-backend/AndroidManifest.xml +15 -0
- data/test-server/instrumentation-backend/assets/foo.bar +0 -0
- data/test-server/instrumentation-backend/gen/com/lesspainful/simpleui/test/R.java +23 -0
- data/test-server/instrumentation-backend/libs/robotium-solo-2.5.jar +0 -0
- data/test-server/instrumentation-backend/project.properties +11 -0
- data/test-server/instrumentation-backend/res/drawable-hdpi/ic_launcher.png +0 -0
- data/test-server/instrumentation-backend/res/drawable-ldpi/ic_launcher.png +0 -0
- data/test-server/instrumentation-backend/res/drawable-mdpi/ic_launcher.png +0 -0
- data/test-server/instrumentation-backend/res/layout/main.xml +12 -0
- data/test-server/instrumentation-backend/res/values/strings.xml +7 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +48 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java +196 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +64 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java +136 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Action.java +11 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/Actions.java +113 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NullAction.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java +27 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonNumber.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/WaitForButton.java +47 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/checkbox/ToggleCheckboxNumber.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressText.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuById.java +26 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByIndex.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java +26 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/ClickOnScreen.java +31 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/ListActions.java +26 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/LongPressListItems.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/PressListItems.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +79 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollDown.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollUp.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/DownKey.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/GoBack.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/PressMenu.java +26 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java +43 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertText.java +31 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertTextOfSpecificTextViewByContentDescription.java +32 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextByIndex.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextFieldByContentDescription.java +33 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClickOnText.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByContentDescription.java +32 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByIndex.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByContentDescription.java +33 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByIndex.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByContentDescription.java +34 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByIndex.java +26 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java +63 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/LongPressOnViewById.java +34 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/Press.java +89 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/WaitForViewById.java +41 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/Wait.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForDialogClose.java +21 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForProgress.java +47 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForScreen.java +49 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForText.java +26 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +109 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +33 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +33 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +99 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +43 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +99 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +74 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +43 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +50 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +44 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java +413 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java +90 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java +29 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonEncoding.java +47 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonFactory.java +937 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerationException.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonGenerator.java +1197 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonLocation.java +141 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonNode.java +879 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParseException.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonParser.java +1434 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonProcessingException.java +80 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonStreamContext.java +122 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/JsonToken.java +161 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/ObjectCodec.java +157 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/PrettyPrinter.java +166 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/SerializableString.java +54 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Version.java +90 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Versioned.java +20 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JacksonAnnotation.java +20 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnyGetter.java +25 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAnySetter.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonAutoDetect.java +148 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonBackReference.java +41 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonCreator.java +19 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonGetter.java +35 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnore.java +57 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreProperties.java +48 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonIgnoreType.java +33 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonManagedReference.java +41 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonMethod.java +90 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonProperty.java +38 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonPropertyOrder.java +46 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonRawValue.java +33 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSetter.java +33 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonSubTypes.java +44 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeInfo.java +236 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonTypeName.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonUnwrapped.java +76 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonValue.java +46 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/JsonWriteNullProperties.java +34 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/annotate/package-info.java +16 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatDetector.java +176 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/DataFormatMatcher.java +117 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/InputAccessor.java +130 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/MatchStrength.java +64 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/format/package-info.java +8 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ByteSourceBootstrapper.java +518 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/DefaultPrettyPrinter.java +13 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Indenter.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonGeneratorBase.java +570 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonNumericParserBase.java +20 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserBase.java +1067 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonParserMinimalBase.java +539 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonReadContext.java +188 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/JsonWriteContext.java +178 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParser.java +1815 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/ReaderBasedParserBase.java +228 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/StreamBasedParserBase.java +197 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8Generator.java +1757 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/Utf8StreamParser.java +2966 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/WriterBasedGenerator.java +1815 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/impl/package-info.java +6 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/BaseReader.java +117 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/CharacterEscapes.java +73 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/IOContext.java +239 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/InputDecorator.java +67 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/JsonStringEncoder.java +408 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/MergedStream.java +145 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberInput.java +303 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/NumberOutput.java +398 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/OutputDecorator.java +40 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SegmentedStringWriter.java +104 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/SerializedString.java +114 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF32Reader.java +214 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/UTF8Writer.java +387 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/io/package.html +4 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AbstractTypeResolver.java +63 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/AnnotationIntrospector.java +1485 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanDescription.java +171 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanProperty.java +123 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/BeanPropertyDefinition.java +66 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ClassIntrospector.java +117 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualDeserializer.java +38 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualKeyDeserializer.java +33 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ContextualSerializer.java +38 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationConfig.java +926 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationContext.java +262 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializationProblemHandler.java +56 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerFactory.java +356 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/DeserializerProvider.java +185 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Deserializers.java +339 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/HandlerInstantiator.java +115 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/InjectableValues.java +85 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonDeserializer.java +166 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonMappingException.java +335 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializable.java +34 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializableWithType.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/JsonSerializer.java +138 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializer.java +31 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/KeyDeserializers.java +21 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MapperConfig.java +1154 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingIterator.java +190 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/MappingJsonFactory.java +81 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Module.java +255 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectMapper.java +2885 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectReader.java +958 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ObjectWriter.java +554 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/PropertyNamingStrategy.java +258 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableDeserializer.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ResolvableSerializer.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/RuntimeJsonMappingException.java +21 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializationConfig.java +1041 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerFactory.java +198 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/SerializerProvider.java +552 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/Serializers.java +137 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeDeserializer.java +118 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/TypeSerializer.java +164 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonInject.java +30 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JacksonStdImpl.java +25 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonCachable.java +32 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonDeserialize.java +109 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonFilter.java +31 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonRootName.java +29 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonSerialize.java +216 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeIdResolver.java +35 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonTypeResolver.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonValueInstantiator.java +26 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/JsonView.java +37 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/NoClass.java +19 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/annotate/package-info.java +5 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/AbstractDeserializer.java +102 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializer.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ArrayDeserializers.java +11 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BasicDeserializerFactory.java +894 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializer.java +1537 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerBuilder.java +277 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerFactory.java +1474 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/BeanDeserializerModifier.java +58 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CollectionDeserializer.java +47 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ContainerDeserializer.java +14 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/CustomDeserializerFactory.java +227 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/DateDeserializer.java +9 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumDeserializer.java +15 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/EnumResolver.java +17 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/FromStringDeserializer.java +13 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/JsonNodeDeserializer.java +54 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/MapDeserializer.java +44 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableAnyProperty.java +177 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/SettableBeanProperty.java +827 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializationContext.java +326 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializer.java +94 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializerProvider.java +494 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdDeserializers.java +119 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializer.java +12 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdKeyDeserializers.java +11 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/StdScalarDeserializer.java +13 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ThrowableDeserializer.java +13 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/UntypedObjectDeserializer.java +9 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiator.java +280 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/ValueInstantiators.java +52 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/BeanPropertyMap.java +257 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorCollector.java +141 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/CreatorProperty.java +152 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java +173 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java +117 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValue.java +117 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/PropertyValueBuffer.java +102 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/UnwrappedPropertyHandler.java +41 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/ValueInjector.java +45 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/impl/package-info.java +9 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/package-info.java +5 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicBooleanDeserializer.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/AtomicReferenceDeserializer.java +47 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CalendarDeserializer.java +47 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ClassDeserializer.java +49 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/CollectionDeserializer.java +265 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ContainerDeserializerBase.java +37 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/DateDeserializer.java +30 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumDeserializer.java +139 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumMapDeserializer.java +90 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/EnumSetDeserializer.java +89 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java +265 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JavaTypeDeserializer.java +38 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/JsonNodeDeserializer.java +314 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/MapDeserializer.java +412 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ObjectArrayDeserializer.java +201 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/PrimitiveArrayDeserializers.java +583 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdDeserializer.java +1136 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java +340 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdKeyDeserializers.java +108 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdScalarDeserializer.java +34 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StdValueInstantiator.java +392 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringCollectionDeserializer.java +227 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/StringDeserializer.java +55 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/ThrowableDeserializer.java +164 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TimestampDeserializer.java +30 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/TokenBufferDeserializer.java +36 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/UntypedObjectDeserializer.java +248 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/deser/std/package-info.java +15 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/exc/UnrecognizedPropertyException.java +75 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLDeserializers.java +114 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/CoreXMLSerializers.java +72 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/DOMDeserializer.java +65 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/OptionalHandlerFactory.java +217 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ext/package-info.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/Annotated.java +85 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedClass.java +980 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedConstructor.java +143 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedField.java +119 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMember.java +56 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethod.java +188 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedMethodMap.java +85 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedParameter.java +191 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotatedWithParams.java +195 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/AnnotationMap.java +101 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicBeanDescription.java +615 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/BasicClassIntrospector.java +364 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/JacksonAnnotationIntrospector.java +813 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MemberKey.java +83 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/MethodFilter.java +12 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java +209 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertiesCollector.java +713 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/POJOPropertyBuilder.java +648 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/VisibilityChecker.java +424 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/introspect/package-info.java +12 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/NamedType.java +53 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/SubtypeResolver.java +39 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeIdResolver.java +74 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/TypeResolverBuilder.java +151 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeDeserializer.java +126 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeSerializer.java +110 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeDeserializer.java +37 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeSerializer.java +129 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeDeserializer.java +191 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeSerializer.java +69 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeDeserializer.java +103 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeSerializer.java +121 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/ClassNameIdResolver.java +138 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/MinimalClassNameIdResolver.java +66 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdSubtypeResolver.java +151 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/StdTypeResolverBuilder.java +202 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeDeserializerBase.java +154 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeIdResolverBase.java +37 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeNameIdResolver.java +154 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/TypeSerializerBase.java +31 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/impl/package-info.java +9 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/jsontype/package-info.java +10 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleAbstractTypeResolver.java +86 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleDeserializers.java +130 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleKeyDeserializers.java +59 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleModule.java +265 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleSerializers.java +206 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/SimpleValueInstantiators.java +45 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/module/package-info.java +16 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/package-info.java +34 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/AnyGetterWriter.java +48 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ArraySerializers.java +7 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BasicSerializerFactory.java +806 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyFilter.java +30 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanPropertyWriter.java +512 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializer.java +126 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerBuilder.java +140 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerFactory.java +780 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/BeanSerializerModifier.java +95 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ContainerSerializers.java +8 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/CustomSerializerFactory.java +293 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/EnumSerializer.java +17 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilterProvider.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/FilteredBeanPropertyWriter.java +96 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/JdkSerializers.java +11 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/MapSerializer.java +58 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/PropertyBuilder.java +372 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ScalarSerializerBase.java +18 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/SerializerBase.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdKeySerializer.java +10 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializerProvider.java +852 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/StdSerializers.java +372 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/ToStringSerializer.java +14 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/FailingSerializer.java +43 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/JsonSerializerMap.java +93 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/PropertySerializerMap.java +231 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/ReadOnlyClassToSerializerMap.java +73 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SerializerCache.java +304 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleBeanPropertyFilter.java +109 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/SimpleFilterProvider.java +114 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnknownSerializer.java +54 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanPropertyWriter.java +99 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/UnwrappingBeanSerializer.java +76 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/impl/package-info.java +5 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/package-info.java +5 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/AsArraySerializerBase.java +185 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/BeanSerializerBase.java +340 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CalendarSerializer.java +43 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/CollectionSerializer.java +113 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ContainerSerializerBase.java +51 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/DateSerializer.java +42 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumMapSerializer.java +218 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSerializer.java +84 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/EnumSetSerializer.java +47 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IndexedStringListSerializer.java +116 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/InetAddressSerializer.java +51 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/IterableSerializer.java +63 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java +233 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/MapSerializer.java +422 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NonTypedScalarSerializerBase.java +34 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/NullSerializer.java +38 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ObjectArraySerializer.java +281 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/RawSerializer.java +52 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ScalarSerializerBase.java +52 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableSerializer.java +99 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializableWithTypeSerializer.java +90 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/SerializerBase.java +184 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StaticListSerializerBase.java +46 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdArraySerializers.java +476 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdContainerSerializers.java +249 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdJdkSerializers.java +195 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializer.java +43 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StdKeySerializers.java +95 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringCollectionSerializer.java +119 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/StringSerializer.java +36 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TimeZoneSerializer.java +38 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/ToStringSerializer.java +73 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/ser/std/TokenBufferSerializer.java +66 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ArrayType.java +260 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/ClassKey.java +94 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionLikeType.java +204 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/CollectionType.java +94 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/HierarchicType.java +88 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapLikeType.java +265 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/MapType.java +146 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/SimpleType.java +250 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBase.java +148 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeBindings.java +351 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeFactory.java +1165 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeModifier.java +38 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/TypeParser.java +134 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/type/package-info.java +10 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Annotations.java +23 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ArrayBuilders.java +293 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/BeanUtil.java +260 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ClassUtil.java +645 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Comparators.java +48 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumResolver.java +108 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/EnumValues.java +82 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601DateFormat.java +52 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ISO8601Utils.java +230 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONPObject.java +105 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/JSONWrappedObject.java +117 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LRUMap.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/LinkedNode.java +45 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Named.java +10 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ObjectBuffer.java +257 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/PrimitiveArrayBuilder.java +180 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/Provider.java +21 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/RootNameLookup.java +54 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/StdDateFormat.java +348 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/package-info.java +4 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ArrayNode.java +758 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BaseJsonNode.java +122 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BigIntegerNode.java +104 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BinaryNode.java +136 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/BooleanNode.java +84 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ContainerNode.java +185 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DecimalNode.java +96 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/DoubleNode.java +106 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/IntNode.java +122 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/JsonNodeFactory.java +222 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/LongNode.java +99 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/MissingNode.java +97 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NodeCursor.java +222 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NullNode.java +58 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/NumericNode.java +72 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ObjectNode.java +696 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/POJONode.java +145 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TextNode.java +299 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/TreeTraversingParser.java +383 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/ValueNode.java +58 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/node/package-info.java +8 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/package-info.java +30 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSchema.java +82 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/JsonSerializableSchema.java +46 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/SchemaAware.java +25 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/schema/package-info.java +5 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/BytesToNameCanonicalizer.java +969 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/CharsToNameCanonicalizer.java +578 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name.java +50 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name1.java +44 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name2.java +40 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/Name3.java +39 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/NameN.java +68 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/sym/package-info.java +5 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/JavaType.java +503 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/TypeReference.java +60 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/type/package-info.java +8 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/BufferRecycler.java +109 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/ByteArrayBuilder.java +294 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/CharTypes.java +237 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/DefaultPrettyPrinter.java +282 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/InternCache.java +49 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonGeneratorDelegate.java +273 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserDelegate.java +251 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/JsonParserSequence.java +150 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/MinimalPrettyPrinter.java +152 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TextBuffer.java +707 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java +1233 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java +79 -0
- data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java +4 -0
- metadata +619 -0
|
@@ -0,0 +1,1136 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.deser.std;
|
|
2
|
+
|
|
3
|
+
import java.io.IOException;
|
|
4
|
+
import java.math.BigDecimal;
|
|
5
|
+
import java.math.BigInteger;
|
|
6
|
+
import java.util.*;
|
|
7
|
+
|
|
8
|
+
import sh.calaba.org.codehaus.jackson.JsonParser;
|
|
9
|
+
import sh.calaba.org.codehaus.jackson.JsonProcessingException;
|
|
10
|
+
import sh.calaba.org.codehaus.jackson.JsonToken;
|
|
11
|
+
import sh.calaba.org.codehaus.jackson.JsonParser.NumberType;
|
|
12
|
+
import sh.calaba.org.codehaus.jackson.io.NumberInput;
|
|
13
|
+
import sh.calaba.org.codehaus.jackson.map.*;
|
|
14
|
+
import sh.calaba.org.codehaus.jackson.map.annotate.JacksonStdImpl;
|
|
15
|
+
import sh.calaba.org.codehaus.jackson.type.JavaType;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Base class for common deserializers. Contains shared
|
|
19
|
+
* base functionality for dealing with primitive values, such
|
|
20
|
+
* as (re)parsing from String.
|
|
21
|
+
*
|
|
22
|
+
* @since 1.9 (moved from higher-level package)
|
|
23
|
+
*/
|
|
24
|
+
public abstract class StdDeserializer<T>
|
|
25
|
+
extends JsonDeserializer<T>
|
|
26
|
+
{
|
|
27
|
+
/**
|
|
28
|
+
* Type of values this deserializer handles: sometimes
|
|
29
|
+
* exact types, other time most specific supertype of
|
|
30
|
+
* types deserializer handles (which may be as generic
|
|
31
|
+
* as {@link Object} in some case)
|
|
32
|
+
*/
|
|
33
|
+
final protected Class<?> _valueClass;
|
|
34
|
+
|
|
35
|
+
protected StdDeserializer(Class<?> vc) {
|
|
36
|
+
_valueClass = vc;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
protected StdDeserializer(JavaType valueType) {
|
|
40
|
+
_valueClass = (valueType == null) ? null : valueType.getRawClass();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
/**********************************************************
|
|
45
|
+
/* Extended API
|
|
46
|
+
/**********************************************************
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
public Class<?> getValueClass() { return _valueClass; }
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Exact structured type deserializer handles, if known.
|
|
53
|
+
*<p>
|
|
54
|
+
* Default implementation just returns null.
|
|
55
|
+
*/
|
|
56
|
+
public JavaType getValueType() { return null; }
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Method that can be called to determine if given deserializer is the default
|
|
60
|
+
* deserializer Jackson uses; as opposed to a custom deserializer installed by
|
|
61
|
+
* a module or calling application. Determination is done using
|
|
62
|
+
* {@link JacksonStdImpl} annotation on deserializer class.
|
|
63
|
+
*
|
|
64
|
+
* @since 1.7
|
|
65
|
+
*/
|
|
66
|
+
protected boolean isDefaultSerializer(JsonDeserializer<?> deserializer)
|
|
67
|
+
{
|
|
68
|
+
return (deserializer != null && deserializer.getClass().getAnnotation(JacksonStdImpl.class) != null);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/*
|
|
72
|
+
/**********************************************************
|
|
73
|
+
/* Partial JsonDeserializer implementation
|
|
74
|
+
/**********************************************************
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Base implementation that does not assume specific type
|
|
79
|
+
* inclusion mechanism. Sub-classes are expected to override
|
|
80
|
+
* this method if they are to handle type information.
|
|
81
|
+
*/
|
|
82
|
+
@Override
|
|
83
|
+
public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt,
|
|
84
|
+
TypeDeserializer typeDeserializer)
|
|
85
|
+
throws IOException, JsonProcessingException
|
|
86
|
+
{
|
|
87
|
+
return typeDeserializer.deserializeTypedFromAny(jp, ctxt);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/*
|
|
91
|
+
/**********************************************************
|
|
92
|
+
/* Helper methods for sub-classes, parsing
|
|
93
|
+
/**********************************************************
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
protected final boolean _parseBooleanPrimitive(JsonParser jp, DeserializationContext ctxt)
|
|
97
|
+
throws IOException, JsonProcessingException
|
|
98
|
+
{
|
|
99
|
+
JsonToken t = jp.getCurrentToken();
|
|
100
|
+
if (t == JsonToken.VALUE_TRUE) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
if (t == JsonToken.VALUE_FALSE) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
// [JACKSON-78]: should accept ints too, (0 == false, otherwise true)
|
|
110
|
+
if (t == JsonToken.VALUE_NUMBER_INT) {
|
|
111
|
+
// 11-Jan-2012, tatus: May be outside of int...
|
|
112
|
+
if (jp.getNumberType() == NumberType.INT) {
|
|
113
|
+
return (jp.getIntValue() != 0);
|
|
114
|
+
}
|
|
115
|
+
return _parseBooleanFromNumber(jp, ctxt);
|
|
116
|
+
}
|
|
117
|
+
// And finally, let's allow Strings to be converted too
|
|
118
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
119
|
+
String text = jp.getText().trim();
|
|
120
|
+
if ("true".equals(text)) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
if ("false".equals(text) || text.length() == 0) {
|
|
124
|
+
return Boolean.FALSE;
|
|
125
|
+
}
|
|
126
|
+
throw ctxt.weirdStringException(_valueClass, "only \"true\" or \"false\" recognized");
|
|
127
|
+
}
|
|
128
|
+
// Otherwise, no can do:
|
|
129
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
protected final Boolean _parseBoolean(JsonParser jp, DeserializationContext ctxt)
|
|
133
|
+
throws IOException, JsonProcessingException
|
|
134
|
+
{
|
|
135
|
+
JsonToken t = jp.getCurrentToken();
|
|
136
|
+
if (t == JsonToken.VALUE_TRUE) {
|
|
137
|
+
return Boolean.TRUE;
|
|
138
|
+
}
|
|
139
|
+
if (t == JsonToken.VALUE_FALSE) {
|
|
140
|
+
return Boolean.FALSE;
|
|
141
|
+
}
|
|
142
|
+
// [JACKSON-78]: should accept ints too, (0 == false, otherwise true)
|
|
143
|
+
if (t == JsonToken.VALUE_NUMBER_INT) {
|
|
144
|
+
// 11-Jan-2012, tatus: May be outside of int...
|
|
145
|
+
if (jp.getNumberType() == NumberType.INT) {
|
|
146
|
+
return (jp.getIntValue() == 0) ? Boolean.FALSE : Boolean.TRUE;
|
|
147
|
+
}
|
|
148
|
+
return Boolean.valueOf(_parseBooleanFromNumber(jp, ctxt));
|
|
149
|
+
}
|
|
150
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
151
|
+
return (Boolean) getNullValue();
|
|
152
|
+
}
|
|
153
|
+
// And finally, let's allow Strings to be converted too
|
|
154
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
155
|
+
String text = jp.getText().trim();
|
|
156
|
+
if ("true".equals(text)) {
|
|
157
|
+
return Boolean.TRUE;
|
|
158
|
+
}
|
|
159
|
+
if ("false".equals(text)) {
|
|
160
|
+
return Boolean.FALSE;
|
|
161
|
+
}
|
|
162
|
+
if (text.length() == 0) {
|
|
163
|
+
return (Boolean) getEmptyValue();
|
|
164
|
+
}
|
|
165
|
+
throw ctxt.weirdStringException(_valueClass, "only \"true\" or \"false\" recognized");
|
|
166
|
+
}
|
|
167
|
+
// Otherwise, no can do:
|
|
168
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
protected final boolean _parseBooleanFromNumber(JsonParser jp, DeserializationContext ctxt)
|
|
172
|
+
throws IOException, JsonProcessingException
|
|
173
|
+
{
|
|
174
|
+
if (jp.getNumberType() == NumberType.LONG) {
|
|
175
|
+
return (jp.getLongValue() == 0L) ? Boolean.FALSE : Boolean.TRUE;
|
|
176
|
+
}
|
|
177
|
+
// no really good logic; let's actually resort to textual comparison
|
|
178
|
+
String str = jp.getText();
|
|
179
|
+
if ("0.0".equals(str) || "0".equals(str)) {
|
|
180
|
+
return Boolean.FALSE;
|
|
181
|
+
}
|
|
182
|
+
return Boolean.TRUE;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
protected Byte _parseByte(JsonParser jp, DeserializationContext ctxt)
|
|
186
|
+
throws IOException, JsonProcessingException
|
|
187
|
+
{
|
|
188
|
+
JsonToken t = jp.getCurrentToken();
|
|
189
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
|
|
190
|
+
return jp.getByteValue();
|
|
191
|
+
}
|
|
192
|
+
if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
|
|
193
|
+
String text = jp.getText().trim();
|
|
194
|
+
int value;
|
|
195
|
+
try {
|
|
196
|
+
int len = text.length();
|
|
197
|
+
if (len == 0) {
|
|
198
|
+
return (Byte) getEmptyValue();
|
|
199
|
+
}
|
|
200
|
+
value = NumberInput.parseInt(text);
|
|
201
|
+
} catch (IllegalArgumentException iae) {
|
|
202
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid Byte value");
|
|
203
|
+
}
|
|
204
|
+
// So far so good: but does it fit?
|
|
205
|
+
if (value < Byte.MIN_VALUE || value > Byte.MAX_VALUE) {
|
|
206
|
+
throw ctxt.weirdStringException(_valueClass, "overflow, value can not be represented as 8-bit value");
|
|
207
|
+
}
|
|
208
|
+
return Byte.valueOf((byte) value);
|
|
209
|
+
}
|
|
210
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
211
|
+
return (Byte) getNullValue();
|
|
212
|
+
}
|
|
213
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
protected Short _parseShort(JsonParser jp, DeserializationContext ctxt)
|
|
217
|
+
throws IOException, JsonProcessingException
|
|
218
|
+
{
|
|
219
|
+
JsonToken t = jp.getCurrentToken();
|
|
220
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
|
|
221
|
+
return jp.getShortValue();
|
|
222
|
+
}
|
|
223
|
+
if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
|
|
224
|
+
String text = jp.getText().trim();
|
|
225
|
+
int value;
|
|
226
|
+
try {
|
|
227
|
+
int len = text.length();
|
|
228
|
+
if (len == 0) {
|
|
229
|
+
return (Short) getEmptyValue();
|
|
230
|
+
}
|
|
231
|
+
value = NumberInput.parseInt(text);
|
|
232
|
+
} catch (IllegalArgumentException iae) {
|
|
233
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid Short value");
|
|
234
|
+
}
|
|
235
|
+
// So far so good: but does it fit?
|
|
236
|
+
if (value < Short.MIN_VALUE || value > Short.MAX_VALUE) {
|
|
237
|
+
throw ctxt.weirdStringException(_valueClass, "overflow, value can not be represented as 16-bit value");
|
|
238
|
+
}
|
|
239
|
+
return Short.valueOf((short) value);
|
|
240
|
+
}
|
|
241
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
242
|
+
return (Short) getNullValue();
|
|
243
|
+
}
|
|
244
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
protected final short _parseShortPrimitive(JsonParser jp, DeserializationContext ctxt)
|
|
248
|
+
throws IOException, JsonProcessingException
|
|
249
|
+
{
|
|
250
|
+
int value = _parseIntPrimitive(jp, ctxt);
|
|
251
|
+
// So far so good: but does it fit?
|
|
252
|
+
if (value < Short.MIN_VALUE || value > Short.MAX_VALUE) {
|
|
253
|
+
throw ctxt.weirdStringException(_valueClass, "overflow, value can not be represented as 16-bit value");
|
|
254
|
+
}
|
|
255
|
+
return (short) value;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
protected final int _parseIntPrimitive(JsonParser jp, DeserializationContext ctxt)
|
|
259
|
+
throws IOException, JsonProcessingException
|
|
260
|
+
{
|
|
261
|
+
JsonToken t = jp.getCurrentToken();
|
|
262
|
+
|
|
263
|
+
// Int works as is, coercing fine as well
|
|
264
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
|
|
265
|
+
return jp.getIntValue();
|
|
266
|
+
}
|
|
267
|
+
if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
|
|
268
|
+
/* 31-Dec-2009, tatus: Should improve handling of overflow
|
|
269
|
+
* values... but this'll have to do for now
|
|
270
|
+
*/
|
|
271
|
+
String text = jp.getText().trim();
|
|
272
|
+
try {
|
|
273
|
+
int len = text.length();
|
|
274
|
+
if (len > 9) {
|
|
275
|
+
long l = Long.parseLong(text);
|
|
276
|
+
if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) {
|
|
277
|
+
throw ctxt.weirdStringException(_valueClass,
|
|
278
|
+
"Overflow: numeric value ("+text+") out of range of int ("+Integer.MIN_VALUE+" - "+Integer.MAX_VALUE+")");
|
|
279
|
+
}
|
|
280
|
+
return (int) l;
|
|
281
|
+
}
|
|
282
|
+
if (len == 0) {
|
|
283
|
+
return 0;
|
|
284
|
+
}
|
|
285
|
+
return NumberInput.parseInt(text);
|
|
286
|
+
} catch (IllegalArgumentException iae) {
|
|
287
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid int value");
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
291
|
+
return 0;
|
|
292
|
+
}
|
|
293
|
+
// Otherwise, no can do:
|
|
294
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
protected final Integer _parseInteger(JsonParser jp, DeserializationContext ctxt)
|
|
298
|
+
throws IOException, JsonProcessingException
|
|
299
|
+
{
|
|
300
|
+
JsonToken t = jp.getCurrentToken();
|
|
301
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
|
|
302
|
+
return Integer.valueOf(jp.getIntValue());
|
|
303
|
+
}
|
|
304
|
+
if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
|
|
305
|
+
String text = jp.getText().trim();
|
|
306
|
+
try {
|
|
307
|
+
int len = text.length();
|
|
308
|
+
if (len > 9) {
|
|
309
|
+
long l = Long.parseLong(text);
|
|
310
|
+
if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) {
|
|
311
|
+
throw ctxt.weirdStringException(_valueClass,
|
|
312
|
+
"Overflow: numeric value ("+text+") out of range of Integer ("+Integer.MIN_VALUE+" - "+Integer.MAX_VALUE+")");
|
|
313
|
+
}
|
|
314
|
+
return Integer.valueOf((int) l);
|
|
315
|
+
}
|
|
316
|
+
if (len == 0) {
|
|
317
|
+
return (Integer) getEmptyValue();
|
|
318
|
+
}
|
|
319
|
+
return Integer.valueOf(NumberInput.parseInt(text));
|
|
320
|
+
} catch (IllegalArgumentException iae) {
|
|
321
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid Integer value");
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
325
|
+
return (Integer) getNullValue();
|
|
326
|
+
}
|
|
327
|
+
// Otherwise, no can do:
|
|
328
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
protected final Long _parseLong(JsonParser jp, DeserializationContext ctxt)
|
|
332
|
+
throws IOException, JsonProcessingException
|
|
333
|
+
{
|
|
334
|
+
JsonToken t = jp.getCurrentToken();
|
|
335
|
+
|
|
336
|
+
// it should be ok to coerce (although may fail, too)
|
|
337
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) {
|
|
338
|
+
return jp.getLongValue();
|
|
339
|
+
}
|
|
340
|
+
// let's allow Strings to be converted too
|
|
341
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
342
|
+
// !!! 05-Jan-2009, tatu: Should we try to limit value space, JDK is too lenient?
|
|
343
|
+
String text = jp.getText().trim();
|
|
344
|
+
if (text.length() == 0) {
|
|
345
|
+
return (Long) getEmptyValue();
|
|
346
|
+
}
|
|
347
|
+
try {
|
|
348
|
+
return Long.valueOf(NumberInput.parseLong(text));
|
|
349
|
+
} catch (IllegalArgumentException iae) { }
|
|
350
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid Long value");
|
|
351
|
+
}
|
|
352
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
353
|
+
return (Long) getNullValue();
|
|
354
|
+
}
|
|
355
|
+
// Otherwise, no can do:
|
|
356
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
protected final long _parseLongPrimitive(JsonParser jp, DeserializationContext ctxt)
|
|
360
|
+
throws IOException, JsonProcessingException
|
|
361
|
+
{
|
|
362
|
+
JsonToken t = jp.getCurrentToken();
|
|
363
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) {
|
|
364
|
+
return jp.getLongValue();
|
|
365
|
+
}
|
|
366
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
367
|
+
String text = jp.getText().trim();
|
|
368
|
+
if (text.length() == 0) {
|
|
369
|
+
return 0L;
|
|
370
|
+
}
|
|
371
|
+
try {
|
|
372
|
+
return NumberInput.parseLong(text);
|
|
373
|
+
} catch (IllegalArgumentException iae) { }
|
|
374
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid long value");
|
|
375
|
+
}
|
|
376
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
377
|
+
return 0L;
|
|
378
|
+
}
|
|
379
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
protected final Float _parseFloat(JsonParser jp, DeserializationContext ctxt)
|
|
383
|
+
throws IOException, JsonProcessingException
|
|
384
|
+
{
|
|
385
|
+
// We accept couple of different types; obvious ones first:
|
|
386
|
+
JsonToken t = jp.getCurrentToken();
|
|
387
|
+
|
|
388
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
|
|
389
|
+
return jp.getFloatValue();
|
|
390
|
+
}
|
|
391
|
+
// And finally, let's allow Strings to be converted too
|
|
392
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
393
|
+
String text = jp.getText().trim();
|
|
394
|
+
if (text.length() == 0) {
|
|
395
|
+
return (Float) getEmptyValue();
|
|
396
|
+
}
|
|
397
|
+
switch (text.charAt(0)) {
|
|
398
|
+
case 'I':
|
|
399
|
+
if ("Infinity".equals(text) || "INF".equals(text)) {
|
|
400
|
+
return Float.POSITIVE_INFINITY;
|
|
401
|
+
}
|
|
402
|
+
break;
|
|
403
|
+
case 'N':
|
|
404
|
+
if ("NaN".equals(text)) {
|
|
405
|
+
return Float.NaN;
|
|
406
|
+
}
|
|
407
|
+
break;
|
|
408
|
+
case '-':
|
|
409
|
+
if ("-Infinity".equals(text) || "-INF".equals(text)) {
|
|
410
|
+
return Float.NEGATIVE_INFINITY;
|
|
411
|
+
}
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
414
|
+
try {
|
|
415
|
+
return Float.parseFloat(text);
|
|
416
|
+
} catch (IllegalArgumentException iae) { }
|
|
417
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid Float value");
|
|
418
|
+
}
|
|
419
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
420
|
+
return (Float) getNullValue();
|
|
421
|
+
}
|
|
422
|
+
// Otherwise, no can do:
|
|
423
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
protected final float _parseFloatPrimitive(JsonParser jp, DeserializationContext ctxt)
|
|
427
|
+
throws IOException, JsonProcessingException
|
|
428
|
+
{
|
|
429
|
+
JsonToken t = jp.getCurrentToken();
|
|
430
|
+
|
|
431
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
|
|
432
|
+
return jp.getFloatValue();
|
|
433
|
+
}
|
|
434
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
435
|
+
String text = jp.getText().trim();
|
|
436
|
+
if (text.length() == 0) {
|
|
437
|
+
return 0.0f;
|
|
438
|
+
}
|
|
439
|
+
switch (text.charAt(0)) {
|
|
440
|
+
case 'I':
|
|
441
|
+
if ("Infinity".equals(text) || "INF".equals(text)) {
|
|
442
|
+
return Float.POSITIVE_INFINITY;
|
|
443
|
+
}
|
|
444
|
+
break;
|
|
445
|
+
case 'N':
|
|
446
|
+
if ("NaN".equals(text)) {
|
|
447
|
+
return Float.NaN;
|
|
448
|
+
}
|
|
449
|
+
break;
|
|
450
|
+
case '-':
|
|
451
|
+
if ("-Infinity".equals(text) || "-INF".equals(text)) {
|
|
452
|
+
return Float.NEGATIVE_INFINITY;
|
|
453
|
+
}
|
|
454
|
+
break;
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
return Float.parseFloat(text);
|
|
458
|
+
} catch (IllegalArgumentException iae) { }
|
|
459
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid float value");
|
|
460
|
+
}
|
|
461
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
462
|
+
return 0.0f;
|
|
463
|
+
}
|
|
464
|
+
// Otherwise, no can do:
|
|
465
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
protected final Double _parseDouble(JsonParser jp, DeserializationContext ctxt)
|
|
469
|
+
throws IOException, JsonProcessingException
|
|
470
|
+
{
|
|
471
|
+
JsonToken t = jp.getCurrentToken();
|
|
472
|
+
|
|
473
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
|
|
474
|
+
return jp.getDoubleValue();
|
|
475
|
+
}
|
|
476
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
477
|
+
String text = jp.getText().trim();
|
|
478
|
+
if (text.length() == 0) {
|
|
479
|
+
return (Double) getEmptyValue();
|
|
480
|
+
}
|
|
481
|
+
switch (text.charAt(0)) {
|
|
482
|
+
case 'I':
|
|
483
|
+
if ("Infinity".equals(text) || "INF".equals(text)) {
|
|
484
|
+
return Double.POSITIVE_INFINITY;
|
|
485
|
+
}
|
|
486
|
+
break;
|
|
487
|
+
case 'N':
|
|
488
|
+
if ("NaN".equals(text)) {
|
|
489
|
+
return Double.NaN;
|
|
490
|
+
}
|
|
491
|
+
break;
|
|
492
|
+
case '-':
|
|
493
|
+
if ("-Infinity".equals(text) || "-INF".equals(text)) {
|
|
494
|
+
return Double.NEGATIVE_INFINITY;
|
|
495
|
+
}
|
|
496
|
+
break;
|
|
497
|
+
}
|
|
498
|
+
try {
|
|
499
|
+
return parseDouble(text);
|
|
500
|
+
} catch (IllegalArgumentException iae) { }
|
|
501
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid Double value");
|
|
502
|
+
}
|
|
503
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
504
|
+
return (Double) getNullValue();
|
|
505
|
+
}
|
|
506
|
+
// Otherwise, no can do:
|
|
507
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
protected final double _parseDoublePrimitive(JsonParser jp, DeserializationContext ctxt)
|
|
511
|
+
throws IOException, JsonProcessingException
|
|
512
|
+
{
|
|
513
|
+
// We accept couple of different types; obvious ones first:
|
|
514
|
+
JsonToken t = jp.getCurrentToken();
|
|
515
|
+
|
|
516
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
|
|
517
|
+
return jp.getDoubleValue();
|
|
518
|
+
}
|
|
519
|
+
// And finally, let's allow Strings to be converted too
|
|
520
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
521
|
+
String text = jp.getText().trim();
|
|
522
|
+
if (text.length() == 0) {
|
|
523
|
+
return 0.0;
|
|
524
|
+
}
|
|
525
|
+
switch (text.charAt(0)) {
|
|
526
|
+
case 'I':
|
|
527
|
+
if ("Infinity".equals(text) || "INF".equals(text)) {
|
|
528
|
+
return Double.POSITIVE_INFINITY;
|
|
529
|
+
}
|
|
530
|
+
break;
|
|
531
|
+
case 'N':
|
|
532
|
+
if ("NaN".equals(text)) {
|
|
533
|
+
return Double.NaN;
|
|
534
|
+
}
|
|
535
|
+
break;
|
|
536
|
+
case '-':
|
|
537
|
+
if ("-Infinity".equals(text) || "-INF".equals(text)) {
|
|
538
|
+
return Double.NEGATIVE_INFINITY;
|
|
539
|
+
}
|
|
540
|
+
break;
|
|
541
|
+
}
|
|
542
|
+
try {
|
|
543
|
+
return parseDouble(text);
|
|
544
|
+
} catch (IllegalArgumentException iae) { }
|
|
545
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid double value");
|
|
546
|
+
}
|
|
547
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
548
|
+
return 0.0;
|
|
549
|
+
}
|
|
550
|
+
// Otherwise, no can do:
|
|
551
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
protected java.util.Date _parseDate(JsonParser jp, DeserializationContext ctxt)
|
|
556
|
+
throws IOException, JsonProcessingException
|
|
557
|
+
{
|
|
558
|
+
JsonToken t = jp.getCurrentToken();
|
|
559
|
+
if (t == JsonToken.VALUE_NUMBER_INT) {
|
|
560
|
+
return new java.util.Date(jp.getLongValue());
|
|
561
|
+
}
|
|
562
|
+
if (t == JsonToken.VALUE_NULL) {
|
|
563
|
+
return (java.util.Date) getNullValue();
|
|
564
|
+
}
|
|
565
|
+
if (t == JsonToken.VALUE_STRING) {
|
|
566
|
+
try {
|
|
567
|
+
/* As per [JACKSON-203], take empty Strings to mean
|
|
568
|
+
* null
|
|
569
|
+
*/
|
|
570
|
+
String str = jp.getText().trim();
|
|
571
|
+
if (str.length() == 0) {
|
|
572
|
+
return (Date) getEmptyValue();
|
|
573
|
+
}
|
|
574
|
+
return ctxt.parseDate(str);
|
|
575
|
+
} catch (IllegalArgumentException iae) {
|
|
576
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid representation (error: "+iae.getMessage()+")");
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Helper method for encapsulating calls to low-level double value parsing; single place
|
|
584
|
+
* just because we need a work-around that must be applied to all calls.
|
|
585
|
+
*<p>
|
|
586
|
+
* Note: copied from <code>sh.calaba.org.codehaus.jackson.io.NumberUtil</code> (to avoid dependency to
|
|
587
|
+
* version 1.8; except for String constants, but that gets compiled in bytecode here)
|
|
588
|
+
*/
|
|
589
|
+
protected final static double parseDouble(String numStr) throws NumberFormatException
|
|
590
|
+
{
|
|
591
|
+
// [JACKSON-486]: avoid some nasty float representations... but should it be MIN_NORMAL or MIN_VALUE?
|
|
592
|
+
if (NumberInput.NASTY_SMALL_DOUBLE.equals(numStr)) {
|
|
593
|
+
return 0x1.0p-1022; //Double.MIN_NORMAL; Hardcoded since MIN_NORMAL is not available until SDK level 10
|
|
594
|
+
}
|
|
595
|
+
return Double.parseDouble(numStr);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/*
|
|
599
|
+
/****************************************************
|
|
600
|
+
/* Helper methods for sub-classes, resolving dependencies
|
|
601
|
+
/****************************************************
|
|
602
|
+
*/
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* Helper method used to locate deserializers for properties the
|
|
606
|
+
* type this deserializer handles contains (usually for properties of
|
|
607
|
+
* bean types)
|
|
608
|
+
*
|
|
609
|
+
* @param config Active deserialization configuration
|
|
610
|
+
* @param provider Deserializer provider to use for actually finding deserializer(s)
|
|
611
|
+
* @param type Type of property to deserialize
|
|
612
|
+
* @param property Actual property object (field, method, constuctor parameter) used
|
|
613
|
+
* for passing deserialized values; provided so deserializer can be contextualized if necessary (since 1.7)
|
|
614
|
+
*/
|
|
615
|
+
protected JsonDeserializer<Object> findDeserializer(DeserializationConfig config, DeserializerProvider provider,
|
|
616
|
+
JavaType type, BeanProperty property)
|
|
617
|
+
throws JsonMappingException
|
|
618
|
+
{
|
|
619
|
+
JsonDeserializer<Object> deser = provider.findValueDeserializer(config, type, property);
|
|
620
|
+
return deser;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/*
|
|
624
|
+
/**********************************************************
|
|
625
|
+
/* Helper methods for sub-classes, problem reporting
|
|
626
|
+
/**********************************************************
|
|
627
|
+
*/
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
* Method called to deal with a property that did not map to a known
|
|
631
|
+
* Bean property. Method can deal with the problem as it sees fit (ignore,
|
|
632
|
+
* throw exception); but if it does return, it has to skip the matching
|
|
633
|
+
* Json content parser has.
|
|
634
|
+
*<p>
|
|
635
|
+
* NOTE: method signature was changed in version 1.5; explicit JsonParser
|
|
636
|
+
* <b>must</b> be passed since it may be something other than what
|
|
637
|
+
* context has. Prior versions did not include the first parameter.
|
|
638
|
+
*
|
|
639
|
+
* @param jp Parser that points to value of the unknown property
|
|
640
|
+
* @param ctxt Context for deserialization; allows access to the parser,
|
|
641
|
+
* error reporting functionality
|
|
642
|
+
* @param instanceOrClass Instance that is being populated by this
|
|
643
|
+
* deserializer, or if not known, Class that would be instantiated.
|
|
644
|
+
* If null, will assume type is what {@link #getValueClass} returns.
|
|
645
|
+
* @param propName Name of the property that can not be mapped
|
|
646
|
+
*/
|
|
647
|
+
protected void handleUnknownProperty(JsonParser jp, DeserializationContext ctxt, Object instanceOrClass, String propName)
|
|
648
|
+
throws IOException, JsonProcessingException
|
|
649
|
+
{
|
|
650
|
+
if (instanceOrClass == null) {
|
|
651
|
+
instanceOrClass = getValueClass();
|
|
652
|
+
}
|
|
653
|
+
// Maybe we have configured handler(s) to take care of it?
|
|
654
|
+
if (ctxt.handleUnknownProperty(jp, this, instanceOrClass, propName)) {
|
|
655
|
+
return;
|
|
656
|
+
}
|
|
657
|
+
// Nope, not handled. Potentially that's a problem...
|
|
658
|
+
reportUnknownProperty(ctxt, instanceOrClass, propName);
|
|
659
|
+
|
|
660
|
+
/* If we get this far, need to skip now; we point to first token of
|
|
661
|
+
* value (START_xxx for structured, or the value token for others)
|
|
662
|
+
*/
|
|
663
|
+
jp.skipChildren();
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
protected void reportUnknownProperty(DeserializationContext ctxt,
|
|
667
|
+
Object instanceOrClass, String fieldName)
|
|
668
|
+
throws IOException, JsonProcessingException
|
|
669
|
+
{
|
|
670
|
+
// throw exception if that's what we are expected to do
|
|
671
|
+
if (ctxt.isEnabled(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES)) {
|
|
672
|
+
throw ctxt.unknownFieldException(instanceOrClass, fieldName);
|
|
673
|
+
}
|
|
674
|
+
// ... or if not, just ignore
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
/*
|
|
679
|
+
/**********************************************************
|
|
680
|
+
/* Then one intermediate base class for things that have
|
|
681
|
+
/* both primitive and wrapper types
|
|
682
|
+
/**********************************************************
|
|
683
|
+
*/
|
|
684
|
+
|
|
685
|
+
protected abstract static class PrimitiveOrWrapperDeserializer<T>
|
|
686
|
+
extends StdScalarDeserializer<T>
|
|
687
|
+
{
|
|
688
|
+
final T _nullValue;
|
|
689
|
+
|
|
690
|
+
protected PrimitiveOrWrapperDeserializer(Class<T> vc, T nvl)
|
|
691
|
+
{
|
|
692
|
+
super(vc);
|
|
693
|
+
_nullValue = nvl;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
@Override
|
|
697
|
+
public final T getNullValue() {
|
|
698
|
+
return _nullValue;
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/*
|
|
703
|
+
/**********************************************************
|
|
704
|
+
/* Then primitive/wrapper types
|
|
705
|
+
/**********************************************************
|
|
706
|
+
*/
|
|
707
|
+
|
|
708
|
+
@JacksonStdImpl
|
|
709
|
+
public final static class BooleanDeserializer
|
|
710
|
+
extends PrimitiveOrWrapperDeserializer<Boolean>
|
|
711
|
+
{
|
|
712
|
+
public BooleanDeserializer(Class<Boolean> cls, Boolean nvl)
|
|
713
|
+
{
|
|
714
|
+
super(cls, nvl);
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
@Override
|
|
718
|
+
public Boolean deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
719
|
+
throws IOException, JsonProcessingException
|
|
720
|
+
{
|
|
721
|
+
return _parseBoolean(jp, ctxt);
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
// 1.6: since we can never have type info ("natural type"; String, Boolean, Integer, Double):
|
|
725
|
+
// (is it an error to even call this version?)
|
|
726
|
+
@Override
|
|
727
|
+
public Boolean deserializeWithType(JsonParser jp, DeserializationContext ctxt,
|
|
728
|
+
TypeDeserializer typeDeserializer)
|
|
729
|
+
throws IOException, JsonProcessingException
|
|
730
|
+
{
|
|
731
|
+
return _parseBoolean(jp, ctxt);
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
@JacksonStdImpl
|
|
736
|
+
public final static class ByteDeserializer
|
|
737
|
+
extends PrimitiveOrWrapperDeserializer<Byte>
|
|
738
|
+
{
|
|
739
|
+
public ByteDeserializer(Class<Byte> cls, Byte nvl)
|
|
740
|
+
{
|
|
741
|
+
super(cls, nvl);
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
@Override
|
|
745
|
+
public Byte deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
746
|
+
throws IOException, JsonProcessingException
|
|
747
|
+
{
|
|
748
|
+
return _parseByte(jp, ctxt);
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
@JacksonStdImpl
|
|
753
|
+
public final static class ShortDeserializer
|
|
754
|
+
extends PrimitiveOrWrapperDeserializer<Short>
|
|
755
|
+
{
|
|
756
|
+
public ShortDeserializer(Class<Short> cls, Short nvl)
|
|
757
|
+
{
|
|
758
|
+
super(cls, nvl);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
@Override
|
|
762
|
+
public Short deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
763
|
+
throws IOException, JsonProcessingException
|
|
764
|
+
{
|
|
765
|
+
return _parseShort(jp, ctxt);
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
@JacksonStdImpl
|
|
770
|
+
public final static class CharacterDeserializer
|
|
771
|
+
extends PrimitiveOrWrapperDeserializer<Character>
|
|
772
|
+
{
|
|
773
|
+
public CharacterDeserializer(Class<Character> cls, Character nvl)
|
|
774
|
+
{
|
|
775
|
+
super(cls, nvl);
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
@Override
|
|
779
|
+
public Character deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
780
|
+
throws IOException, JsonProcessingException
|
|
781
|
+
{
|
|
782
|
+
JsonToken t = jp.getCurrentToken();
|
|
783
|
+
int value;
|
|
784
|
+
|
|
785
|
+
if (t == JsonToken.VALUE_NUMBER_INT) { // ok iff ascii value
|
|
786
|
+
value = jp.getIntValue();
|
|
787
|
+
if (value >= 0 && value <= 0xFFFF) {
|
|
788
|
+
return Character.valueOf((char) value);
|
|
789
|
+
}
|
|
790
|
+
} else if (t == JsonToken.VALUE_STRING) { // this is the usual type
|
|
791
|
+
// But does it have to be exactly one char?
|
|
792
|
+
String text = jp.getText();
|
|
793
|
+
if (text.length() == 1) {
|
|
794
|
+
return Character.valueOf(text.charAt(0));
|
|
795
|
+
}
|
|
796
|
+
// actually, empty should become null?
|
|
797
|
+
if (text.length() == 0) {
|
|
798
|
+
return (Character) getEmptyValue();
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
@JacksonStdImpl
|
|
806
|
+
public final static class IntegerDeserializer
|
|
807
|
+
extends PrimitiveOrWrapperDeserializer<Integer>
|
|
808
|
+
{
|
|
809
|
+
public IntegerDeserializer(Class<Integer> cls, Integer nvl)
|
|
810
|
+
{
|
|
811
|
+
super(cls, nvl);
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
@Override
|
|
815
|
+
public Integer deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
816
|
+
throws IOException, JsonProcessingException
|
|
817
|
+
{
|
|
818
|
+
return _parseInteger(jp, ctxt);
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
// 1.6: since we can never have type info ("natural type"; String, Boolean, Integer, Double):
|
|
822
|
+
// (is it an error to even call this version?)
|
|
823
|
+
@Override
|
|
824
|
+
public Integer deserializeWithType(JsonParser jp, DeserializationContext ctxt,
|
|
825
|
+
TypeDeserializer typeDeserializer)
|
|
826
|
+
throws IOException, JsonProcessingException
|
|
827
|
+
{
|
|
828
|
+
return _parseInteger(jp, ctxt);
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
@JacksonStdImpl
|
|
833
|
+
public final static class LongDeserializer
|
|
834
|
+
extends PrimitiveOrWrapperDeserializer<Long>
|
|
835
|
+
{
|
|
836
|
+
public LongDeserializer(Class<Long> cls, Long nvl)
|
|
837
|
+
{
|
|
838
|
+
super(cls, nvl);
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
@Override
|
|
842
|
+
public Long deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
843
|
+
throws IOException, JsonProcessingException
|
|
844
|
+
{
|
|
845
|
+
return _parseLong(jp, ctxt);
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
@JacksonStdImpl
|
|
850
|
+
public final static class FloatDeserializer
|
|
851
|
+
extends PrimitiveOrWrapperDeserializer<Float>
|
|
852
|
+
{
|
|
853
|
+
public FloatDeserializer(Class<Float> cls, Float nvl)
|
|
854
|
+
{
|
|
855
|
+
super(cls, nvl);
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
@Override
|
|
859
|
+
public Float deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
860
|
+
throws IOException, JsonProcessingException
|
|
861
|
+
{
|
|
862
|
+
/* 22-Jan-2009, tatu: Bounds/range checks would be tricky
|
|
863
|
+
* here, so let's not bother even trying...
|
|
864
|
+
*/
|
|
865
|
+
return _parseFloat(jp, ctxt);
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
@JacksonStdImpl
|
|
870
|
+
public final static class DoubleDeserializer
|
|
871
|
+
extends PrimitiveOrWrapperDeserializer<Double>
|
|
872
|
+
{
|
|
873
|
+
public DoubleDeserializer(Class<Double> cls, Double nvl)
|
|
874
|
+
{
|
|
875
|
+
super(cls, nvl);
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
@Override
|
|
879
|
+
public Double deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
880
|
+
throws IOException, JsonProcessingException
|
|
881
|
+
{
|
|
882
|
+
return _parseDouble(jp, ctxt);
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
// 1.6: since we can never have type info ("natural type"; String, Boolean, Integer, Double):
|
|
886
|
+
// (is it an error to even call this version?)
|
|
887
|
+
@Override
|
|
888
|
+
public Double deserializeWithType(JsonParser jp, DeserializationContext ctxt,
|
|
889
|
+
TypeDeserializer typeDeserializer)
|
|
890
|
+
throws IOException, JsonProcessingException
|
|
891
|
+
{
|
|
892
|
+
return _parseDouble(jp, ctxt);
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
/**
|
|
897
|
+
* For type <code>Number.class</code>, we can just rely on type
|
|
898
|
+
* mappings that plain {@link JsonParser#getNumberValue} returns.
|
|
899
|
+
*<p>
|
|
900
|
+
* Since 1.5, there is one additional complication: some numeric
|
|
901
|
+
* types (specifically, int/Integer and double/Double) are "non-typed";
|
|
902
|
+
* meaning that they will NEVER be output with type information.
|
|
903
|
+
* But other numeric types may need such type information.
|
|
904
|
+
* This is why {@link #deserializeWithType} must be overridden.
|
|
905
|
+
*/
|
|
906
|
+
@JacksonStdImpl
|
|
907
|
+
public final static class NumberDeserializer
|
|
908
|
+
extends StdScalarDeserializer<Number>
|
|
909
|
+
{
|
|
910
|
+
public NumberDeserializer() { super(Number.class); }
|
|
911
|
+
|
|
912
|
+
@Override
|
|
913
|
+
public Number deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
914
|
+
throws IOException, JsonProcessingException
|
|
915
|
+
{
|
|
916
|
+
JsonToken t = jp.getCurrentToken();
|
|
917
|
+
if (t == JsonToken.VALUE_NUMBER_INT) {
|
|
918
|
+
if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
|
|
919
|
+
return jp.getBigIntegerValue();
|
|
920
|
+
}
|
|
921
|
+
return jp.getNumberValue();
|
|
922
|
+
} else if (t == JsonToken.VALUE_NUMBER_FLOAT) {
|
|
923
|
+
/* [JACKSON-72]: need to allow overriding the behavior
|
|
924
|
+
* regarding which type to use
|
|
925
|
+
*/
|
|
926
|
+
if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
|
|
927
|
+
return jp.getDecimalValue();
|
|
928
|
+
}
|
|
929
|
+
return Double.valueOf(jp.getDoubleValue());
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
/* Textual values are more difficult... not parsing itself, but figuring
|
|
933
|
+
* out 'minimal' type to use
|
|
934
|
+
*/
|
|
935
|
+
if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
|
|
936
|
+
String text = jp.getText().trim();
|
|
937
|
+
try {
|
|
938
|
+
if (text.indexOf('.') >= 0) { // floating point
|
|
939
|
+
// as per [JACKSON-72]:
|
|
940
|
+
if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
|
|
941
|
+
return new BigDecimal(text);
|
|
942
|
+
}
|
|
943
|
+
return new Double(text);
|
|
944
|
+
}
|
|
945
|
+
// as per [JACKSON-100]:
|
|
946
|
+
if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
|
|
947
|
+
return new BigInteger(text);
|
|
948
|
+
}
|
|
949
|
+
long value = Long.parseLong(text);
|
|
950
|
+
if (value <= Integer.MAX_VALUE && value >= Integer.MIN_VALUE) {
|
|
951
|
+
return Integer.valueOf((int) value);
|
|
952
|
+
}
|
|
953
|
+
return Long.valueOf(value);
|
|
954
|
+
} catch (IllegalArgumentException iae) {
|
|
955
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid number");
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
// Otherwise, no can do:
|
|
959
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
/**
|
|
963
|
+
* As mentioned in class Javadoc, there is additional complexity in
|
|
964
|
+
* handling potentially mixed type information here. Because of this,
|
|
965
|
+
* we must actually check for "raw" integers and doubles first, before
|
|
966
|
+
* calling type deserializer.
|
|
967
|
+
*/
|
|
968
|
+
@Override
|
|
969
|
+
public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt,
|
|
970
|
+
TypeDeserializer typeDeserializer)
|
|
971
|
+
throws IOException, JsonProcessingException
|
|
972
|
+
{
|
|
973
|
+
switch (jp.getCurrentToken()) {
|
|
974
|
+
case VALUE_NUMBER_INT:
|
|
975
|
+
case VALUE_NUMBER_FLOAT:
|
|
976
|
+
case VALUE_STRING:
|
|
977
|
+
// can not point to type information: hence must be non-typed (int/double)
|
|
978
|
+
return deserialize(jp, ctxt);
|
|
979
|
+
}
|
|
980
|
+
return typeDeserializer.deserializeTypedFromScalar(jp, ctxt);
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
/*
|
|
985
|
+
/**********************************************************
|
|
986
|
+
/* And then bit more complicated (but non-structured) number
|
|
987
|
+
/* types
|
|
988
|
+
/**********************************************************
|
|
989
|
+
*/
|
|
990
|
+
|
|
991
|
+
@JacksonStdImpl
|
|
992
|
+
public static class BigDecimalDeserializer
|
|
993
|
+
extends StdScalarDeserializer<BigDecimal>
|
|
994
|
+
{
|
|
995
|
+
public BigDecimalDeserializer() { super(BigDecimal.class); }
|
|
996
|
+
|
|
997
|
+
@Override
|
|
998
|
+
public BigDecimal deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
999
|
+
throws IOException, JsonProcessingException
|
|
1000
|
+
{
|
|
1001
|
+
JsonToken t = jp.getCurrentToken();
|
|
1002
|
+
if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) {
|
|
1003
|
+
return jp.getDecimalValue();
|
|
1004
|
+
}
|
|
1005
|
+
// String is ok too, can easily convert
|
|
1006
|
+
if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
|
|
1007
|
+
String text = jp.getText().trim();
|
|
1008
|
+
if (text.length() == 0) {
|
|
1009
|
+
return null;
|
|
1010
|
+
}
|
|
1011
|
+
try {
|
|
1012
|
+
return new BigDecimal(text);
|
|
1013
|
+
} catch (IllegalArgumentException iae) {
|
|
1014
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid representation");
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
// Otherwise, no can do:
|
|
1018
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
/**
|
|
1023
|
+
* This is bit trickier to implement efficiently, while avoiding
|
|
1024
|
+
* overflow problems.
|
|
1025
|
+
*/
|
|
1026
|
+
@JacksonStdImpl
|
|
1027
|
+
public static class BigIntegerDeserializer
|
|
1028
|
+
extends StdScalarDeserializer<BigInteger>
|
|
1029
|
+
{
|
|
1030
|
+
public BigIntegerDeserializer() { super(BigInteger.class); }
|
|
1031
|
+
|
|
1032
|
+
@Override
|
|
1033
|
+
public BigInteger deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
1034
|
+
throws IOException, JsonProcessingException
|
|
1035
|
+
{
|
|
1036
|
+
JsonToken t = jp.getCurrentToken();
|
|
1037
|
+
String text;
|
|
1038
|
+
|
|
1039
|
+
if (t == JsonToken.VALUE_NUMBER_INT) {
|
|
1040
|
+
switch (jp.getNumberType()) {
|
|
1041
|
+
case INT:
|
|
1042
|
+
case LONG:
|
|
1043
|
+
return BigInteger.valueOf(jp.getLongValue());
|
|
1044
|
+
}
|
|
1045
|
+
} else if (t == JsonToken.VALUE_NUMBER_FLOAT) {
|
|
1046
|
+
/* Whether to fail if there's non-integer part?
|
|
1047
|
+
* Could do by calling BigDecimal.toBigIntegerExact()
|
|
1048
|
+
*/
|
|
1049
|
+
return jp.getDecimalValue().toBigInteger();
|
|
1050
|
+
} else if (t != JsonToken.VALUE_STRING) { // let's do implicit re-parse
|
|
1051
|
+
// String is ok too, can easily convert; otherwise, no can do:
|
|
1052
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
1053
|
+
}
|
|
1054
|
+
text = jp.getText().trim();
|
|
1055
|
+
if (text.length() == 0) {
|
|
1056
|
+
return null;
|
|
1057
|
+
}
|
|
1058
|
+
try {
|
|
1059
|
+
return new BigInteger(text);
|
|
1060
|
+
} catch (IllegalArgumentException iae) {
|
|
1061
|
+
throw ctxt.weirdStringException(_valueClass, "not a valid representation");
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
/*
|
|
1067
|
+
/****************************************************
|
|
1068
|
+
/* Then trickier things: Date/Calendar types
|
|
1069
|
+
/****************************************************
|
|
1070
|
+
*/
|
|
1071
|
+
|
|
1072
|
+
/**
|
|
1073
|
+
* Compared to plain old {@link java.util.Date}, SQL version is easier
|
|
1074
|
+
* to deal with: mostly because it is more limited.
|
|
1075
|
+
*/
|
|
1076
|
+
public static class SqlDateDeserializer
|
|
1077
|
+
extends StdScalarDeserializer<java.sql.Date>
|
|
1078
|
+
{
|
|
1079
|
+
public SqlDateDeserializer() { super(java.sql.Date.class); }
|
|
1080
|
+
|
|
1081
|
+
@Override
|
|
1082
|
+
public java.sql.Date deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
1083
|
+
throws IOException, JsonProcessingException
|
|
1084
|
+
{
|
|
1085
|
+
Date d = _parseDate(jp, ctxt);
|
|
1086
|
+
return (d == null) ? null : new java.sql.Date(d.getTime());
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
/*
|
|
1091
|
+
/****************************************************
|
|
1092
|
+
/* And other oddities
|
|
1093
|
+
/****************************************************
|
|
1094
|
+
*/
|
|
1095
|
+
|
|
1096
|
+
public static class StackTraceElementDeserializer
|
|
1097
|
+
extends StdScalarDeserializer<StackTraceElement>
|
|
1098
|
+
{
|
|
1099
|
+
public StackTraceElementDeserializer() { super(StackTraceElement.class); }
|
|
1100
|
+
|
|
1101
|
+
@Override
|
|
1102
|
+
public StackTraceElement deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
1103
|
+
throws IOException, JsonProcessingException
|
|
1104
|
+
{
|
|
1105
|
+
JsonToken t = jp.getCurrentToken();
|
|
1106
|
+
// Must get an Object
|
|
1107
|
+
if (t == JsonToken.START_OBJECT) {
|
|
1108
|
+
String className = "", methodName = "", fileName = "";
|
|
1109
|
+
int lineNumber = -1;
|
|
1110
|
+
|
|
1111
|
+
while ((t = jp.nextValue()) != JsonToken.END_OBJECT) {
|
|
1112
|
+
String propName = jp.getCurrentName();
|
|
1113
|
+
if ("className".equals(propName)) {
|
|
1114
|
+
className = jp.getText();
|
|
1115
|
+
} else if ("fileName".equals(propName)) {
|
|
1116
|
+
fileName = jp.getText();
|
|
1117
|
+
} else if ("lineNumber".equals(propName)) {
|
|
1118
|
+
if (t.isNumeric()) {
|
|
1119
|
+
lineNumber = jp.getIntValue();
|
|
1120
|
+
} else {
|
|
1121
|
+
throw JsonMappingException.from(jp, "Non-numeric token ("+t+") for property 'lineNumber'");
|
|
1122
|
+
}
|
|
1123
|
+
} else if ("methodName".equals(propName)) {
|
|
1124
|
+
methodName = jp.getText();
|
|
1125
|
+
} else if ("nativeMethod".equals(propName)) {
|
|
1126
|
+
// no setter, not passed via constructor: ignore
|
|
1127
|
+
} else {
|
|
1128
|
+
handleUnknownProperty(jp, ctxt, _valueClass, propName);
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
return new StackTraceElement(className, methodName, fileName, lineNumber);
|
|
1132
|
+
}
|
|
1133
|
+
throw ctxt.mappingException(_valueClass, t);
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
}
|