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,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
Contains extended support for "external" packages: things that
|
|
3
|
+
may or may not be present in runtime environment, but that are
|
|
4
|
+
commonly enough used so that explicit support can be added.
|
|
5
|
+
<p>
|
|
6
|
+
Currently supported extensions include:
|
|
7
|
+
<ul>
|
|
8
|
+
<li>Support for Java 1.5 core XML datatypes: the reason these are
|
|
9
|
+
considered "external" is that some platforms that claim to be 1.5 conformant
|
|
10
|
+
are only partially so (Google Android, GAE) and do not included these
|
|
11
|
+
types.
|
|
12
|
+
</li>
|
|
13
|
+
<li>Joda time. This package has superior date/time handling functionality,
|
|
14
|
+
and is thus supported. However, to minimize forced dependencies this
|
|
15
|
+
support is added as extension so that Joda is not needed by Jackson
|
|
16
|
+
itself: but if it is present, its core types are supported to some
|
|
17
|
+
degree
|
|
18
|
+
</li>
|
|
19
|
+
</ul>
|
|
20
|
+
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
package sh.calaba.org.codehaus.jackson.map.ext;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.introspect;
|
|
2
|
+
|
|
3
|
+
import java.lang.annotation.Annotation;
|
|
4
|
+
import java.lang.reflect.AnnotatedElement;
|
|
5
|
+
import java.lang.reflect.Modifier;
|
|
6
|
+
import java.lang.reflect.Type;
|
|
7
|
+
|
|
8
|
+
import sh.calaba.org.codehaus.jackson.map.type.TypeBindings;
|
|
9
|
+
import sh.calaba.org.codehaus.jackson.type.JavaType;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Shared base class used for anything on which annotations (included
|
|
13
|
+
* within a {@link AnnotationMap}).
|
|
14
|
+
*/
|
|
15
|
+
public abstract class Annotated
|
|
16
|
+
{
|
|
17
|
+
protected Annotated() { }
|
|
18
|
+
|
|
19
|
+
public abstract <A extends Annotation> A getAnnotation(Class<A> acls);
|
|
20
|
+
|
|
21
|
+
public final <A extends Annotation> boolean hasAnnotation(Class<A> acls)
|
|
22
|
+
{
|
|
23
|
+
return getAnnotation(acls) != null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Fluent factory method that will construct a new instance that uses specified
|
|
28
|
+
* instance annotations instead of currently configured ones.
|
|
29
|
+
*
|
|
30
|
+
* @since 1.9
|
|
31
|
+
*/
|
|
32
|
+
public abstract Annotated withAnnotations(AnnotationMap fallback);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Fluent factory method that will construct a new instance that uses
|
|
36
|
+
* annotations from specified {@link Annotated} as fallback annotations
|
|
37
|
+
*
|
|
38
|
+
* @since 1.9
|
|
39
|
+
*/
|
|
40
|
+
public final Annotated withFallBackAnnotationsFrom(Annotated annotated) {
|
|
41
|
+
return withAnnotations(AnnotationMap.merge(getAllAnnotations(), annotated.getAllAnnotations()));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Method that can be used to find actual JDK element that this instance
|
|
46
|
+
* represents. It is non-null, except for method/constructor parameters
|
|
47
|
+
* which do not have a JDK counterpart.
|
|
48
|
+
*/
|
|
49
|
+
public abstract AnnotatedElement getAnnotated();
|
|
50
|
+
|
|
51
|
+
protected abstract int getModifiers();
|
|
52
|
+
|
|
53
|
+
public final boolean isPublic() {
|
|
54
|
+
return Modifier.isPublic(getModifiers());
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public abstract String getName();
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Full generic type of the annotated element; definition
|
|
61
|
+
* of what exactly this means depends on sub-class.
|
|
62
|
+
*/
|
|
63
|
+
public JavaType getType(TypeBindings context) {
|
|
64
|
+
return context.resolveType(getGenericType());
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Full generic type of the annotated element; definition
|
|
69
|
+
* of what exactly this means depends on sub-class.
|
|
70
|
+
*
|
|
71
|
+
* @since 1.5
|
|
72
|
+
*/
|
|
73
|
+
public abstract Type getGenericType();
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* "Raw" type (type-erased class) of the annotated element; definition
|
|
77
|
+
* of what exactly this means depends on sub-class.
|
|
78
|
+
*
|
|
79
|
+
* @since 1.5
|
|
80
|
+
*/
|
|
81
|
+
public abstract Class<?> getRawType();
|
|
82
|
+
|
|
83
|
+
protected abstract AnnotationMap getAllAnnotations();
|
|
84
|
+
}
|
|
85
|
+
|
|
@@ -0,0 +1,980 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.introspect;
|
|
2
|
+
|
|
3
|
+
import java.lang.annotation.Annotation;
|
|
4
|
+
import java.lang.reflect.*;
|
|
5
|
+
import java.util.*;
|
|
6
|
+
|
|
7
|
+
import sh.calaba.org.codehaus.jackson.map.AnnotationIntrospector;
|
|
8
|
+
import sh.calaba.org.codehaus.jackson.map.ClassIntrospector.MixInResolver;
|
|
9
|
+
import sh.calaba.org.codehaus.jackson.map.util.Annotations;
|
|
10
|
+
import sh.calaba.org.codehaus.jackson.map.util.ClassUtil;
|
|
11
|
+
|
|
12
|
+
public final class AnnotatedClass
|
|
13
|
+
extends Annotated
|
|
14
|
+
{
|
|
15
|
+
private final static AnnotationMap[] NO_ANNOTATION_MAPS = new AnnotationMap[0];
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
/**********************************************************
|
|
19
|
+
/* Configuration
|
|
20
|
+
/**********************************************************
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Class for which annotations apply, and that owns other
|
|
25
|
+
* components (constructors, methods)
|
|
26
|
+
*/
|
|
27
|
+
final protected Class<?> _class;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Ordered set of super classes and interfaces of the
|
|
31
|
+
* class itself: included in order of precedence
|
|
32
|
+
*/
|
|
33
|
+
final protected List<Class<?>> _superTypes;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Filter used to determine which annotations to gather; used
|
|
37
|
+
* to optimize things so that unnecessary annotations are
|
|
38
|
+
* ignored.
|
|
39
|
+
*/
|
|
40
|
+
final protected AnnotationIntrospector _annotationIntrospector;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Object that knows mapping of mix-in classes (ones that contain
|
|
44
|
+
* annotations to add) with their target classes (ones that
|
|
45
|
+
* get these additional annotations "mixed in").
|
|
46
|
+
*/
|
|
47
|
+
final protected MixInResolver _mixInResolver;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Primary mix-in class; one to use for the annotated class
|
|
51
|
+
* itself. Can be null.
|
|
52
|
+
*/
|
|
53
|
+
final protected Class<?> _primaryMixIn;
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
/**********************************************************
|
|
57
|
+
/* Gathered information
|
|
58
|
+
/**********************************************************
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Combined list of Jackson annotations that the class has,
|
|
63
|
+
* including inheritable ones from super classes and interfaces
|
|
64
|
+
*/
|
|
65
|
+
protected AnnotationMap _classAnnotations;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Default constructor of the annotated class, if it has one.
|
|
69
|
+
*/
|
|
70
|
+
protected AnnotatedConstructor _defaultConstructor;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Single argument constructors the class has, if any.
|
|
74
|
+
*/
|
|
75
|
+
protected List<AnnotatedConstructor> _constructors;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Single argument static methods that might be usable
|
|
79
|
+
* as factory methods
|
|
80
|
+
*/
|
|
81
|
+
protected List<AnnotatedMethod> _creatorMethods;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Member methods of interest; for now ones with 0 or 1 arguments
|
|
85
|
+
* (just optimization, since others won't be used now)
|
|
86
|
+
*/
|
|
87
|
+
protected AnnotatedMethodMap _memberMethods;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Member fields of interest: ones that are either public,
|
|
91
|
+
* or have at least one annotation.
|
|
92
|
+
*/
|
|
93
|
+
protected List<AnnotatedField> _fields;
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
/**********************************************************
|
|
97
|
+
/* Life-cycle
|
|
98
|
+
/**********************************************************
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Constructor will not do any initializations, to allow for
|
|
103
|
+
* configuring instances differently depending on use cases
|
|
104
|
+
*/
|
|
105
|
+
private AnnotatedClass(Class<?> cls, List<Class<?>> superTypes,
|
|
106
|
+
AnnotationIntrospector aintr, MixInResolver mir,
|
|
107
|
+
AnnotationMap classAnnotations)
|
|
108
|
+
{
|
|
109
|
+
_class = cls;
|
|
110
|
+
_superTypes = superTypes;
|
|
111
|
+
_annotationIntrospector = aintr;
|
|
112
|
+
_mixInResolver = mir;
|
|
113
|
+
_primaryMixIn = (_mixInResolver == null) ? null
|
|
114
|
+
: _mixInResolver.findMixInClassFor(_class);
|
|
115
|
+
_classAnnotations = classAnnotations;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@Override
|
|
119
|
+
public AnnotatedClass withAnnotations(AnnotationMap ann) {
|
|
120
|
+
return new AnnotatedClass(_class, _superTypes,
|
|
121
|
+
_annotationIntrospector, _mixInResolver, ann);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Factory method that instantiates an instance. Returned instance
|
|
126
|
+
* will only be initialized with class annotations, but not with
|
|
127
|
+
* any method information.
|
|
128
|
+
*/
|
|
129
|
+
public static AnnotatedClass construct(Class<?> cls,
|
|
130
|
+
AnnotationIntrospector aintr, MixInResolver mir)
|
|
131
|
+
{
|
|
132
|
+
List<Class<?>> st = ClassUtil.findSuperTypes(cls, null);
|
|
133
|
+
AnnotatedClass ac = new AnnotatedClass(cls, st, aintr, mir, null);
|
|
134
|
+
ac.resolveClassAnnotations();
|
|
135
|
+
return ac;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Method similar to {@link #construct}, but that will NOT include
|
|
140
|
+
* information from supertypes; only class itself and any direct
|
|
141
|
+
* mix-ins it may have.
|
|
142
|
+
*/
|
|
143
|
+
public static AnnotatedClass constructWithoutSuperTypes(Class<?> cls,
|
|
144
|
+
AnnotationIntrospector aintr, MixInResolver mir)
|
|
145
|
+
{
|
|
146
|
+
List<Class<?>> empty = Collections.emptyList();
|
|
147
|
+
AnnotatedClass ac = new AnnotatedClass(cls, empty, aintr, mir, null);
|
|
148
|
+
ac.resolveClassAnnotations();
|
|
149
|
+
return ac;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/*
|
|
153
|
+
/**********************************************************
|
|
154
|
+
/* Annotated impl
|
|
155
|
+
/**********************************************************
|
|
156
|
+
*/
|
|
157
|
+
|
|
158
|
+
@Override
|
|
159
|
+
public Class<?> getAnnotated() { return _class; }
|
|
160
|
+
|
|
161
|
+
@Override
|
|
162
|
+
public int getModifiers() { return _class.getModifiers(); }
|
|
163
|
+
|
|
164
|
+
@Override
|
|
165
|
+
public String getName() { return _class.getName(); }
|
|
166
|
+
|
|
167
|
+
@Override
|
|
168
|
+
public <A extends Annotation> A getAnnotation(Class<A> acls)
|
|
169
|
+
{
|
|
170
|
+
if (_classAnnotations == null) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
return _classAnnotations.get(acls);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
@Override
|
|
177
|
+
public Type getGenericType() {
|
|
178
|
+
return _class;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
@Override
|
|
182
|
+
public Class<?> getRawType() {
|
|
183
|
+
return _class;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
@Override
|
|
187
|
+
protected AnnotationMap getAllAnnotations() {
|
|
188
|
+
return _classAnnotations;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/*
|
|
192
|
+
/**********************************************************
|
|
193
|
+
/* Public API, generic accessors
|
|
194
|
+
/**********************************************************
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* @return 1.7
|
|
199
|
+
*/
|
|
200
|
+
public Annotations getAnnotations() { return _classAnnotations; }
|
|
201
|
+
|
|
202
|
+
public boolean hasAnnotations() { return _classAnnotations.size() > 0; }
|
|
203
|
+
|
|
204
|
+
public AnnotatedConstructor getDefaultConstructor() { return _defaultConstructor; }
|
|
205
|
+
|
|
206
|
+
public List<AnnotatedConstructor> getConstructors()
|
|
207
|
+
{
|
|
208
|
+
if (_constructors == null) {
|
|
209
|
+
return Collections.emptyList();
|
|
210
|
+
}
|
|
211
|
+
return _constructors;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
public List<AnnotatedMethod> getStaticMethods()
|
|
215
|
+
{
|
|
216
|
+
if (_creatorMethods == null) {
|
|
217
|
+
return Collections.emptyList();
|
|
218
|
+
}
|
|
219
|
+
return _creatorMethods;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
public Iterable<AnnotatedMethod> memberMethods()
|
|
223
|
+
{
|
|
224
|
+
return _memberMethods;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
public int getMemberMethodCount()
|
|
228
|
+
{
|
|
229
|
+
return _memberMethods.size();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
public AnnotatedMethod findMethod(String name, Class<?>[] paramTypes)
|
|
233
|
+
{
|
|
234
|
+
return _memberMethods.find(name, paramTypes);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
public int getFieldCount() {
|
|
238
|
+
return (_fields == null) ? 0 : _fields.size();
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
public Iterable<AnnotatedField> fields()
|
|
242
|
+
{
|
|
243
|
+
if (_fields == null) {
|
|
244
|
+
return Collections.emptyList();
|
|
245
|
+
}
|
|
246
|
+
return _fields;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/*
|
|
250
|
+
/**********************************************************
|
|
251
|
+
/* Public API, main-level resolution methods
|
|
252
|
+
/**********************************************************
|
|
253
|
+
*/
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Initialization method that will recursively collect Jackson
|
|
257
|
+
* annotations for this class and all super classes and
|
|
258
|
+
* interfaces.
|
|
259
|
+
*<p>
|
|
260
|
+
* Starting with 1.2, it will also apply mix-in annotations,
|
|
261
|
+
* as per [JACKSON-76]
|
|
262
|
+
*/
|
|
263
|
+
public void resolveClassAnnotations()
|
|
264
|
+
{
|
|
265
|
+
_classAnnotations = new AnnotationMap();
|
|
266
|
+
// [JACKSON-659] Should skip processing if annotation processing disabled
|
|
267
|
+
if (_annotationIntrospector == null) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// add mix-in annotations first (overrides)
|
|
272
|
+
if (_primaryMixIn != null) {
|
|
273
|
+
_addClassMixIns(_classAnnotations, _class, _primaryMixIn);
|
|
274
|
+
}
|
|
275
|
+
// first, annotations from the class itself:
|
|
276
|
+
for (Annotation a : _class.getDeclaredAnnotations()) {
|
|
277
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
278
|
+
_classAnnotations.addIfNotPresent(a);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// and then from super types
|
|
283
|
+
for (Class<?> cls : _superTypes) {
|
|
284
|
+
// and mix mix-in annotations in-between
|
|
285
|
+
_addClassMixIns(_classAnnotations, cls);
|
|
286
|
+
for (Annotation a : cls.getDeclaredAnnotations()) {
|
|
287
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
288
|
+
_classAnnotations.addIfNotPresent(a);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/* and finally... any annotations there might be for plain
|
|
294
|
+
* old Object.class: separate because for all other purposes
|
|
295
|
+
* it is just ignored (not included in super types)
|
|
296
|
+
*/
|
|
297
|
+
/* 12-Jul-2009, tatu: Should this be done for interfaces too?
|
|
298
|
+
* For now, yes, seems useful for some cases, and not harmful
|
|
299
|
+
* for any?
|
|
300
|
+
*/
|
|
301
|
+
_addClassMixIns(_classAnnotations, Object.class);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Initialization method that will find out all constructors
|
|
306
|
+
* and potential static factory methods the class has.
|
|
307
|
+
*<p>
|
|
308
|
+
* Starting with 1.2, it will also apply mix-in annotations,
|
|
309
|
+
* as per [JACKSON-76]
|
|
310
|
+
*
|
|
311
|
+
* @param includeAll If true, includes all creator methods; if false,
|
|
312
|
+
* will only include the no-arguments "default" constructor
|
|
313
|
+
*/
|
|
314
|
+
public void resolveCreators(boolean includeAll)
|
|
315
|
+
{
|
|
316
|
+
// Then see which constructors we have
|
|
317
|
+
_constructors = null;
|
|
318
|
+
Constructor<?>[] declaredCtors = _class.getDeclaredConstructors();
|
|
319
|
+
for (Constructor<?> ctor : declaredCtors) {
|
|
320
|
+
if (ctor.getParameterTypes().length == 0) {
|
|
321
|
+
_defaultConstructor = _constructConstructor(ctor, true);
|
|
322
|
+
} else {
|
|
323
|
+
if (includeAll) {
|
|
324
|
+
if (_constructors == null) {
|
|
325
|
+
_constructors = new ArrayList<AnnotatedConstructor>(Math.max(10, declaredCtors.length));
|
|
326
|
+
}
|
|
327
|
+
_constructors.add(_constructConstructor(ctor, false));
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// and if need be, augment with mix-ins
|
|
332
|
+
if (_primaryMixIn != null) {
|
|
333
|
+
if (_defaultConstructor != null || _constructors != null) {
|
|
334
|
+
_addConstructorMixIns(_primaryMixIn);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
/* And then... let's remove all constructors that are deemed
|
|
340
|
+
* ignorable after all annotations have been properly collapsed.
|
|
341
|
+
*/
|
|
342
|
+
// 14-Feb-2011, tatu: AnnotationIntrospector is null if annotations not enabled; if so, can skip:
|
|
343
|
+
if (_annotationIntrospector != null) {
|
|
344
|
+
if (_defaultConstructor != null) {
|
|
345
|
+
if (_annotationIntrospector.isIgnorableConstructor(_defaultConstructor)) {
|
|
346
|
+
_defaultConstructor = null;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (_constructors != null) {
|
|
350
|
+
// count down to allow safe removal
|
|
351
|
+
for (int i = _constructors.size(); --i >= 0; ) {
|
|
352
|
+
if (_annotationIntrospector.isIgnorableConstructor(_constructors.get(i))) {
|
|
353
|
+
_constructors.remove(i);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
_creatorMethods = null;
|
|
360
|
+
|
|
361
|
+
if (includeAll) {
|
|
362
|
+
// Then static methods which are potential factory methods
|
|
363
|
+
for (Method m : _class.getDeclaredMethods()) {
|
|
364
|
+
if (!Modifier.isStatic(m.getModifiers())) {
|
|
365
|
+
continue;
|
|
366
|
+
}
|
|
367
|
+
int argCount = m.getParameterTypes().length;
|
|
368
|
+
// factory methods take at least one arg:
|
|
369
|
+
if (argCount < 1) {
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
372
|
+
if (_creatorMethods == null) {
|
|
373
|
+
_creatorMethods = new ArrayList<AnnotatedMethod>(8);
|
|
374
|
+
}
|
|
375
|
+
_creatorMethods.add(_constructCreatorMethod(m));
|
|
376
|
+
}
|
|
377
|
+
// mix-ins to mix in?
|
|
378
|
+
if (_primaryMixIn != null && _creatorMethods != null) {
|
|
379
|
+
_addFactoryMixIns(_primaryMixIn);
|
|
380
|
+
}
|
|
381
|
+
// anything to ignore at this point?
|
|
382
|
+
if (_annotationIntrospector != null) {
|
|
383
|
+
if (_creatorMethods != null) {
|
|
384
|
+
// count down to allow safe removal
|
|
385
|
+
for (int i = _creatorMethods.size(); --i >= 0; ) {
|
|
386
|
+
if (_annotationIntrospector.isIgnorableMethod(_creatorMethods.get(i))) {
|
|
387
|
+
_creatorMethods.remove(i);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Method for resolving member method information: aggregating all non-static methods
|
|
397
|
+
* and combining annotations (to implement method-annotation inheritance)
|
|
398
|
+
*
|
|
399
|
+
* @param methodFilter Filter used to determine which methods to include
|
|
400
|
+
*
|
|
401
|
+
* @since 1.9
|
|
402
|
+
*/
|
|
403
|
+
public void resolveMemberMethods(MethodFilter methodFilter)
|
|
404
|
+
{
|
|
405
|
+
_memberMethods = new AnnotatedMethodMap();
|
|
406
|
+
AnnotatedMethodMap mixins = new AnnotatedMethodMap();
|
|
407
|
+
// first: methods from the class itself
|
|
408
|
+
_addMemberMethods(_class, methodFilter, _memberMethods, _primaryMixIn, mixins);
|
|
409
|
+
|
|
410
|
+
// and then augment these with annotations from super-types:
|
|
411
|
+
for (Class<?> cls : _superTypes) {
|
|
412
|
+
Class<?> mixin = (_mixInResolver == null) ? null : _mixInResolver.findMixInClassFor(cls);
|
|
413
|
+
_addMemberMethods(cls, methodFilter, _memberMethods, mixin, mixins);
|
|
414
|
+
}
|
|
415
|
+
// Special case: mix-ins for Object.class? (to apply to ALL classes)
|
|
416
|
+
if (_mixInResolver != null) {
|
|
417
|
+
Class<?> mixin = _mixInResolver.findMixInClassFor(Object.class);
|
|
418
|
+
if (mixin != null) {
|
|
419
|
+
_addMethodMixIns(methodFilter, _memberMethods, mixin, mixins);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/* Any unmatched mix-ins? Most likely error cases (not matching
|
|
424
|
+
* any method); but there is one possible real use case:
|
|
425
|
+
* exposing Object#hashCode (alas, Object#getClass can NOT be
|
|
426
|
+
* exposed, see [JACKSON-140])
|
|
427
|
+
*/
|
|
428
|
+
// 14-Feb-2011, tatu: AnnotationIntrospector is null if annotations not enabled; if so, can skip:
|
|
429
|
+
if (_annotationIntrospector != null) {
|
|
430
|
+
if (!mixins.isEmpty()) {
|
|
431
|
+
Iterator<AnnotatedMethod> it = mixins.iterator();
|
|
432
|
+
while (it.hasNext()) {
|
|
433
|
+
AnnotatedMethod mixIn = it.next();
|
|
434
|
+
try {
|
|
435
|
+
Method m = Object.class.getDeclaredMethod(mixIn.getName(), mixIn.getParameterClasses());
|
|
436
|
+
if (m != null) {
|
|
437
|
+
AnnotatedMethod am = _constructMethod(m);
|
|
438
|
+
_addMixOvers(mixIn.getAnnotated(), am, false);
|
|
439
|
+
_memberMethods.add(am);
|
|
440
|
+
}
|
|
441
|
+
} catch (Exception e) { }
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Method that will collect all member (non-static) fields
|
|
449
|
+
* that are either public, or have at least a single annotation
|
|
450
|
+
* associated with them.
|
|
451
|
+
*
|
|
452
|
+
* @since 1.9
|
|
453
|
+
*/
|
|
454
|
+
public void resolveFields()
|
|
455
|
+
{
|
|
456
|
+
LinkedHashMap<String,AnnotatedField> foundFields = new LinkedHashMap<String,AnnotatedField>();
|
|
457
|
+
_addFields(foundFields, _class);
|
|
458
|
+
if (foundFields.isEmpty()) {
|
|
459
|
+
_fields = Collections.emptyList();
|
|
460
|
+
} else {
|
|
461
|
+
_fields = new ArrayList<AnnotatedField>(foundFields.size());
|
|
462
|
+
_fields.addAll(foundFields.values());
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
/*
|
|
467
|
+
/**********************************************************
|
|
468
|
+
/* Deprecated methods
|
|
469
|
+
/**********************************************************
|
|
470
|
+
*/
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* @since 1.9 Use version without arguments
|
|
474
|
+
*/
|
|
475
|
+
@Deprecated
|
|
476
|
+
public void resolveMemberMethods(MethodFilter methodFilter, boolean collectIgnored)
|
|
477
|
+
{
|
|
478
|
+
resolveMemberMethods(methodFilter);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* @since 1.9 Use version without arguments
|
|
483
|
+
*/
|
|
484
|
+
@Deprecated
|
|
485
|
+
public void resolveFields(boolean collectIgnored)
|
|
486
|
+
{
|
|
487
|
+
resolveFields();
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/*
|
|
491
|
+
/**********************************************************
|
|
492
|
+
/* Helper methods for resolving class annotations
|
|
493
|
+
/* (resolution consisting of inheritance, overrides,
|
|
494
|
+
/* and injection of mix-ins as necessary)
|
|
495
|
+
/**********************************************************
|
|
496
|
+
*/
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* Helper method for adding any mix-in annotations specified
|
|
500
|
+
* class might have.
|
|
501
|
+
*/
|
|
502
|
+
protected void _addClassMixIns(AnnotationMap annotations, Class<?> toMask)
|
|
503
|
+
{
|
|
504
|
+
if (_mixInResolver != null) {
|
|
505
|
+
_addClassMixIns(annotations, toMask, _mixInResolver.findMixInClassFor(toMask));
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
protected void _addClassMixIns(AnnotationMap annotations, Class<?> toMask,
|
|
510
|
+
Class<?> mixin)
|
|
511
|
+
{
|
|
512
|
+
if (mixin == null) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
// Ok, first: annotations from mix-in class itself:
|
|
516
|
+
for (Annotation a : mixin.getDeclaredAnnotations()) {
|
|
517
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
518
|
+
annotations.addIfNotPresent(a);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
/* And then from its supertypes, if any. But note that we will
|
|
522
|
+
* only consider super-types up until reaching the masked
|
|
523
|
+
* class (if found); this because often mix-in class
|
|
524
|
+
* is a sub-class (for convenience reasons). And if so, we
|
|
525
|
+
* absolutely must NOT include super types of masked class,
|
|
526
|
+
* as that would inverse precedence of annotations.
|
|
527
|
+
*/
|
|
528
|
+
for (Class<?> parent : ClassUtil.findSuperTypes(mixin, toMask)) {
|
|
529
|
+
for (Annotation a : parent.getDeclaredAnnotations()) {
|
|
530
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
531
|
+
annotations.addIfNotPresent(a);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/*
|
|
538
|
+
/**********************************************************
|
|
539
|
+
/* Helper methods for populating creator (ctor, factory) information
|
|
540
|
+
/**********************************************************
|
|
541
|
+
*/
|
|
542
|
+
|
|
543
|
+
protected void _addConstructorMixIns(Class<?> mixin)
|
|
544
|
+
{
|
|
545
|
+
MemberKey[] ctorKeys = null;
|
|
546
|
+
int ctorCount = (_constructors == null) ? 0 : _constructors.size();
|
|
547
|
+
for (Constructor<?> ctor : mixin.getDeclaredConstructors()) {
|
|
548
|
+
if (ctor.getParameterTypes().length == 0) {
|
|
549
|
+
if (_defaultConstructor != null) {
|
|
550
|
+
_addMixOvers(ctor, _defaultConstructor, false);
|
|
551
|
+
}
|
|
552
|
+
} else {
|
|
553
|
+
if (ctorKeys == null) {
|
|
554
|
+
ctorKeys = new MemberKey[ctorCount];
|
|
555
|
+
for (int i = 0; i < ctorCount; ++i) {
|
|
556
|
+
ctorKeys[i] = new MemberKey(_constructors.get(i).getAnnotated());
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
MemberKey key = new MemberKey(ctor);
|
|
560
|
+
|
|
561
|
+
for (int i = 0; i < ctorCount; ++i) {
|
|
562
|
+
if (!key.equals(ctorKeys[i])) {
|
|
563
|
+
continue;
|
|
564
|
+
}
|
|
565
|
+
_addMixOvers(ctor, _constructors.get(i), true);
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
protected void _addFactoryMixIns(Class<?> mixin)
|
|
573
|
+
{
|
|
574
|
+
MemberKey[] methodKeys = null;
|
|
575
|
+
int methodCount = _creatorMethods.size();
|
|
576
|
+
|
|
577
|
+
for (Method m : mixin.getDeclaredMethods()) {
|
|
578
|
+
if (!Modifier.isStatic(m.getModifiers())) {
|
|
579
|
+
continue;
|
|
580
|
+
}
|
|
581
|
+
if (m.getParameterTypes().length == 0) {
|
|
582
|
+
continue;
|
|
583
|
+
}
|
|
584
|
+
if (methodKeys == null) {
|
|
585
|
+
methodKeys = new MemberKey[methodCount];
|
|
586
|
+
for (int i = 0; i < methodCount; ++i) {
|
|
587
|
+
methodKeys[i] = new MemberKey(_creatorMethods.get(i).getAnnotated());
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
MemberKey key = new MemberKey(m);
|
|
591
|
+
for (int i = 0; i < methodCount; ++i) {
|
|
592
|
+
if (!key.equals(methodKeys[i])) {
|
|
593
|
+
continue;
|
|
594
|
+
}
|
|
595
|
+
_addMixOvers(m, _creatorMethods.get(i), true);
|
|
596
|
+
break;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
/*
|
|
602
|
+
/**********************************************************
|
|
603
|
+
/* Helper methods for populating method information
|
|
604
|
+
/**********************************************************
|
|
605
|
+
*/
|
|
606
|
+
|
|
607
|
+
protected void _addMemberMethods(Class<?> cls,
|
|
608
|
+
MethodFilter methodFilter, AnnotatedMethodMap methods,
|
|
609
|
+
Class<?> mixInCls, AnnotatedMethodMap mixIns)
|
|
610
|
+
{
|
|
611
|
+
// first, mixIns, since they have higher priority then class methods
|
|
612
|
+
if (mixInCls != null) {
|
|
613
|
+
_addMethodMixIns(methodFilter, methods, mixInCls, mixIns);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
if (cls == null) { // just so caller need not check when passing super-class
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
// then methods from the class itself
|
|
620
|
+
for (Method m : cls.getDeclaredMethods()) {
|
|
621
|
+
if (!_isIncludableMethod(m, methodFilter)) {
|
|
622
|
+
continue;
|
|
623
|
+
}
|
|
624
|
+
AnnotatedMethod old = methods.find(m);
|
|
625
|
+
if (old == null) {
|
|
626
|
+
AnnotatedMethod newM = _constructMethod(m);
|
|
627
|
+
methods.add(newM);
|
|
628
|
+
// Ok, but is there a mix-in to connect now?
|
|
629
|
+
old = mixIns.remove(m);
|
|
630
|
+
if (old != null) {
|
|
631
|
+
_addMixOvers(old.getAnnotated(), newM, false);
|
|
632
|
+
}
|
|
633
|
+
} else {
|
|
634
|
+
/* If sub-class already has the method, we only want to augment
|
|
635
|
+
* annotations with entries that are not masked by sub-class.
|
|
636
|
+
*/
|
|
637
|
+
_addMixUnders(m, old);
|
|
638
|
+
|
|
639
|
+
/* 06-Jan-2010, tatu: [JACKSON-450] Except that if method we saw first is
|
|
640
|
+
* from an interface, and we now find a non-interface definition, we should
|
|
641
|
+
* use this method, but with combination of annotations.
|
|
642
|
+
* This helps (or rather, is essential) with JAXB annotations and
|
|
643
|
+
* may also result in faster method calls (interface calls are slightly
|
|
644
|
+
* costlier than regular method calls)
|
|
645
|
+
*/
|
|
646
|
+
if (old.getDeclaringClass().isInterface() && !m.getDeclaringClass().isInterface()) {
|
|
647
|
+
methods.add(old.withMethod(m));
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
protected void _addMethodMixIns(MethodFilter methodFilter, AnnotatedMethodMap methods,
|
|
654
|
+
Class<?> mixInCls, AnnotatedMethodMap mixIns)
|
|
655
|
+
{
|
|
656
|
+
for (Method m : mixInCls.getDeclaredMethods()) {
|
|
657
|
+
if (!_isIncludableMethod(m, methodFilter)) {
|
|
658
|
+
continue;
|
|
659
|
+
}
|
|
660
|
+
AnnotatedMethod am = methods.find(m);
|
|
661
|
+
/* Do we already have a method to augment (from sub-class
|
|
662
|
+
* that will mask this mixIn)? If so, add if visible
|
|
663
|
+
* without masking (no such annotation)
|
|
664
|
+
*/
|
|
665
|
+
if (am != null) {
|
|
666
|
+
_addMixUnders(m, am);
|
|
667
|
+
/* Otherwise will have precedence, but must wait
|
|
668
|
+
* until we find the real method (mixIn methods are
|
|
669
|
+
* just placeholder, can't be called)
|
|
670
|
+
*/
|
|
671
|
+
} else {
|
|
672
|
+
mixIns.add(_constructMethod(m));
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
/*
|
|
678
|
+
/**********************************************************
|
|
679
|
+
/* Helper methods for populating field information
|
|
680
|
+
/**********************************************************
|
|
681
|
+
*/
|
|
682
|
+
|
|
683
|
+
protected void _addFields(Map<String,AnnotatedField> fields, Class<?> c)
|
|
684
|
+
{
|
|
685
|
+
/* First, a quick test: we only care for regular classes (not
|
|
686
|
+
* interfaces, primitive types etc), except for Object.class.
|
|
687
|
+
* A simple check to rule out other cases is to see if there
|
|
688
|
+
* is a super class or not.
|
|
689
|
+
*/
|
|
690
|
+
Class<?> parent = c.getSuperclass();
|
|
691
|
+
if (parent != null) {
|
|
692
|
+
// Let's add super-class' fields first, then ours.
|
|
693
|
+
/* 21-Feb-2010, tatu: Need to handle masking: as per [JACKSON-226]
|
|
694
|
+
* we otherwise get into trouble...
|
|
695
|
+
*/
|
|
696
|
+
_addFields(fields, parent);
|
|
697
|
+
for (Field f : c.getDeclaredFields()) {
|
|
698
|
+
// static fields not included, nor transient
|
|
699
|
+
if (!_isIncludableField(f)) {
|
|
700
|
+
continue;
|
|
701
|
+
}
|
|
702
|
+
/* Ok now: we can (and need) not filter out ignorable fields
|
|
703
|
+
* at this point; partly because mix-ins haven't been
|
|
704
|
+
* added, and partly because logic can be done when
|
|
705
|
+
* determining get/settability of the field.
|
|
706
|
+
*/
|
|
707
|
+
fields.put(f.getName(), _constructField(f));
|
|
708
|
+
}
|
|
709
|
+
// And then... any mix-in overrides?
|
|
710
|
+
if (_mixInResolver != null) {
|
|
711
|
+
Class<?> mixin = _mixInResolver.findMixInClassFor(c);
|
|
712
|
+
if (mixin != null) {
|
|
713
|
+
_addFieldMixIns(mixin, fields);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* Method called to add field mix-ins from given mix-in class (and its fields)
|
|
721
|
+
* into already collected actual fields (from introspected classes and their
|
|
722
|
+
* super-classes)
|
|
723
|
+
*/
|
|
724
|
+
protected void _addFieldMixIns(Class<?> mixin, Map<String,AnnotatedField> fields)
|
|
725
|
+
{
|
|
726
|
+
for (Field mixinField : mixin.getDeclaredFields()) {
|
|
727
|
+
/* there are some dummy things (static, synthetic); better
|
|
728
|
+
* ignore
|
|
729
|
+
*/
|
|
730
|
+
if (!_isIncludableField(mixinField)) {
|
|
731
|
+
continue;
|
|
732
|
+
}
|
|
733
|
+
String name = mixinField.getName();
|
|
734
|
+
// anything to mask? (if not, quietly ignore)
|
|
735
|
+
AnnotatedField maskedField = fields.get(name);
|
|
736
|
+
if (maskedField != null) {
|
|
737
|
+
for (Annotation a : mixinField.getDeclaredAnnotations()) {
|
|
738
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
739
|
+
maskedField.addOrOverride(a);
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
/*
|
|
747
|
+
/**********************************************************
|
|
748
|
+
/* Helper methods, constructing value types
|
|
749
|
+
/**********************************************************
|
|
750
|
+
*/
|
|
751
|
+
|
|
752
|
+
protected AnnotatedMethod _constructMethod(Method m)
|
|
753
|
+
{
|
|
754
|
+
/* note: parameter annotations not used for regular (getter, setter)
|
|
755
|
+
* methods; only for creator methods (static factory methods)
|
|
756
|
+
* -- at least not yet!
|
|
757
|
+
*/
|
|
758
|
+
if (_annotationIntrospector == null) { // when annotation processing is disabled
|
|
759
|
+
return new AnnotatedMethod(m, _emptyAnnotationMap(), null);
|
|
760
|
+
}
|
|
761
|
+
return new AnnotatedMethod(m, _collectRelevantAnnotations(m.getDeclaredAnnotations()), null);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
protected AnnotatedConstructor _constructConstructor(Constructor<?> ctor, boolean defaultCtor)
|
|
765
|
+
{
|
|
766
|
+
if (_annotationIntrospector == null) { // when annotation processing is disabled
|
|
767
|
+
return new AnnotatedConstructor(ctor, _emptyAnnotationMap(), _emptyAnnotationMaps(ctor.getParameterTypes().length));
|
|
768
|
+
}
|
|
769
|
+
if (defaultCtor) {
|
|
770
|
+
return new AnnotatedConstructor(ctor, _collectRelevantAnnotations(ctor.getDeclaredAnnotations()), null);
|
|
771
|
+
}
|
|
772
|
+
Annotation[][] paramAnns = ctor.getParameterAnnotations();
|
|
773
|
+
int paramCount = ctor.getParameterTypes().length;
|
|
774
|
+
/* [JACKSON-701]: Looks like JDK has discrepancy, whereas annotations for implicit 'this'
|
|
775
|
+
* (for non-static inner classes) are NOT included, but type is? Strange, sounds like
|
|
776
|
+
* a bug. Alas, we can't really fix that...
|
|
777
|
+
*/
|
|
778
|
+
/* Also: [JACKSON-767] (enum value constructors)
|
|
779
|
+
*/
|
|
780
|
+
AnnotationMap[] resolvedAnnotations = null;
|
|
781
|
+
if (paramCount != paramAnns.length) {
|
|
782
|
+
// Limits of the work-around (to avoid hiding real errors):
|
|
783
|
+
// first, only applicable for member classes and then either:
|
|
784
|
+
|
|
785
|
+
Class<?> dc = ctor.getDeclaringClass();
|
|
786
|
+
// (a) is enum, which have two extra hidden params (name, index)
|
|
787
|
+
if (dc.isEnum() && (paramCount == paramAnns.length + 2)) {
|
|
788
|
+
Annotation[][] old = paramAnns;
|
|
789
|
+
paramAnns = new Annotation[old.length+2][];
|
|
790
|
+
System.arraycopy(old, 0, paramAnns, 2, old.length);
|
|
791
|
+
resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
|
|
792
|
+
} else if (dc.isMemberClass()) {
|
|
793
|
+
// (b) non-static inner classes, get implicit 'this' for parameter, not annotation
|
|
794
|
+
if (paramCount == (paramAnns.length + 1)) {
|
|
795
|
+
// hack attack: prepend a null entry to make things match
|
|
796
|
+
Annotation[][] old = paramAnns;
|
|
797
|
+
paramAnns = new Annotation[old.length+1][];
|
|
798
|
+
System.arraycopy(old, 0, paramAnns, 1, old.length);
|
|
799
|
+
resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
if (resolvedAnnotations == null) {
|
|
803
|
+
throw new IllegalStateException("Internal error: constructor for "+ctor.getDeclaringClass().getName()
|
|
804
|
+
+" has mismatch: "+paramCount+" parameters; "+paramAnns.length+" sets of annotations");
|
|
805
|
+
}
|
|
806
|
+
} else {
|
|
807
|
+
resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
|
|
808
|
+
}
|
|
809
|
+
return new AnnotatedConstructor(ctor, _collectRelevantAnnotations(ctor.getDeclaredAnnotations()),
|
|
810
|
+
resolvedAnnotations);
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
protected AnnotatedMethod _constructCreatorMethod(Method m)
|
|
814
|
+
{
|
|
815
|
+
if (_annotationIntrospector == null) { // when annotation processing is disabled
|
|
816
|
+
return new AnnotatedMethod(m, _emptyAnnotationMap(), _emptyAnnotationMaps(m.getParameterTypes().length));
|
|
817
|
+
}
|
|
818
|
+
return new AnnotatedMethod(m, _collectRelevantAnnotations(m.getDeclaredAnnotations()),
|
|
819
|
+
_collectRelevantAnnotations(m.getParameterAnnotations()));
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
protected AnnotatedField _constructField(Field f)
|
|
823
|
+
{
|
|
824
|
+
if (_annotationIntrospector == null) { // when annotation processing is disabled
|
|
825
|
+
return new AnnotatedField(f, _emptyAnnotationMap());
|
|
826
|
+
}
|
|
827
|
+
return new AnnotatedField(f, _collectRelevantAnnotations(f.getDeclaredAnnotations()));
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
protected AnnotationMap[] _collectRelevantAnnotations(Annotation[][] anns)
|
|
831
|
+
{
|
|
832
|
+
int len = anns.length;
|
|
833
|
+
AnnotationMap[] result = new AnnotationMap[len];
|
|
834
|
+
for (int i = 0; i < len; ++i) {
|
|
835
|
+
result[i] = _collectRelevantAnnotations(anns[i]);
|
|
836
|
+
}
|
|
837
|
+
return result;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
protected AnnotationMap _collectRelevantAnnotations(Annotation[] anns)
|
|
841
|
+
{
|
|
842
|
+
AnnotationMap annMap = new AnnotationMap();
|
|
843
|
+
if (anns != null) {
|
|
844
|
+
for (Annotation a : anns) {
|
|
845
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
846
|
+
annMap.add(a);
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
return annMap;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
private AnnotationMap _emptyAnnotationMap() {
|
|
854
|
+
return new AnnotationMap();
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
private AnnotationMap[] _emptyAnnotationMaps(int count) {
|
|
858
|
+
if (count == 0) {
|
|
859
|
+
return NO_ANNOTATION_MAPS;
|
|
860
|
+
}
|
|
861
|
+
AnnotationMap[] maps = new AnnotationMap[count];
|
|
862
|
+
for (int i = 0; i < count; ++i) {
|
|
863
|
+
maps[i] = _emptyAnnotationMap();
|
|
864
|
+
}
|
|
865
|
+
return maps;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
/*
|
|
869
|
+
/**********************************************************
|
|
870
|
+
/* Helper methods, inclusion filtering
|
|
871
|
+
/**********************************************************
|
|
872
|
+
*/
|
|
873
|
+
|
|
874
|
+
protected boolean _isIncludableMethod(Method m, MethodFilter filter)
|
|
875
|
+
{
|
|
876
|
+
if (filter != null && !filter.includeMethod(m)) {
|
|
877
|
+
return false;
|
|
878
|
+
}
|
|
879
|
+
/* 07-Apr-2009, tatu: Looks like generics can introduce hidden
|
|
880
|
+
* bridge and/or synthetic methods. I don't think we want to
|
|
881
|
+
* consider those...
|
|
882
|
+
*/
|
|
883
|
+
if (m.isSynthetic() || m.isBridge()) {
|
|
884
|
+
return false;
|
|
885
|
+
}
|
|
886
|
+
return true;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
private boolean _isIncludableField(Field f)
|
|
890
|
+
{
|
|
891
|
+
/* I'm pretty sure synthetic fields are to be skipped...
|
|
892
|
+
* (methods definitely are)
|
|
893
|
+
*/
|
|
894
|
+
if (f.isSynthetic()) {
|
|
895
|
+
return false;
|
|
896
|
+
}
|
|
897
|
+
// Static fields are never included, nor transient
|
|
898
|
+
int mods = f.getModifiers();
|
|
899
|
+
if (Modifier.isStatic(mods) || Modifier.isTransient(mods)) {
|
|
900
|
+
return false;
|
|
901
|
+
}
|
|
902
|
+
return true;
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
/*
|
|
906
|
+
/**********************************************************
|
|
907
|
+
/* Helper methods, attaching annotations
|
|
908
|
+
/**********************************************************
|
|
909
|
+
*/
|
|
910
|
+
|
|
911
|
+
/**
|
|
912
|
+
* @param addParamAnnotations Whether parameter annotations are to be
|
|
913
|
+
* added as well
|
|
914
|
+
*/
|
|
915
|
+
protected void _addMixOvers(Constructor<?> mixin, AnnotatedConstructor target,
|
|
916
|
+
boolean addParamAnnotations)
|
|
917
|
+
{
|
|
918
|
+
for (Annotation a : mixin.getDeclaredAnnotations()) {
|
|
919
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
920
|
+
target.addOrOverride(a);
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
if (addParamAnnotations) {
|
|
924
|
+
Annotation[][] pa = mixin.getParameterAnnotations();
|
|
925
|
+
for (int i = 0, len = pa.length; i < len; ++i) {
|
|
926
|
+
for (Annotation a : pa[i]) {
|
|
927
|
+
target.addOrOverrideParam(i, a);
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
/**
|
|
934
|
+
* @param addParamAnnotations Whether parameter annotations are to be
|
|
935
|
+
* added as well
|
|
936
|
+
*/
|
|
937
|
+
protected void _addMixOvers(Method mixin, AnnotatedMethod target,
|
|
938
|
+
boolean addParamAnnotations)
|
|
939
|
+
{
|
|
940
|
+
for (Annotation a : mixin.getDeclaredAnnotations()) {
|
|
941
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
942
|
+
target.addOrOverride(a);
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
if (addParamAnnotations) {
|
|
946
|
+
Annotation[][] pa = mixin.getParameterAnnotations();
|
|
947
|
+
for (int i = 0, len = pa.length; i < len; ++i) {
|
|
948
|
+
for (Annotation a : pa[i]) {
|
|
949
|
+
target.addOrOverrideParam(i, a);
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
/**
|
|
956
|
+
* Method that will add annotations from specified source method to target method,
|
|
957
|
+
* but only if target does not yet have them.
|
|
958
|
+
*/
|
|
959
|
+
protected void _addMixUnders(Method src, AnnotatedMethod target)
|
|
960
|
+
{
|
|
961
|
+
for (Annotation a : src.getDeclaredAnnotations()) {
|
|
962
|
+
if (_annotationIntrospector.isHandled(a)) {
|
|
963
|
+
target.addIfNotPresent(a);
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
/*
|
|
969
|
+
/**********************************************************
|
|
970
|
+
/* Other methods
|
|
971
|
+
/**********************************************************
|
|
972
|
+
*/
|
|
973
|
+
|
|
974
|
+
@Override
|
|
975
|
+
public String toString()
|
|
976
|
+
{
|
|
977
|
+
return "[AnnotedClass "+_class.getName()+"]";
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
|