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,35 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.annotate;
|
|
2
|
+
|
|
3
|
+
import java.lang.annotation.ElementType;
|
|
4
|
+
import java.lang.annotation.Retention;
|
|
5
|
+
import java.lang.annotation.RetentionPolicy;
|
|
6
|
+
import java.lang.annotation.Target;
|
|
7
|
+
|
|
8
|
+
import sh.calaba.org.codehaus.jackson.annotate.JacksonAnnotation;
|
|
9
|
+
import sh.calaba.org.codehaus.jackson.map.jsontype.TypeIdResolver;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Annotation that can be used to plug a custom type identifier handler
|
|
13
|
+
* ({@link TypeIdResolver})
|
|
14
|
+
* to be used by
|
|
15
|
+
* {@link sh.calaba.org.codehaus.jackson.map.TypeSerializer}s
|
|
16
|
+
* and {@link sh.calaba.org.codehaus.jackson.map.TypeDeserializer}s
|
|
17
|
+
* for converting between java types and type id included in JSON content.
|
|
18
|
+
* In simplest cases this can be a simple class with static mapping between
|
|
19
|
+
* type names and matching classes.
|
|
20
|
+
*
|
|
21
|
+
* @author tatu
|
|
22
|
+
* @since 1.5
|
|
23
|
+
*/
|
|
24
|
+
@Target({ElementType.TYPE})
|
|
25
|
+
@Retention(RetentionPolicy.RUNTIME)
|
|
26
|
+
@JacksonAnnotation
|
|
27
|
+
public @interface JsonTypeIdResolver
|
|
28
|
+
{
|
|
29
|
+
/**
|
|
30
|
+
* Defines implementation class of {@link TypeIdResolver} to use for
|
|
31
|
+
* converting between external type id (type name) and actual
|
|
32
|
+
* type of object.
|
|
33
|
+
*/
|
|
34
|
+
public Class<? extends TypeIdResolver> value();
|
|
35
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.annotate;
|
|
2
|
+
|
|
3
|
+
import java.lang.annotation.*;
|
|
4
|
+
|
|
5
|
+
import sh.calaba.org.codehaus.jackson.annotate.JacksonAnnotation;
|
|
6
|
+
import sh.calaba.org.codehaus.jackson.map.jsontype.TypeResolverBuilder;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Annotation that can be used to explicitly define custom resolver
|
|
10
|
+
* used for handling serialization and deserialization of type information,
|
|
11
|
+
* needed for handling of polymorphic types (or sometimes just for linking
|
|
12
|
+
* abstract types to concrete types)
|
|
13
|
+
*
|
|
14
|
+
* @since 1.5
|
|
15
|
+
*/
|
|
16
|
+
@Target({ElementType.TYPE})
|
|
17
|
+
@Retention(RetentionPolicy.RUNTIME)
|
|
18
|
+
@JacksonAnnotation
|
|
19
|
+
public @interface JsonTypeResolver
|
|
20
|
+
{
|
|
21
|
+
/**
|
|
22
|
+
* Defines implementation class of {@link TypeResolverBuilder} which is used to construct
|
|
23
|
+
* actual {@link sh.calaba.org.codehaus.jackson.map.TypeDeserializer} and {@link sh.calaba.org.codehaus.jackson.map.TypeDeserializer}
|
|
24
|
+
* instances that handle reading and writing addition type information needed to support polymorphic
|
|
25
|
+
* deserialization.
|
|
26
|
+
*/
|
|
27
|
+
public Class<? extends TypeResolverBuilder<?>> value();
|
|
28
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.annotate;
|
|
2
|
+
|
|
3
|
+
import java.lang.annotation.ElementType;
|
|
4
|
+
import java.lang.annotation.Retention;
|
|
5
|
+
import java.lang.annotation.RetentionPolicy;
|
|
6
|
+
import java.lang.annotation.Target;
|
|
7
|
+
|
|
8
|
+
import sh.calaba.org.codehaus.jackson.annotate.JacksonAnnotation;
|
|
9
|
+
import sh.calaba.org.codehaus.jackson.map.deser.ValueInstantiator;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Annotation that can be used to indicate a {@link ValueInstantiator} to use
|
|
13
|
+
* for creating instances of specified type.
|
|
14
|
+
*
|
|
15
|
+
* @since 1.9
|
|
16
|
+
*/
|
|
17
|
+
@Target(ElementType.TYPE)
|
|
18
|
+
@Retention(RetentionPolicy.RUNTIME)
|
|
19
|
+
@JacksonAnnotation
|
|
20
|
+
public @interface JsonValueInstantiator
|
|
21
|
+
{
|
|
22
|
+
/**
|
|
23
|
+
* @return {@link ValueInstantiator} to use for annotated type
|
|
24
|
+
*/
|
|
25
|
+
public Class<? extends ValueInstantiator> value();
|
|
26
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.annotate;
|
|
2
|
+
|
|
3
|
+
import java.lang.annotation.ElementType;
|
|
4
|
+
import java.lang.annotation.Retention;
|
|
5
|
+
import java.lang.annotation.RetentionPolicy;
|
|
6
|
+
import java.lang.annotation.Target;
|
|
7
|
+
|
|
8
|
+
import sh.calaba.org.codehaus.jackson.annotate.JacksonAnnotation;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Annotation used for indicating view(s) that the property
|
|
12
|
+
* that is defined by method or field annotated is part of.
|
|
13
|
+
*<p>
|
|
14
|
+
* An example annotation would be:
|
|
15
|
+
*<pre>
|
|
16
|
+
* \@JsonView(BasicView.class)
|
|
17
|
+
*</pre>
|
|
18
|
+
* which would specify that property annotated would be included
|
|
19
|
+
* when processing (serializing, deserializing) View identified
|
|
20
|
+
* by <code>BasicView.class</code> (or its sub-class).
|
|
21
|
+
* If multiple View class identifiers are included, property will
|
|
22
|
+
* be part of all of them.
|
|
23
|
+
*
|
|
24
|
+
* @since 1.4
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
@Target({ElementType.METHOD, ElementType.FIELD})
|
|
28
|
+
@Retention(RetentionPolicy.RUNTIME)
|
|
29
|
+
@JacksonAnnotation
|
|
30
|
+
public @interface JsonView {
|
|
31
|
+
/**
|
|
32
|
+
* View or views that annotated element is part of. Views are identified
|
|
33
|
+
* by classes, and use expected class inheritance relationship: child
|
|
34
|
+
* views contain all elements parent views have, for example.
|
|
35
|
+
*/
|
|
36
|
+
public Class<?>[] value() default { };
|
|
37
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.annotate;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Marker class used with annotations to indicate "no class". This is
|
|
5
|
+
* a silly but necessary work-around -- annotations can not take nulls
|
|
6
|
+
* as either default or explicit values. Hence for class values we must
|
|
7
|
+
* explicitly use a bogus placeholder to denote equivalent of
|
|
8
|
+
* "no class" (for which 'null' is usually the natural choice).
|
|
9
|
+
*<p>
|
|
10
|
+
* Note before version 1.4, this marker class was under
|
|
11
|
+
* "sh.calaba.org.codehaus.jackson.annotate". However, since it is only used
|
|
12
|
+
* by annotations in "sh.calaba.org.codehaus.jackson.map.annotate" (and not externally
|
|
13
|
+
* exposed), it was moved to that package as of version 1.5.
|
|
14
|
+
*/
|
|
15
|
+
public final class NoClass
|
|
16
|
+
{
|
|
17
|
+
private NoClass() { }
|
|
18
|
+
}
|
|
19
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.deser;
|
|
2
|
+
|
|
3
|
+
import java.io.IOException;
|
|
4
|
+
|
|
5
|
+
import sh.calaba.org.codehaus.jackson.JsonParser;
|
|
6
|
+
import sh.calaba.org.codehaus.jackson.JsonProcessingException;
|
|
7
|
+
import sh.calaba.org.codehaus.jackson.map.*;
|
|
8
|
+
import sh.calaba.org.codehaus.jackson.type.JavaType;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Deserializer only used as placeholder for abstract types during polymorphic
|
|
12
|
+
* type handling deserialization. If so, there is no real deserializer associated
|
|
13
|
+
* with nominal type, just {@link TypeDeserializer}; and any calls that do not
|
|
14
|
+
* pass such resolver will result in an error.
|
|
15
|
+
*
|
|
16
|
+
* @author tatu
|
|
17
|
+
*
|
|
18
|
+
* @since 1.6
|
|
19
|
+
*/
|
|
20
|
+
public class AbstractDeserializer
|
|
21
|
+
extends JsonDeserializer<Object>
|
|
22
|
+
{
|
|
23
|
+
protected final JavaType _baseType;
|
|
24
|
+
|
|
25
|
+
// support for "native" types, which require special care:
|
|
26
|
+
|
|
27
|
+
protected final boolean _acceptString;
|
|
28
|
+
protected final boolean _acceptBoolean;
|
|
29
|
+
protected final boolean _acceptInt;
|
|
30
|
+
protected final boolean _acceptDouble;
|
|
31
|
+
|
|
32
|
+
public AbstractDeserializer(JavaType bt)
|
|
33
|
+
{
|
|
34
|
+
_baseType = bt;
|
|
35
|
+
Class<?> cls = bt.getRawClass();
|
|
36
|
+
_acceptString = cls.isAssignableFrom(String.class);
|
|
37
|
+
_acceptBoolean = (cls == Boolean.TYPE) || cls.isAssignableFrom(Boolean.class);
|
|
38
|
+
_acceptInt = (cls == Integer.TYPE) || cls.isAssignableFrom(Integer.class);
|
|
39
|
+
_acceptDouble = (cls == Double.TYPE) || cls.isAssignableFrom(Double.class);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@Override
|
|
43
|
+
public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt,
|
|
44
|
+
TypeDeserializer typeDeserializer)
|
|
45
|
+
throws IOException, JsonProcessingException
|
|
46
|
+
{
|
|
47
|
+
// First: support "natural" values (which are always serialized without type info!)
|
|
48
|
+
Object result = _deserializeIfNatural(jp, ctxt);
|
|
49
|
+
if (result != null) {
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
return typeDeserializer.deserializeTypedFromObject(jp, ctxt);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@Override
|
|
56
|
+
public Object deserialize(JsonParser jp, DeserializationContext ctxt)
|
|
57
|
+
throws IOException, JsonProcessingException
|
|
58
|
+
{
|
|
59
|
+
// This method should never be called...
|
|
60
|
+
throw ctxt.instantiationException(_baseType.getRawClass(), "abstract types can only be instantiated with additional type information");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
protected Object _deserializeIfNatural(JsonParser jp, DeserializationContext ctxt)
|
|
64
|
+
throws IOException, JsonProcessingException
|
|
65
|
+
{
|
|
66
|
+
/* As per [JACKSON-417], there is a chance we might be "natular" types
|
|
67
|
+
* (String, Boolean, Integer, Double), which do not include any type information...
|
|
68
|
+
* Care must be taken to only return this if return type matches, however.
|
|
69
|
+
* Finally, we may have to consider possibility of custom handlers for
|
|
70
|
+
* these values: but for now this should work ok.
|
|
71
|
+
*/
|
|
72
|
+
switch (jp.getCurrentToken()) {
|
|
73
|
+
case VALUE_STRING:
|
|
74
|
+
if (_acceptString) {
|
|
75
|
+
return jp.getText();
|
|
76
|
+
}
|
|
77
|
+
break;
|
|
78
|
+
case VALUE_NUMBER_INT:
|
|
79
|
+
if (_acceptInt) {
|
|
80
|
+
return jp.getIntValue();
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
|
|
84
|
+
case VALUE_NUMBER_FLOAT:
|
|
85
|
+
if (_acceptDouble) {
|
|
86
|
+
return Double.valueOf(jp.getDoubleValue());
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
case VALUE_TRUE:
|
|
90
|
+
if (_acceptBoolean) {
|
|
91
|
+
return Boolean.TRUE;
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
case VALUE_FALSE:
|
|
95
|
+
if (_acceptBoolean) {
|
|
96
|
+
return Boolean.FALSE;
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.deser;
|
|
2
|
+
|
|
3
|
+
import sh.calaba.org.codehaus.jackson.map.*;
|
|
4
|
+
import sh.calaba.org.codehaus.jackson.map.type.ArrayType;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Since 1.9, use {@link sh.calaba.org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer} instead.
|
|
8
|
+
*/
|
|
9
|
+
@Deprecated
|
|
10
|
+
public class ArrayDeserializer
|
|
11
|
+
extends sh.calaba.org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer
|
|
12
|
+
{
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated
|
|
15
|
+
*/
|
|
16
|
+
@Deprecated
|
|
17
|
+
public ArrayDeserializer(ArrayType arrayType, JsonDeserializer<Object> elemDeser)
|
|
18
|
+
{
|
|
19
|
+
this(arrayType, elemDeser, null);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public ArrayDeserializer(ArrayType arrayType, JsonDeserializer<Object> elemDeser,
|
|
23
|
+
TypeDeserializer elemTypeDeser)
|
|
24
|
+
{
|
|
25
|
+
super(arrayType, elemDeser, elemTypeDeser);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.deser;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Since 1.9, use {@link sh.calaba.org.codehaus.jackson.map.deser.std.PrimitiveArrayDeserializers} instead.
|
|
5
|
+
*/
|
|
6
|
+
@Deprecated
|
|
7
|
+
public class ArrayDeserializers
|
|
8
|
+
extends sh.calaba.org.codehaus.jackson.map.deser.std.PrimitiveArrayDeserializers
|
|
9
|
+
{
|
|
10
|
+
private ArrayDeserializers() { super(); }
|
|
11
|
+
}
|
|
@@ -0,0 +1,894 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.deser;
|
|
2
|
+
|
|
3
|
+
import java.util.*;
|
|
4
|
+
import java.util.concurrent.*;
|
|
5
|
+
import java.util.concurrent.atomic.AtomicReference;
|
|
6
|
+
|
|
7
|
+
import sh.calaba.org.codehaus.jackson.JsonNode;
|
|
8
|
+
import sh.calaba.org.codehaus.jackson.map.*;
|
|
9
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.AtomicReferenceDeserializer;
|
|
10
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.CollectionDeserializer;
|
|
11
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.EnumDeserializer;
|
|
12
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.EnumMapDeserializer;
|
|
13
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.EnumSetDeserializer;
|
|
14
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.JsonNodeDeserializer;
|
|
15
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.MapDeserializer;
|
|
16
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer;
|
|
17
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.PrimitiveArrayDeserializers;
|
|
18
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.StdKeyDeserializers;
|
|
19
|
+
import sh.calaba.org.codehaus.jackson.map.deser.std.StringCollectionDeserializer;
|
|
20
|
+
import sh.calaba.org.codehaus.jackson.map.ext.OptionalHandlerFactory;
|
|
21
|
+
import sh.calaba.org.codehaus.jackson.map.introspect.*;
|
|
22
|
+
import sh.calaba.org.codehaus.jackson.map.jsontype.NamedType;
|
|
23
|
+
import sh.calaba.org.codehaus.jackson.map.jsontype.TypeResolverBuilder;
|
|
24
|
+
import sh.calaba.org.codehaus.jackson.map.type.*;
|
|
25
|
+
import sh.calaba.org.codehaus.jackson.map.util.EnumResolver;
|
|
26
|
+
import sh.calaba.org.codehaus.jackson.type.JavaType;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Abstract factory base class that can provide deserializers for standard
|
|
30
|
+
* JDK classes, including collection classes and simple heuristics for
|
|
31
|
+
* "upcasting" commmon collection interface types
|
|
32
|
+
* (such as {@link java.util.Collection}).
|
|
33
|
+
*<p>
|
|
34
|
+
* Since all simple deserializers are eagerly instantiated, and there is
|
|
35
|
+
* no additional introspection or customizability of these types,
|
|
36
|
+
* this factory is stateless.
|
|
37
|
+
*/
|
|
38
|
+
public abstract class BasicDeserializerFactory
|
|
39
|
+
extends DeserializerFactory
|
|
40
|
+
{
|
|
41
|
+
/**
|
|
42
|
+
* We will pre-create serializers for common non-structured
|
|
43
|
+
* (that is things other than Collection, Map or array)
|
|
44
|
+
* types. These need not go through factory.
|
|
45
|
+
*/
|
|
46
|
+
final static HashMap<ClassKey, JsonDeserializer<Object>> _simpleDeserializers = StdDeserializers.constructAll();
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Set of available key deserializers is currently limited
|
|
50
|
+
* to standard types; and all known instances are storing
|
|
51
|
+
* in this map.
|
|
52
|
+
*/
|
|
53
|
+
final static HashMap<JavaType, KeyDeserializer> _keyDeserializers = StdKeyDeserializers.constructAll();
|
|
54
|
+
|
|
55
|
+
/* We do some defaulting for abstract Map classes and
|
|
56
|
+
* interfaces, to avoid having to use exact types or annotations in
|
|
57
|
+
* cases where the most common concrete Maps will do.
|
|
58
|
+
*/
|
|
59
|
+
@SuppressWarnings("rawtypes")
|
|
60
|
+
final static HashMap<String, Class<? extends Map>> _mapFallbacks =
|
|
61
|
+
new HashMap<String, Class<? extends Map>>();
|
|
62
|
+
static {
|
|
63
|
+
_mapFallbacks.put(Map.class.getName(), LinkedHashMap.class);
|
|
64
|
+
_mapFallbacks.put(ConcurrentMap.class.getName(), ConcurrentHashMap.class);
|
|
65
|
+
_mapFallbacks.put(SortedMap.class.getName(), TreeMap.class);
|
|
66
|
+
|
|
67
|
+
/* 11-Jan-2009, tatu: Let's see if we can still add support for
|
|
68
|
+
* JDK 1.6 interfaces, even if we run on 1.5. Just need to be
|
|
69
|
+
* more careful with typos, since compiler won't notice any
|
|
70
|
+
* problems...
|
|
71
|
+
*/
|
|
72
|
+
_mapFallbacks.put("java.util.NavigableMap", TreeMap.class);
|
|
73
|
+
try {
|
|
74
|
+
Class<?> key = Class.forName("java.util.ConcurrentNavigableMap");
|
|
75
|
+
Class<?> value = Class.forName("java.util.ConcurrentSkipListMap");
|
|
76
|
+
@SuppressWarnings("unchecked")
|
|
77
|
+
Class<? extends Map<?,?>> mapValue = (Class<? extends Map<?,?>>) value;
|
|
78
|
+
_mapFallbacks.put(key.getName(), mapValue);
|
|
79
|
+
} catch (ClassNotFoundException cnfe) { // occurs on 1.5
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* We do some defaulting for abstract Collection classes and
|
|
84
|
+
* interfaces, to avoid having to use exact types or annotations in
|
|
85
|
+
* cases where the most common concrete Collection will do.
|
|
86
|
+
*/
|
|
87
|
+
@SuppressWarnings("rawtypes")
|
|
88
|
+
final static HashMap<String, Class<? extends Collection>> _collectionFallbacks =
|
|
89
|
+
new HashMap<String, Class<? extends Collection>>();
|
|
90
|
+
static {
|
|
91
|
+
_collectionFallbacks.put(Collection.class.getName(), ArrayList.class);
|
|
92
|
+
_collectionFallbacks.put(List.class.getName(), ArrayList.class);
|
|
93
|
+
_collectionFallbacks.put(Set.class.getName(), HashSet.class);
|
|
94
|
+
_collectionFallbacks.put(SortedSet.class.getName(), TreeSet.class);
|
|
95
|
+
_collectionFallbacks.put(Queue.class.getName(), LinkedList.class);
|
|
96
|
+
|
|
97
|
+
/* 11-Jan-2009, tatu: Let's see if we can still add support for
|
|
98
|
+
* JDK 1.6 interfaces, even if we run on 1.5. Just need to be
|
|
99
|
+
* more careful with typos, since compiler won't notice any
|
|
100
|
+
* problems...
|
|
101
|
+
*/
|
|
102
|
+
_collectionFallbacks.put("java.util.Deque", LinkedList.class);
|
|
103
|
+
_collectionFallbacks.put("java.util.NavigableSet", TreeSet.class);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* And finally, we have special array deserializers for primitive
|
|
108
|
+
* array types
|
|
109
|
+
*/
|
|
110
|
+
protected final static HashMap<JavaType,JsonDeserializer<Object>> _arrayDeserializers
|
|
111
|
+
= PrimitiveArrayDeserializers.getAll();
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* To support external/optional deserializers, we'll use this helper class
|
|
115
|
+
* (as per [JACKSON-386])
|
|
116
|
+
*/
|
|
117
|
+
protected OptionalHandlerFactory optionalHandlers = OptionalHandlerFactory.instance;
|
|
118
|
+
|
|
119
|
+
/*
|
|
120
|
+
/**********************************************************
|
|
121
|
+
/* Life cycle
|
|
122
|
+
/**********************************************************
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
protected BasicDeserializerFactory() { }
|
|
126
|
+
|
|
127
|
+
// can't be implemented quite here
|
|
128
|
+
@Override
|
|
129
|
+
public abstract DeserializerFactory withConfig(DeserializerFactory.Config config);
|
|
130
|
+
|
|
131
|
+
/*
|
|
132
|
+
/**********************************************************
|
|
133
|
+
/* Methods for sub-classes to override to provide
|
|
134
|
+
/* custom deserializers (since 1.7)
|
|
135
|
+
/**********************************************************
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
protected abstract JsonDeserializer<?> _findCustomArrayDeserializer(ArrayType type, DeserializationConfig config,
|
|
139
|
+
DeserializerProvider p, BeanProperty property,
|
|
140
|
+
TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
|
|
141
|
+
throws JsonMappingException;
|
|
142
|
+
|
|
143
|
+
protected abstract JsonDeserializer<?> _findCustomCollectionDeserializer(
|
|
144
|
+
CollectionType type, DeserializationConfig config,
|
|
145
|
+
DeserializerProvider p, BasicBeanDescription beanDesc, BeanProperty property,
|
|
146
|
+
TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
|
|
147
|
+
throws JsonMappingException;
|
|
148
|
+
|
|
149
|
+
protected abstract JsonDeserializer<?> _findCustomCollectionLikeDeserializer(
|
|
150
|
+
CollectionLikeType type, DeserializationConfig config,
|
|
151
|
+
DeserializerProvider p, BasicBeanDescription beanDesc, BeanProperty property,
|
|
152
|
+
TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
|
|
153
|
+
throws JsonMappingException;
|
|
154
|
+
|
|
155
|
+
protected abstract JsonDeserializer<?> _findCustomEnumDeserializer(Class<?> type,
|
|
156
|
+
DeserializationConfig config, BasicBeanDescription beanDesc, BeanProperty property)
|
|
157
|
+
throws JsonMappingException;
|
|
158
|
+
|
|
159
|
+
protected abstract JsonDeserializer<?> _findCustomMapDeserializer(MapType type,
|
|
160
|
+
DeserializationConfig config,
|
|
161
|
+
DeserializerProvider p, BasicBeanDescription beanDesc, BeanProperty property,
|
|
162
|
+
KeyDeserializer keyDeser,
|
|
163
|
+
TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
|
|
164
|
+
throws JsonMappingException;
|
|
165
|
+
|
|
166
|
+
protected abstract JsonDeserializer<?> _findCustomMapLikeDeserializer(MapLikeType type,
|
|
167
|
+
DeserializationConfig config,
|
|
168
|
+
DeserializerProvider p, BasicBeanDescription beanDesc, BeanProperty property,
|
|
169
|
+
KeyDeserializer keyDeser,
|
|
170
|
+
TypeDeserializer elementTypeDeser, JsonDeserializer<?> elementDeser)
|
|
171
|
+
throws JsonMappingException;
|
|
172
|
+
|
|
173
|
+
protected abstract JsonDeserializer<?> _findCustomTreeNodeDeserializer(Class<? extends JsonNode> type,
|
|
174
|
+
DeserializationConfig config, BeanProperty property)
|
|
175
|
+
throws JsonMappingException;
|
|
176
|
+
|
|
177
|
+
/*
|
|
178
|
+
/**********************************************************
|
|
179
|
+
/* JsonDeserializerFactory impl (partial)
|
|
180
|
+
/**********************************************************
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
@Override
|
|
184
|
+
public abstract ValueInstantiator findValueInstantiator(DeserializationConfig config,
|
|
185
|
+
BasicBeanDescription beanDesc)
|
|
186
|
+
throws JsonMappingException;
|
|
187
|
+
|
|
188
|
+
@Override
|
|
189
|
+
public abstract JavaType mapAbstractType(DeserializationConfig config, JavaType type)
|
|
190
|
+
throws JsonMappingException;
|
|
191
|
+
|
|
192
|
+
@Override
|
|
193
|
+
public JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config, DeserializerProvider p,
|
|
194
|
+
ArrayType type, BeanProperty property)
|
|
195
|
+
throws JsonMappingException
|
|
196
|
+
{
|
|
197
|
+
JavaType elemType = type.getContentType();
|
|
198
|
+
|
|
199
|
+
// Very first thing: is deserializer hard-coded for elements?
|
|
200
|
+
JsonDeserializer<Object> contentDeser = elemType.getValueHandler();
|
|
201
|
+
if (contentDeser == null) {
|
|
202
|
+
// Maybe special array type, such as "primitive" arrays (int[] etc)
|
|
203
|
+
JsonDeserializer<?> deser = _arrayDeserializers.get(elemType);
|
|
204
|
+
if (deser != null) {
|
|
205
|
+
/* 23-Nov-2010, tatu: Although not commonly needed, ability to override
|
|
206
|
+
* deserializers for all types (including primitive arrays) is useful
|
|
207
|
+
* so let's allow this
|
|
208
|
+
*/
|
|
209
|
+
JsonDeserializer<?> custom = _findCustomArrayDeserializer(type, config, p, property, null, null);
|
|
210
|
+
if (custom != null) {
|
|
211
|
+
return custom;
|
|
212
|
+
}
|
|
213
|
+
return deser;
|
|
214
|
+
}
|
|
215
|
+
// If not, generic one:
|
|
216
|
+
if (elemType.isPrimitive()) { // sanity check
|
|
217
|
+
throw new IllegalArgumentException("Internal error: primitive type ("+type+") passed, no array deserializer found");
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Then optional type info (1.5): if type has been resolved, we may already know type deserializer:
|
|
221
|
+
TypeDeserializer elemTypeDeser = elemType.getTypeHandler();
|
|
222
|
+
// but if not, may still be possible to find:
|
|
223
|
+
if (elemTypeDeser == null) {
|
|
224
|
+
elemTypeDeser = findTypeDeserializer(config, elemType, property);
|
|
225
|
+
}
|
|
226
|
+
// 23-Nov-2010, tatu: Custom array deserializer?
|
|
227
|
+
JsonDeserializer<?> custom = _findCustomArrayDeserializer(type, config, p, property, elemTypeDeser, contentDeser);
|
|
228
|
+
if (custom != null) {
|
|
229
|
+
return custom;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (contentDeser == null) {
|
|
233
|
+
// 'null' -> arrays have no referring fields
|
|
234
|
+
contentDeser = p.findValueDeserializer(config, elemType, property);
|
|
235
|
+
}
|
|
236
|
+
return new ObjectArrayDeserializer(type, contentDeser, elemTypeDeser);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
@Override
|
|
240
|
+
public JsonDeserializer<?> createCollectionDeserializer(DeserializationConfig config, DeserializerProvider p,
|
|
241
|
+
CollectionType type, BeanProperty property)
|
|
242
|
+
throws JsonMappingException
|
|
243
|
+
{
|
|
244
|
+
// First: global defaulting:
|
|
245
|
+
type = (CollectionType) mapAbstractType(config, type);
|
|
246
|
+
|
|
247
|
+
Class<?> collectionClass = type.getRawClass();
|
|
248
|
+
BasicBeanDescription beanDesc = config.introspectForCreation(type);
|
|
249
|
+
// Explicit deserializer to use? (@JsonDeserialize.using)
|
|
250
|
+
JsonDeserializer<Object> deser = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
|
|
251
|
+
if (deser != null) {
|
|
252
|
+
return deser;
|
|
253
|
+
}
|
|
254
|
+
// If not, any type modifiers? (@JsonDeserialize.as)
|
|
255
|
+
type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), type, null);
|
|
256
|
+
|
|
257
|
+
JavaType contentType = type.getContentType();
|
|
258
|
+
// Very first thing: is deserializer hard-coded for elements?
|
|
259
|
+
JsonDeserializer<Object> contentDeser = contentType.getValueHandler();
|
|
260
|
+
|
|
261
|
+
// Then optional type info (1.5): if type has been resolved, we may already know type deserializer:
|
|
262
|
+
TypeDeserializer contentTypeDeser = contentType.getTypeHandler();
|
|
263
|
+
// but if not, may still be possible to find:
|
|
264
|
+
if (contentTypeDeser == null) {
|
|
265
|
+
contentTypeDeser = findTypeDeserializer(config, contentType, property);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// 23-Nov-2010, tatu: Custom deserializer?
|
|
269
|
+
JsonDeserializer<?> custom = _findCustomCollectionDeserializer(type, config, p, beanDesc, property,
|
|
270
|
+
contentTypeDeser, contentDeser);
|
|
271
|
+
if (custom != null) {
|
|
272
|
+
return custom;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
if (contentDeser == null) { // not defined by annotation
|
|
276
|
+
// One special type: EnumSet:
|
|
277
|
+
if (EnumSet.class.isAssignableFrom(collectionClass)) {
|
|
278
|
+
return new EnumSetDeserializer(contentType.getRawClass(),
|
|
279
|
+
createEnumDeserializer(config, p, contentType, property));
|
|
280
|
+
}
|
|
281
|
+
// But otherwise we can just use a generic value deserializer:
|
|
282
|
+
// 'null' -> collections have no referring fields
|
|
283
|
+
contentDeser = p.findValueDeserializer(config, contentType, property);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/* One twist: if we are being asked to instantiate an interface or
|
|
287
|
+
* abstract Collection, we need to either find something that implements
|
|
288
|
+
* the thing, or give up.
|
|
289
|
+
*
|
|
290
|
+
* Note that we do NOT try to guess based on secondary interfaces
|
|
291
|
+
* here; that would probably not work correctly since casts would
|
|
292
|
+
* fail later on (as the primary type is not the interface we'd
|
|
293
|
+
* be implementing)
|
|
294
|
+
*/
|
|
295
|
+
if (type.isInterface() || type.isAbstract()) {
|
|
296
|
+
@SuppressWarnings({ "rawtypes" })
|
|
297
|
+
Class<? extends Collection> fallback = _collectionFallbacks.get(collectionClass.getName());
|
|
298
|
+
if (fallback == null) {
|
|
299
|
+
throw new IllegalArgumentException("Can not find a deserializer for non-concrete Collection type "+type);
|
|
300
|
+
}
|
|
301
|
+
collectionClass = fallback;
|
|
302
|
+
type = (CollectionType) config.constructSpecializedType(type, collectionClass);
|
|
303
|
+
// But if so, also need to re-check creators...
|
|
304
|
+
beanDesc = config.introspectForCreation(type);
|
|
305
|
+
}
|
|
306
|
+
ValueInstantiator inst = findValueInstantiator(config, beanDesc);
|
|
307
|
+
// 13-Dec-2010, tatu: Can use more optimal deserializer if content type is String, so:
|
|
308
|
+
if (contentType.getRawClass() == String.class) {
|
|
309
|
+
// no value type deserializer because Strings are one of natural/native types:
|
|
310
|
+
return new StringCollectionDeserializer(type, contentDeser, inst);
|
|
311
|
+
}
|
|
312
|
+
return new CollectionDeserializer(type, contentDeser, contentTypeDeser, inst);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Copied almost verbatim from "createCollectionDeserializer" -- should try to share more code
|
|
316
|
+
@Override
|
|
317
|
+
public JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationConfig config,
|
|
318
|
+
DeserializerProvider p, CollectionLikeType type, BeanProperty property)
|
|
319
|
+
throws JsonMappingException
|
|
320
|
+
{
|
|
321
|
+
// First: global defaulting:
|
|
322
|
+
type = (CollectionLikeType) mapAbstractType(config, type);
|
|
323
|
+
|
|
324
|
+
Class<?> collectionClass = type.getRawClass();
|
|
325
|
+
BasicBeanDescription beanDesc = config.introspectClassAnnotations(collectionClass);
|
|
326
|
+
// Explicit deserializer to use? (@JsonDeserialize.using)
|
|
327
|
+
JsonDeserializer<Object> deser = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
|
|
328
|
+
if (deser != null) {
|
|
329
|
+
return deser;
|
|
330
|
+
}
|
|
331
|
+
// If not, any type modifiers? (@JsonDeserialize.as)
|
|
332
|
+
type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), type, null);
|
|
333
|
+
|
|
334
|
+
JavaType contentType = type.getContentType();
|
|
335
|
+
// Very first thing: is deserializer hard-coded for elements?
|
|
336
|
+
JsonDeserializer<Object> contentDeser = contentType.getValueHandler();
|
|
337
|
+
|
|
338
|
+
// Then optional type info (1.5): if type has been resolved, we may already know type deserializer:
|
|
339
|
+
TypeDeserializer contentTypeDeser = contentType.getTypeHandler();
|
|
340
|
+
// but if not, may still be possible to find:
|
|
341
|
+
if (contentTypeDeser == null) {
|
|
342
|
+
contentTypeDeser = findTypeDeserializer(config, contentType, property);
|
|
343
|
+
}
|
|
344
|
+
return _findCustomCollectionLikeDeserializer(type, config, p, beanDesc, property,
|
|
345
|
+
contentTypeDeser, contentDeser);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
@Override
|
|
349
|
+
public JsonDeserializer<?> createMapDeserializer(DeserializationConfig config, DeserializerProvider p,
|
|
350
|
+
MapType type, BeanProperty property)
|
|
351
|
+
throws JsonMappingException
|
|
352
|
+
{
|
|
353
|
+
// First: global defaulting:
|
|
354
|
+
type = (MapType) mapAbstractType(config, type);
|
|
355
|
+
|
|
356
|
+
BasicBeanDescription beanDesc = config.introspectForCreation(type);
|
|
357
|
+
// Explicit deserializer to use? (@JsonDeserialize.using)
|
|
358
|
+
JsonDeserializer<Object> deser = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
|
|
359
|
+
if (deser != null) {
|
|
360
|
+
return deser;
|
|
361
|
+
}
|
|
362
|
+
// If not, any type modifiers? (@JsonDeserialize.as)
|
|
363
|
+
type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), type, null);
|
|
364
|
+
JavaType keyType = type.getKeyType();
|
|
365
|
+
JavaType contentType = type.getContentType();
|
|
366
|
+
|
|
367
|
+
// First: is there annotation-specified deserializer for values?
|
|
368
|
+
@SuppressWarnings("unchecked")
|
|
369
|
+
JsonDeserializer<Object> contentDeser = (JsonDeserializer<Object>) contentType.getValueHandler();
|
|
370
|
+
|
|
371
|
+
// Ok: need a key deserializer (null indicates 'default' here)
|
|
372
|
+
KeyDeserializer keyDes = (KeyDeserializer) keyType.getValueHandler();
|
|
373
|
+
if (keyDes == null) {
|
|
374
|
+
keyDes = p.findKeyDeserializer(config, keyType, property);
|
|
375
|
+
}
|
|
376
|
+
// Then optional type info (1.5); either attached to type, or resolve separately:
|
|
377
|
+
TypeDeserializer contentTypeDeser = contentType.getTypeHandler();
|
|
378
|
+
// but if not, may still be possible to find:
|
|
379
|
+
if (contentTypeDeser == null) {
|
|
380
|
+
contentTypeDeser = findTypeDeserializer(config, contentType, property);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// 23-Nov-2010, tatu: Custom deserializer?
|
|
384
|
+
JsonDeserializer<?> custom = _findCustomMapDeserializer(type, config, p, beanDesc, property,
|
|
385
|
+
keyDes, contentTypeDeser, contentDeser);
|
|
386
|
+
|
|
387
|
+
if (custom != null) {
|
|
388
|
+
return custom;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
if (contentDeser == null) { // nope...
|
|
392
|
+
// 'null' -> maps have no referring fields
|
|
393
|
+
contentDeser = p.findValueDeserializer(config, contentType, property);
|
|
394
|
+
}
|
|
395
|
+
/* Value handling is identical for all,
|
|
396
|
+
* but EnumMap requires special handling for keys
|
|
397
|
+
*/
|
|
398
|
+
Class<?> mapClass = type.getRawClass();
|
|
399
|
+
if (EnumMap.class.isAssignableFrom(mapClass)) {
|
|
400
|
+
Class<?> kt = keyType.getRawClass();
|
|
401
|
+
if (kt == null || !kt.isEnum()) {
|
|
402
|
+
throw new IllegalArgumentException("Can not construct EnumMap; generic (key) type not available");
|
|
403
|
+
}
|
|
404
|
+
return new EnumMapDeserializer(keyType.getRawClass(),
|
|
405
|
+
createEnumDeserializer(config, p, keyType, property),
|
|
406
|
+
contentDeser);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
// Otherwise, generic handler works ok.
|
|
410
|
+
|
|
411
|
+
/* But there is one more twist: if we are being asked to instantiate
|
|
412
|
+
* an interface or abstract Map, we need to either find something
|
|
413
|
+
* that implements the thing, or give up.
|
|
414
|
+
*
|
|
415
|
+
* Note that we do NOT try to guess based on secondary interfaces
|
|
416
|
+
* here; that would probably not work correctly since casts would
|
|
417
|
+
* fail later on (as the primary type is not the interface we'd
|
|
418
|
+
* be implementing)
|
|
419
|
+
*/
|
|
420
|
+
if (type.isInterface() || type.isAbstract()) {
|
|
421
|
+
@SuppressWarnings("rawtypes")
|
|
422
|
+
Class<? extends Map> fallback = _mapFallbacks.get(mapClass.getName());
|
|
423
|
+
if (fallback == null) {
|
|
424
|
+
throw new IllegalArgumentException("Can not find a deserializer for non-concrete Map type "+type);
|
|
425
|
+
}
|
|
426
|
+
mapClass = fallback;
|
|
427
|
+
type = (MapType) config.constructSpecializedType(type, mapClass);
|
|
428
|
+
// But if so, also need to re-check creators...
|
|
429
|
+
beanDesc = config.introspectForCreation(type);
|
|
430
|
+
}
|
|
431
|
+
ValueInstantiator inst = findValueInstantiator(config, beanDesc);
|
|
432
|
+
MapDeserializer md = new MapDeserializer(type, inst, keyDes, contentDeser, contentTypeDeser);
|
|
433
|
+
md.setIgnorableProperties(config.getAnnotationIntrospector().findPropertiesToIgnore(beanDesc.getClassInfo()));
|
|
434
|
+
return md;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// Copied almost verbatim from "createMapDeserializer" -- should try to share more code
|
|
438
|
+
@Override
|
|
439
|
+
public JsonDeserializer<?> createMapLikeDeserializer(DeserializationConfig config,
|
|
440
|
+
DeserializerProvider p, MapLikeType type, BeanProperty property)
|
|
441
|
+
throws JsonMappingException
|
|
442
|
+
{
|
|
443
|
+
// First: global defaulting:
|
|
444
|
+
type = (MapLikeType) mapAbstractType(config, type);
|
|
445
|
+
BasicBeanDescription beanDesc = config.introspectForCreation(type);
|
|
446
|
+
// Explicit deserializer to use? (@JsonDeserialize.using)
|
|
447
|
+
JsonDeserializer<Object> deser = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
|
|
448
|
+
if (deser != null) {
|
|
449
|
+
return deser;
|
|
450
|
+
}
|
|
451
|
+
// If not, any type modifiers? (@JsonDeserialize.as)
|
|
452
|
+
type = modifyTypeByAnnotation(config, beanDesc.getClassInfo(), type, null);
|
|
453
|
+
JavaType keyType = type.getKeyType();
|
|
454
|
+
JavaType contentType = type.getContentType();
|
|
455
|
+
|
|
456
|
+
// First: is there annotation-specified deserializer for values?
|
|
457
|
+
@SuppressWarnings("unchecked")
|
|
458
|
+
JsonDeserializer<Object> contentDeser = (JsonDeserializer<Object>) contentType.getValueHandler();
|
|
459
|
+
|
|
460
|
+
// Ok: need a key deserializer (null indicates 'default' here)
|
|
461
|
+
KeyDeserializer keyDes = (KeyDeserializer) keyType.getValueHandler();
|
|
462
|
+
if (keyDes == null) {
|
|
463
|
+
keyDes = p.findKeyDeserializer(config, keyType, property);
|
|
464
|
+
}
|
|
465
|
+
// Then optional type info (1.5); either attached to type, or resolve separately:
|
|
466
|
+
TypeDeserializer contentTypeDeser = contentType.getTypeHandler();
|
|
467
|
+
// but if not, may still be possible to find:
|
|
468
|
+
if (contentTypeDeser == null) {
|
|
469
|
+
contentTypeDeser = findTypeDeserializer(config, contentType, property);
|
|
470
|
+
}
|
|
471
|
+
return _findCustomMapLikeDeserializer(type, config, p, beanDesc, property,
|
|
472
|
+
keyDes, contentTypeDeser, contentDeser);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Factory method for constructing serializers of {@link Enum} types.
|
|
477
|
+
*/
|
|
478
|
+
@Override
|
|
479
|
+
public JsonDeserializer<?> createEnumDeserializer(DeserializationConfig config, DeserializerProvider p,
|
|
480
|
+
JavaType type, BeanProperty property)
|
|
481
|
+
throws JsonMappingException
|
|
482
|
+
{
|
|
483
|
+
/* 18-Feb-2009, tatu: Must first check if we have a class annotation
|
|
484
|
+
* that should override default deserializer
|
|
485
|
+
*/
|
|
486
|
+
BasicBeanDescription beanDesc = config.introspectForCreation(type);
|
|
487
|
+
JsonDeserializer<?> des = findDeserializerFromAnnotation(config, beanDesc.getClassInfo(), property);
|
|
488
|
+
if (des != null) {
|
|
489
|
+
return des;
|
|
490
|
+
}
|
|
491
|
+
Class<?> enumClass = type.getRawClass();
|
|
492
|
+
// 23-Nov-2010, tatu: Custom deserializer?
|
|
493
|
+
JsonDeserializer<?> custom = _findCustomEnumDeserializer(enumClass, config, beanDesc, property);
|
|
494
|
+
if (custom != null) {
|
|
495
|
+
return custom;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
// [JACKSON-193] May have @JsonCreator for static factory method:
|
|
499
|
+
for (AnnotatedMethod factory : beanDesc.getFactoryMethods()) {
|
|
500
|
+
if (config.getAnnotationIntrospector().hasCreatorAnnotation(factory)) {
|
|
501
|
+
int argCount = factory.getParameterCount();
|
|
502
|
+
if (argCount == 1) {
|
|
503
|
+
Class<?> returnType = factory.getRawType();
|
|
504
|
+
// usually should be class, but may be just plain Enum<?> (for Enum.valueOf()?)
|
|
505
|
+
if (returnType.isAssignableFrom(enumClass)) {
|
|
506
|
+
return EnumDeserializer.deserializerForCreator(config, enumClass, factory);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
throw new IllegalArgumentException("Unsuitable method ("+factory+") decorated with @JsonCreator (for Enum type "
|
|
510
|
+
+enumClass.getName()+")");
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
return new EnumDeserializer(constructEnumResolver(enumClass, config));
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
@Override
|
|
517
|
+
public JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config, DeserializerProvider p,
|
|
518
|
+
JavaType nodeType, BeanProperty property)
|
|
519
|
+
throws JsonMappingException
|
|
520
|
+
{
|
|
521
|
+
@SuppressWarnings("unchecked")
|
|
522
|
+
Class<? extends JsonNode> nodeClass = (Class<? extends JsonNode>) nodeType.getRawClass();
|
|
523
|
+
// 23-Nov-2010, tatu: Custom deserializer?
|
|
524
|
+
JsonDeserializer<?> custom = _findCustomTreeNodeDeserializer(nodeClass, config, property);
|
|
525
|
+
if (custom != null) {
|
|
526
|
+
return custom;
|
|
527
|
+
}
|
|
528
|
+
return JsonNodeDeserializer.getDeserializer(nodeClass);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* Method called by {@link BeanDeserializerFactory} to see if there might be a standard
|
|
533
|
+
* deserializer registered for given type.
|
|
534
|
+
*
|
|
535
|
+
* @since 1.8
|
|
536
|
+
*/
|
|
537
|
+
@SuppressWarnings("unchecked")
|
|
538
|
+
protected JsonDeserializer<Object> findStdBeanDeserializer(DeserializationConfig config,
|
|
539
|
+
DeserializerProvider p, JavaType type, BeanProperty property)
|
|
540
|
+
throws JsonMappingException
|
|
541
|
+
{
|
|
542
|
+
Class<?> cls = type.getRawClass();
|
|
543
|
+
// note: we do NOT check for custom deserializers here; that's for sub-class to do
|
|
544
|
+
JsonDeserializer<Object> deser = _simpleDeserializers.get(new ClassKey(cls));
|
|
545
|
+
if (deser != null) {
|
|
546
|
+
return deser;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
// [JACKSON-283]: AtomicReference is a rather special type...
|
|
550
|
+
if (AtomicReference.class.isAssignableFrom(cls)) {
|
|
551
|
+
// Must find parameterization
|
|
552
|
+
TypeFactory tf = config.getTypeFactory();
|
|
553
|
+
JavaType[] params = tf.findTypeParameters(type, AtomicReference.class);
|
|
554
|
+
JavaType referencedType;
|
|
555
|
+
if (params == null || params.length < 1) { // untyped (raw)
|
|
556
|
+
referencedType = TypeFactory.unknownType();
|
|
557
|
+
} else {
|
|
558
|
+
referencedType = params[0];
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
JsonDeserializer<?> d2 = new AtomicReferenceDeserializer(referencedType, property);
|
|
562
|
+
return (JsonDeserializer<Object>)d2;
|
|
563
|
+
}
|
|
564
|
+
// [JACKSON-386]: External/optional type handlers are handled somewhat differently
|
|
565
|
+
JsonDeserializer<?> d = optionalHandlers.findDeserializer(type, config, p);
|
|
566
|
+
if (d != null) {
|
|
567
|
+
return (JsonDeserializer<Object>)d;
|
|
568
|
+
}
|
|
569
|
+
return null;
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
@Override
|
|
573
|
+
public TypeDeserializer findTypeDeserializer(DeserializationConfig config, JavaType baseType,
|
|
574
|
+
BeanProperty property)
|
|
575
|
+
throws JsonMappingException
|
|
576
|
+
{
|
|
577
|
+
Class<?> cls = baseType.getRawClass();
|
|
578
|
+
BasicBeanDescription bean = config.introspectClassAnnotations(cls);
|
|
579
|
+
AnnotatedClass ac = bean.getClassInfo();
|
|
580
|
+
AnnotationIntrospector ai = config.getAnnotationIntrospector();
|
|
581
|
+
TypeResolverBuilder<?> b = ai.findTypeResolver(config, ac, baseType);
|
|
582
|
+
|
|
583
|
+
/* Ok: if there is no explicit type info handler, we may want to
|
|
584
|
+
* use a default. If so, config object knows what to use.
|
|
585
|
+
*/
|
|
586
|
+
Collection<NamedType> subtypes = null;
|
|
587
|
+
if (b == null) {
|
|
588
|
+
b = config.getDefaultTyper(baseType);
|
|
589
|
+
if (b == null) {
|
|
590
|
+
return null;
|
|
591
|
+
}
|
|
592
|
+
} else {
|
|
593
|
+
subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(ac, config, ai);
|
|
594
|
+
}
|
|
595
|
+
// [JACKSON-505]: May need to figure out default implementation, if none found yet
|
|
596
|
+
// (note: check for abstract type is not 100% mandatory, more of an optimization)
|
|
597
|
+
if ((b.getDefaultImpl() == null) && baseType.isAbstract()) {
|
|
598
|
+
JavaType defaultType = mapAbstractType(config, baseType);
|
|
599
|
+
if (defaultType != null && defaultType.getRawClass() != baseType.getRawClass()) {
|
|
600
|
+
b = b.defaultImpl(defaultType.getRawClass());
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
return b.buildTypeDeserializer(config, baseType, subtypes, property);
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
/*
|
|
607
|
+
/**********************************************************
|
|
608
|
+
/* Extended API
|
|
609
|
+
/**********************************************************
|
|
610
|
+
*/
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* Method called to create a type information deserializer for values of
|
|
614
|
+
* given non-container property, if one is needed.
|
|
615
|
+
* If not needed (no polymorphic handling configured for property), should return null.
|
|
616
|
+
*<p>
|
|
617
|
+
* Note that this method is only called for non-container bean properties,
|
|
618
|
+
* and not for values in container types or root values (or container properties)
|
|
619
|
+
*
|
|
620
|
+
* @param baseType Declared base type of the value to deserializer (actual
|
|
621
|
+
* deserializer type will be this type or its subtype)
|
|
622
|
+
*
|
|
623
|
+
* @return Type deserializer to use for given base type, if one is needed; null if not.
|
|
624
|
+
*
|
|
625
|
+
* @since 1.5
|
|
626
|
+
*/
|
|
627
|
+
public TypeDeserializer findPropertyTypeDeserializer(DeserializationConfig config, JavaType baseType,
|
|
628
|
+
AnnotatedMember annotated, BeanProperty property)
|
|
629
|
+
throws JsonMappingException
|
|
630
|
+
{
|
|
631
|
+
AnnotationIntrospector ai = config.getAnnotationIntrospector();
|
|
632
|
+
TypeResolverBuilder<?> b = ai.findPropertyTypeResolver(config, annotated, baseType);
|
|
633
|
+
// Defaulting: if no annotations on member, check value class
|
|
634
|
+
if (b == null) {
|
|
635
|
+
return findTypeDeserializer(config, baseType, property);
|
|
636
|
+
}
|
|
637
|
+
// but if annotations found, may need to resolve subtypes:
|
|
638
|
+
Collection<NamedType> subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(annotated, config, ai);
|
|
639
|
+
return b.buildTypeDeserializer(config, baseType, subtypes, property);
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
/**
|
|
643
|
+
* Method called to find and create a type information deserializer for values of
|
|
644
|
+
* given container (list, array, map) property, if one is needed.
|
|
645
|
+
* If not needed (no polymorphic handling configured for property), should return null.
|
|
646
|
+
*<p>
|
|
647
|
+
* Note that this method is only called for container bean properties,
|
|
648
|
+
* and not for values in container types or root values (or non-container properties)
|
|
649
|
+
*
|
|
650
|
+
* @param containerType Type of property; must be a container type
|
|
651
|
+
* @param propertyEntity Field or method that contains container property
|
|
652
|
+
*
|
|
653
|
+
* @since 1.5
|
|
654
|
+
*/
|
|
655
|
+
public TypeDeserializer findPropertyContentTypeDeserializer(DeserializationConfig config, JavaType containerType,
|
|
656
|
+
AnnotatedMember propertyEntity, BeanProperty property)
|
|
657
|
+
throws JsonMappingException
|
|
658
|
+
{
|
|
659
|
+
AnnotationIntrospector ai = config.getAnnotationIntrospector();
|
|
660
|
+
TypeResolverBuilder<?> b = ai.findPropertyContentTypeResolver(config, propertyEntity, containerType);
|
|
661
|
+
JavaType contentType = containerType.getContentType();
|
|
662
|
+
// Defaulting: if no annotations on member, check class
|
|
663
|
+
if (b == null) {
|
|
664
|
+
return findTypeDeserializer(config, contentType, property);
|
|
665
|
+
}
|
|
666
|
+
// but if annotations found, may need to resolve subtypes:
|
|
667
|
+
Collection<NamedType> subtypes = config.getSubtypeResolver().collectAndResolveSubtypes(propertyEntity, config, ai);
|
|
668
|
+
return b.buildTypeDeserializer(config, contentType, subtypes, property);
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
/*
|
|
672
|
+
/**********************************************************
|
|
673
|
+
/* Helper methods, value/content/key type introspection
|
|
674
|
+
/**********************************************************
|
|
675
|
+
*/
|
|
676
|
+
|
|
677
|
+
/**
|
|
678
|
+
* Helper method called to check if a class or method
|
|
679
|
+
* has annotation that tells which class to use for deserialization.
|
|
680
|
+
* Returns null if no such annotation found.
|
|
681
|
+
*/
|
|
682
|
+
protected JsonDeserializer<Object> findDeserializerFromAnnotation(DeserializationConfig config,
|
|
683
|
+
Annotated ann, BeanProperty property)
|
|
684
|
+
throws JsonMappingException
|
|
685
|
+
{
|
|
686
|
+
Object deserDef = config.getAnnotationIntrospector().findDeserializer(ann);
|
|
687
|
+
if (deserDef != null) {
|
|
688
|
+
return _constructDeserializer(config, ann, property, deserDef);
|
|
689
|
+
}
|
|
690
|
+
return null;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
@SuppressWarnings("unchecked")
|
|
694
|
+
JsonDeserializer<Object> _constructDeserializer(DeserializationConfig config, Annotated ann, BeanProperty property,
|
|
695
|
+
Object deserDef)
|
|
696
|
+
throws JsonMappingException
|
|
697
|
+
{
|
|
698
|
+
if (deserDef instanceof JsonDeserializer) {
|
|
699
|
+
JsonDeserializer<Object> deser = (JsonDeserializer<Object>) deserDef;
|
|
700
|
+
// related to [JACKSON-569], need contextualization:
|
|
701
|
+
if (deser instanceof ContextualDeserializer<?>) {
|
|
702
|
+
deser = (JsonDeserializer<Object>)((ContextualDeserializer<?>) deser).createContextual(config, property);
|
|
703
|
+
}
|
|
704
|
+
return deser;
|
|
705
|
+
}
|
|
706
|
+
/* Alas, there's no way to force return type of "either class
|
|
707
|
+
* X or Y" -- need to throw an exception after the fact
|
|
708
|
+
*/
|
|
709
|
+
if (!(deserDef instanceof Class)) {
|
|
710
|
+
throw new IllegalStateException("AnnotationIntrospector returned deserializer definition of type "+deserDef.getClass().getName()+"; expected type JsonDeserializer or Class<JsonDeserializer> instead");
|
|
711
|
+
}
|
|
712
|
+
Class<? extends JsonDeserializer<?>> deserClass = (Class<? extends JsonDeserializer<?>>) deserDef;
|
|
713
|
+
if (!JsonDeserializer.class.isAssignableFrom(deserClass)) {
|
|
714
|
+
throw new IllegalStateException("AnnotationIntrospector returned Class "+deserClass.getName()+"; expected Class<JsonDeserializer>");
|
|
715
|
+
}
|
|
716
|
+
JsonDeserializer<Object> deser = config.deserializerInstance(ann, deserClass);
|
|
717
|
+
// related to [JACKSON-569], need contextualization:
|
|
718
|
+
if (deser instanceof ContextualDeserializer<?>) {
|
|
719
|
+
deser = (JsonDeserializer<Object>)((ContextualDeserializer<?>) deser).createContextual(config, property);
|
|
720
|
+
}
|
|
721
|
+
return deser;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* Method called to see if given method has annotations that indicate
|
|
726
|
+
* a more specific type than what the argument specifies.
|
|
727
|
+
* If annotations are present, they must specify compatible Class;
|
|
728
|
+
* instance of which can be assigned using the method. This means
|
|
729
|
+
* that the Class has to be raw class of type, or its sub-class
|
|
730
|
+
* (or, implementing class if original Class instance is an interface).
|
|
731
|
+
*
|
|
732
|
+
* @param a Method or field that the type is associated with
|
|
733
|
+
* @param type Type derived from the setter argument
|
|
734
|
+
* @param propName Name of property that refers to type, if any; null
|
|
735
|
+
* if no property information available (when modify type declaration
|
|
736
|
+
* of a class, for example)
|
|
737
|
+
*
|
|
738
|
+
* @return Original type if no annotations are present; or a more
|
|
739
|
+
* specific type derived from it if type annotation(s) was found
|
|
740
|
+
*
|
|
741
|
+
* @throws JsonMappingException if invalid annotation is found
|
|
742
|
+
*/
|
|
743
|
+
@SuppressWarnings({ "unchecked", "deprecation" })
|
|
744
|
+
protected <T extends JavaType> T modifyTypeByAnnotation(DeserializationConfig config,
|
|
745
|
+
Annotated a, T type, String propName)
|
|
746
|
+
throws JsonMappingException
|
|
747
|
+
{
|
|
748
|
+
// first: let's check class for the instance itself:
|
|
749
|
+
AnnotationIntrospector intr = config.getAnnotationIntrospector();
|
|
750
|
+
Class<?> subclass = intr.findDeserializationType(a, type, propName);
|
|
751
|
+
if (subclass != null) {
|
|
752
|
+
try {
|
|
753
|
+
type = (T) type.narrowBy(subclass);
|
|
754
|
+
} catch (IllegalArgumentException iae) {
|
|
755
|
+
throw new JsonMappingException("Failed to narrow type "+type+" with concrete-type annotation (value "+subclass.getName()+"), method '"+a.getName()+"': "+iae.getMessage(), null, iae);
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
// then key class
|
|
760
|
+
if (type.isContainerType()) {
|
|
761
|
+
Class<?> keyClass = intr.findDeserializationKeyType(a, type.getKeyType(), propName);
|
|
762
|
+
if (keyClass != null) {
|
|
763
|
+
// illegal to use on non-Maps
|
|
764
|
+
if (!(type instanceof MapLikeType)) {
|
|
765
|
+
throw new JsonMappingException("Illegal key-type annotation: type "+type+" is not a Map(-like) type");
|
|
766
|
+
}
|
|
767
|
+
try {
|
|
768
|
+
type = (T) ((MapLikeType) type).narrowKey(keyClass);
|
|
769
|
+
} catch (IllegalArgumentException iae) {
|
|
770
|
+
throw new JsonMappingException("Failed to narrow key type "+type+" with key-type annotation ("+keyClass.getName()+"): "+iae.getMessage(), null, iae);
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
JavaType keyType = type.getKeyType();
|
|
774
|
+
/* 21-Mar-2011, tatu: ... and associated deserializer too (unless already assigned)
|
|
775
|
+
* (not 100% why or how, but this does seem to get called more than once, which
|
|
776
|
+
* is not good: for now, let's just avoid errors)
|
|
777
|
+
*/
|
|
778
|
+
if (keyType != null && keyType.getValueHandler() == null) {
|
|
779
|
+
Class<? extends KeyDeserializer> kdClass = intr.findKeyDeserializer(a);
|
|
780
|
+
if (kdClass != null && kdClass != KeyDeserializer.None.class) {
|
|
781
|
+
KeyDeserializer kd = config.keyDeserializerInstance(a, kdClass);
|
|
782
|
+
// !!! TODO: For 2.0, change to use this instead:
|
|
783
|
+
/*
|
|
784
|
+
type = (T) ((MapLikeType) type).withKeyValueHandler(kd);
|
|
785
|
+
keyType = type.getKeyType(); // just in case it's used below
|
|
786
|
+
*/
|
|
787
|
+
keyType.setValueHandler(kd);
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
// and finally content class; only applicable to structured types
|
|
792
|
+
Class<?> cc = intr.findDeserializationContentType(a, type.getContentType(), propName);
|
|
793
|
+
if (cc != null) {
|
|
794
|
+
try {
|
|
795
|
+
type = (T) type.narrowContentsBy(cc);
|
|
796
|
+
} catch (IllegalArgumentException iae) {
|
|
797
|
+
throw new JsonMappingException("Failed to narrow content type "+type+" with content-type annotation ("+cc.getName()+"): "+iae.getMessage(), null, iae);
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
// ... as well as deserializer for contents:
|
|
801
|
+
JavaType contentType = type.getContentType();
|
|
802
|
+
if (contentType.getValueHandler() == null) { // as with above, avoid resetting (which would trigger exception)
|
|
803
|
+
Class<? extends JsonDeserializer<?>> cdClass = intr.findContentDeserializer(a);
|
|
804
|
+
if (cdClass != null && cdClass != JsonDeserializer.None.class) {
|
|
805
|
+
JsonDeserializer<Object> cd = config.deserializerInstance(a, cdClass);
|
|
806
|
+
// !!! TODO: For 2.0, change to use this instead:
|
|
807
|
+
/*
|
|
808
|
+
type = (T) type.withContentValueHandler(cd);
|
|
809
|
+
*/
|
|
810
|
+
type.getContentType().setValueHandler(cd);
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
return type;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
/**
|
|
818
|
+
* Helper method used to resolve method return types and field
|
|
819
|
+
* types. The main trick here is that the containing bean may
|
|
820
|
+
* have type variable binding information (when deserializing
|
|
821
|
+
* using generic type passed as type reference), which is
|
|
822
|
+
* needed in some cases.
|
|
823
|
+
*<p>
|
|
824
|
+
* Starting with version 1.3, this method will also resolve instances
|
|
825
|
+
* of key and content deserializers if defined by annotations.
|
|
826
|
+
*/
|
|
827
|
+
@SuppressWarnings("deprecation")
|
|
828
|
+
protected JavaType resolveType(DeserializationConfig config,
|
|
829
|
+
BasicBeanDescription beanDesc, JavaType type, AnnotatedMember member,
|
|
830
|
+
BeanProperty property)
|
|
831
|
+
throws JsonMappingException
|
|
832
|
+
{
|
|
833
|
+
// [JACKSON-154]: Also need to handle keyUsing, contentUsing
|
|
834
|
+
if (type.isContainerType()) {
|
|
835
|
+
AnnotationIntrospector intr = config.getAnnotationIntrospector();
|
|
836
|
+
JavaType keyType = type.getKeyType();
|
|
837
|
+
if (keyType != null) {
|
|
838
|
+
Class<? extends KeyDeserializer> kdClass = intr.findKeyDeserializer(member);
|
|
839
|
+
if (kdClass != null && kdClass != KeyDeserializer.None.class) {
|
|
840
|
+
KeyDeserializer kd = config.keyDeserializerInstance(member, kdClass);
|
|
841
|
+
// !!! TODO: For 2.0, change to use this instead:
|
|
842
|
+
/*
|
|
843
|
+
type = ((MapLikeType) type).withKeyValueHandler(kd);
|
|
844
|
+
keyType = type.getKeyType(); // just in case it's used below
|
|
845
|
+
*/
|
|
846
|
+
keyType.setValueHandler(kd);
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
// and all container types have content types...
|
|
850
|
+
Class<? extends JsonDeserializer<?>> cdClass = intr.findContentDeserializer(member);
|
|
851
|
+
if (cdClass != null && cdClass != JsonDeserializer.None.class) {
|
|
852
|
+
JsonDeserializer<Object> cd = config.deserializerInstance(member, cdClass);
|
|
853
|
+
// !!! TODO: For 2.0, change to use this instead:
|
|
854
|
+
/*
|
|
855
|
+
type = type.withContentValueHandler(cd);
|
|
856
|
+
*/
|
|
857
|
+
type.getContentType().setValueHandler(cd);
|
|
858
|
+
}
|
|
859
|
+
/* 04-Feb-2010, tatu: Need to figure out JAXB annotations that indicate type
|
|
860
|
+
* information to use for polymorphic members; and specifically types for
|
|
861
|
+
* collection values (contents).
|
|
862
|
+
* ... but only applies to members (fields, methods), not classes
|
|
863
|
+
*/
|
|
864
|
+
if (member instanceof AnnotatedMember) {
|
|
865
|
+
TypeDeserializer contentTypeDeser = findPropertyContentTypeDeserializer(config, type,
|
|
866
|
+
(AnnotatedMember) member, property);
|
|
867
|
+
if (contentTypeDeser != null) {
|
|
868
|
+
type = type.withContentTypeHandler(contentTypeDeser);
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
TypeDeserializer valueTypeDeser;
|
|
873
|
+
|
|
874
|
+
if (member instanceof AnnotatedMember) { // JAXB allows per-property annotations
|
|
875
|
+
valueTypeDeser = findPropertyTypeDeserializer(config, type, (AnnotatedMember) member, property);
|
|
876
|
+
} else { // classes just have Jackson annotations
|
|
877
|
+
// probably only occurs if 'property' is null anyway
|
|
878
|
+
valueTypeDeser = findTypeDeserializer(config, type, null);
|
|
879
|
+
}
|
|
880
|
+
if (valueTypeDeser != null) {
|
|
881
|
+
type = type.withTypeHandler(valueTypeDeser);
|
|
882
|
+
}
|
|
883
|
+
return type;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
protected EnumResolver<?> constructEnumResolver(Class<?> enumClass, DeserializationConfig config)
|
|
887
|
+
{
|
|
888
|
+
// [JACKSON-212]: may need to use Enum.toString()
|
|
889
|
+
if (config.isEnabled(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING)) {
|
|
890
|
+
return EnumResolver.constructUnsafeUsingToString(enumClass);
|
|
891
|
+
}
|
|
892
|
+
return EnumResolver.constructUnsafe(enumClass, config.getAnnotationIntrospector());
|
|
893
|
+
}
|
|
894
|
+
}
|