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
data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/BeanUtil.java
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.util;
|
|
2
|
+
|
|
3
|
+
import sh.calaba.org.codehaus.jackson.map.introspect.AnnotatedMethod;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Helper class that contains functionality needed by both serialization
|
|
7
|
+
* and deserialization side.
|
|
8
|
+
*
|
|
9
|
+
* @since 1.9
|
|
10
|
+
*/
|
|
11
|
+
public class BeanUtil
|
|
12
|
+
{
|
|
13
|
+
/*
|
|
14
|
+
* Helper method to use for sorting bean properties, based on
|
|
15
|
+
* ordering rules indicated by annotations, config features.
|
|
16
|
+
*
|
|
17
|
+
* @param config Serialization/Deserialization configuration in effect
|
|
18
|
+
* @param beanDesc Bean description
|
|
19
|
+
* @param props Properties to sort if/as necessary
|
|
20
|
+
* @param defaultSortByAlpha Whether properties should be (re)sorted alphabetically
|
|
21
|
+
* by default (unless overridden by type)
|
|
22
|
+
*/
|
|
23
|
+
/*
|
|
24
|
+
public static <T extends Named> List<T> sortProperties(MapperConfig<?> config,
|
|
25
|
+
BasicBeanDescription beanDesc, List<T> props,
|
|
26
|
+
boolean defaultSortByAlpha)
|
|
27
|
+
{
|
|
28
|
+
// First, order by [JACKSON-90] (explicit ordering and/or alphabetic)
|
|
29
|
+
// and then for [JACKSON-170] (implicitly order creator properties before others)
|
|
30
|
+
List<String> creatorProps = beanDesc.findCreatorPropertyNames();
|
|
31
|
+
// Then how about explicit ordering?
|
|
32
|
+
AnnotationIntrospector intr = config.getAnnotationIntrospector();
|
|
33
|
+
AnnotatedClass ac = beanDesc.getClassInfo();
|
|
34
|
+
String[] propertyOrder = intr.findSerializationPropertyOrder(ac);
|
|
35
|
+
Boolean alpha = intr.findSerializationSortAlphabetically(ac);
|
|
36
|
+
boolean sort;
|
|
37
|
+
|
|
38
|
+
if (alpha == null) {
|
|
39
|
+
sort = defaultSortByAlpha;
|
|
40
|
+
} else {
|
|
41
|
+
sort = alpha.booleanValue();
|
|
42
|
+
}
|
|
43
|
+
// no sorting? no need to shuffle, then
|
|
44
|
+
if (!sort && creatorProps.isEmpty() && propertyOrder == null) {
|
|
45
|
+
return props;
|
|
46
|
+
}
|
|
47
|
+
int size = props.size();
|
|
48
|
+
Map<String,T> all;
|
|
49
|
+
// Need to (re)sort alphabetically?
|
|
50
|
+
if (sort) {
|
|
51
|
+
all = new TreeMap<String,T>();
|
|
52
|
+
} else {
|
|
53
|
+
all = new LinkedHashMap<String,T>(size+size);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
for (T w : props) {
|
|
57
|
+
all.put(w.getName(), w);
|
|
58
|
+
}
|
|
59
|
+
Map<String,T> ordered = new LinkedHashMap<String,T>(size+size);
|
|
60
|
+
// Ok: primarily by explicit order
|
|
61
|
+
if (propertyOrder != null) {
|
|
62
|
+
for (String name : propertyOrder) {
|
|
63
|
+
T w = all.get(name);
|
|
64
|
+
if (w != null) {
|
|
65
|
+
ordered.put(name, w);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// And secondly by sorting Creator properties before other unordered properties
|
|
70
|
+
for (String name : creatorProps) {
|
|
71
|
+
T w = all.get(name);
|
|
72
|
+
if (w != null) {
|
|
73
|
+
ordered.put(name, w);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// And finally whatever is left (trying to put again will not change ordering)
|
|
77
|
+
ordered.putAll(all);
|
|
78
|
+
return new ArrayList<T>(ordered.values());
|
|
79
|
+
}
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
/*
|
|
83
|
+
/**********************************************************
|
|
84
|
+
/* Handling "getter" names
|
|
85
|
+
/**********************************************************
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
public static String okNameForGetter(AnnotatedMethod am)
|
|
89
|
+
{
|
|
90
|
+
String name = am.getName();
|
|
91
|
+
String str = okNameForIsGetter(am, name);
|
|
92
|
+
if (str == null) {
|
|
93
|
+
str = okNameForRegularGetter(am, name);
|
|
94
|
+
}
|
|
95
|
+
return str;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
public static String okNameForRegularGetter(AnnotatedMethod am, String name)
|
|
99
|
+
{
|
|
100
|
+
if (name.startsWith("get")) {
|
|
101
|
+
/* 16-Feb-2009, tatu: To handle [JACKSON-53], need to block
|
|
102
|
+
* CGLib-provided method "getCallbacks". Not sure of exact
|
|
103
|
+
* safe criteria to get decent coverage without false matches;
|
|
104
|
+
* but for now let's assume there's no reason to use any
|
|
105
|
+
* such getter from CGLib.
|
|
106
|
+
* But let's try this approach...
|
|
107
|
+
*/
|
|
108
|
+
if ("getCallbacks".equals(name)) {
|
|
109
|
+
if (isCglibGetCallbacks(am)) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
} else if ("getMetaClass".equals(name)) {
|
|
113
|
+
/* 30-Apr-2009, tatu: [JACKSON-103], need to suppress
|
|
114
|
+
* serialization of a cyclic (and useless) reference
|
|
115
|
+
*/
|
|
116
|
+
if (isGroovyMetaClassGetter(am)) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return manglePropertyName(name.substring(3));
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
public static String okNameForIsGetter(AnnotatedMethod am, String name)
|
|
126
|
+
{
|
|
127
|
+
if (name.startsWith("is")) {
|
|
128
|
+
// plus, must return boolean...
|
|
129
|
+
Class<?> rt = am.getRawType();
|
|
130
|
+
if (rt != Boolean.class && rt != Boolean.TYPE) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
return manglePropertyName(name.substring(2));
|
|
134
|
+
}
|
|
135
|
+
// no, not a match by name
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
public static String okNameForSetter(AnnotatedMethod am)
|
|
140
|
+
{
|
|
141
|
+
String name = am.getName();
|
|
142
|
+
if (name.startsWith("set")) {
|
|
143
|
+
name = manglePropertyName(name.substring(3));
|
|
144
|
+
if (name == null) { // plain old "set" is no good...
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
if ("metaClass".equals(name)) {
|
|
148
|
+
// 26-Nov-2009 [JACSON-103], need to suppress this internal groovy method
|
|
149
|
+
if (isGroovyMetaClassSetter(am)) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return name;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/*
|
|
159
|
+
/**********************************************************
|
|
160
|
+
/* Helper methods for bean property name handling
|
|
161
|
+
/**********************************************************
|
|
162
|
+
*/
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* This method was added to address [JACKSON-53]: need to weed out
|
|
166
|
+
* CGLib-injected "getCallbacks".
|
|
167
|
+
* At this point caller has detected a potential getter method
|
|
168
|
+
* with name "getCallbacks" and we need to determine if it is
|
|
169
|
+
* indeed injectect by Cglib. We do this by verifying that the
|
|
170
|
+
* result type is "net.sf.cglib.proxy.Callback[]"
|
|
171
|
+
*<p>
|
|
172
|
+
* Also, see [JACKSON-177]; Hibernate may repackage cglib
|
|
173
|
+
* it uses, so we better catch that too
|
|
174
|
+
*/
|
|
175
|
+
protected static boolean isCglibGetCallbacks(AnnotatedMethod am)
|
|
176
|
+
{
|
|
177
|
+
Class<?> rt = am.getRawType();
|
|
178
|
+
// Ok, first: must return an array type
|
|
179
|
+
if (rt == null || !rt.isArray()) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
/* And that type needs to be "net.sf.cglib.proxy.Callback".
|
|
183
|
+
* Theoretically could just be a type that implements it, but
|
|
184
|
+
* for now let's keep things simple, fix if need be.
|
|
185
|
+
*/
|
|
186
|
+
Class<?> compType = rt.getComponentType();
|
|
187
|
+
// Actually, let's just verify it's a "net.sf.cglib.*" class/interface
|
|
188
|
+
Package pkg = compType.getPackage();
|
|
189
|
+
if (pkg != null) {
|
|
190
|
+
String pname = pkg.getName();
|
|
191
|
+
if (pname.startsWith("net.sf.cglib")
|
|
192
|
+
// also, as per [JACKSON-177]
|
|
193
|
+
|| pname.startsWith("org.hibernate.repackage.cglib")) {
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Similar to {@link #isCglibGetCallbacks}, need to suppress
|
|
202
|
+
* a cyclic reference to resolve [JACKSON-103]
|
|
203
|
+
*/
|
|
204
|
+
protected static boolean isGroovyMetaClassSetter(AnnotatedMethod am)
|
|
205
|
+
{
|
|
206
|
+
Class<?> argType = am.getParameterClass(0);
|
|
207
|
+
Package pkg = argType.getPackage();
|
|
208
|
+
if (pkg != null && pkg.getName().startsWith("groovy.lang")) {
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Another helper method to deal with rest of [JACKSON-103]
|
|
216
|
+
*/
|
|
217
|
+
protected static boolean isGroovyMetaClassGetter(AnnotatedMethod am)
|
|
218
|
+
{
|
|
219
|
+
Class<?> rt = am.getRawType();
|
|
220
|
+
if (rt == null || rt.isArray()) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
Package pkg = rt.getPackage();
|
|
224
|
+
if (pkg != null && pkg.getName().startsWith("groovy.lang")) {
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Method called to figure out name of the property, given
|
|
232
|
+
* corresponding suggested name based on a method or field name.
|
|
233
|
+
*
|
|
234
|
+
* @param basename Name of accessor/mutator method, not including prefix
|
|
235
|
+
* ("get"/"is"/"set")
|
|
236
|
+
*/
|
|
237
|
+
protected static String manglePropertyName(String basename)
|
|
238
|
+
{
|
|
239
|
+
int len = basename.length();
|
|
240
|
+
|
|
241
|
+
// First things first: empty basename is no good
|
|
242
|
+
if (len == 0) {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
// otherwise, lower case initial chars
|
|
246
|
+
StringBuilder sb = null;
|
|
247
|
+
for (int i = 0; i < len; ++i) {
|
|
248
|
+
char upper = basename.charAt(i);
|
|
249
|
+
char lower = Character.toLowerCase(upper);
|
|
250
|
+
if (upper == lower) {
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
if (sb == null) {
|
|
254
|
+
sb = new StringBuilder(basename);
|
|
255
|
+
}
|
|
256
|
+
sb.setCharAt(i, lower);
|
|
257
|
+
}
|
|
258
|
+
return (sb == null) ? basename : sb.toString();
|
|
259
|
+
}
|
|
260
|
+
}
|
data/test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/map/util/ClassUtil.java
ADDED
|
@@ -0,0 +1,645 @@
|
|
|
1
|
+
package sh.calaba.org.codehaus.jackson.map.util;
|
|
2
|
+
|
|
3
|
+
import java.lang.reflect.*;
|
|
4
|
+
import java.util.*;
|
|
5
|
+
|
|
6
|
+
public final class ClassUtil
|
|
7
|
+
{
|
|
8
|
+
/*
|
|
9
|
+
/**********************************************************
|
|
10
|
+
/* Methods that deal with inheritance
|
|
11
|
+
/**********************************************************
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Method that will find all sub-classes and implemented interfaces
|
|
16
|
+
* of a given class or interface. Classes are listed in order of
|
|
17
|
+
* precedence, starting with the immediate super-class, followed by
|
|
18
|
+
* interfaces class directly declares to implemented, and then recursively
|
|
19
|
+
* followed by parent of super-class and so forth.
|
|
20
|
+
* Note that <code>Object.class</code> is not included in the list
|
|
21
|
+
* regardless of whether <code>endBefore</code> argument is defined or not.
|
|
22
|
+
*
|
|
23
|
+
* @param endBefore Super-type to NOT include in results, if any; when
|
|
24
|
+
* encountered, will be ignored (and no super types are checked).
|
|
25
|
+
*/
|
|
26
|
+
public static List<Class<?>> findSuperTypes(Class<?> cls, Class<?> endBefore)
|
|
27
|
+
{
|
|
28
|
+
return findSuperTypes(cls, endBefore, new ArrayList<Class<?>>(8));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public static List<Class<?>> findSuperTypes(Class<?> cls, Class<?> endBefore, List<Class<?>> result)
|
|
32
|
+
{
|
|
33
|
+
_addSuperTypes(cls, endBefore, result, false);
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private static void _addSuperTypes(Class<?> cls, Class<?> endBefore, Collection<Class<?>> result, boolean addClassItself)
|
|
38
|
+
{
|
|
39
|
+
if (cls == endBefore || cls == null || cls == Object.class) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (addClassItself) {
|
|
43
|
+
if (result.contains(cls)) { // already added, no need to check supers
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
result.add(cls);
|
|
47
|
+
}
|
|
48
|
+
for (Class<?> intCls : cls.getInterfaces()) {
|
|
49
|
+
_addSuperTypes(intCls, endBefore, result, true);
|
|
50
|
+
}
|
|
51
|
+
_addSuperTypes(cls.getSuperclass(), endBefore, result, true);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/*
|
|
55
|
+
/**********************************************************
|
|
56
|
+
/* Class type detection methods
|
|
57
|
+
/**********************************************************
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @return Null if class might be a bean; type String (that identifies
|
|
62
|
+
* why it's not a bean) if not
|
|
63
|
+
*/
|
|
64
|
+
public static String canBeABeanType(Class<?> type)
|
|
65
|
+
{
|
|
66
|
+
// First: language constructs that ain't beans:
|
|
67
|
+
if (type.isAnnotation()) {
|
|
68
|
+
return "annotation";
|
|
69
|
+
}
|
|
70
|
+
if (type.isArray()) {
|
|
71
|
+
return "array";
|
|
72
|
+
}
|
|
73
|
+
if (type.isEnum()) {
|
|
74
|
+
return "enum";
|
|
75
|
+
}
|
|
76
|
+
if (type.isPrimitive()) {
|
|
77
|
+
return "primitive";
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Anything else? Seems valid, then
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @deprecated since 1.9, use variant that takes second argument
|
|
86
|
+
*/
|
|
87
|
+
@Deprecated
|
|
88
|
+
public static String isLocalType(Class<?> type) {
|
|
89
|
+
return isLocalType(type, false);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @since 1.9
|
|
94
|
+
*/
|
|
95
|
+
public static String isLocalType(Class<?> type, boolean allowNonStatic)
|
|
96
|
+
{
|
|
97
|
+
/* As per [JACKSON-187], GAE seems to throw SecurityExceptions
|
|
98
|
+
* here and there... and GAE itself has a bug, too
|
|
99
|
+
* (see []). Bah. So we need to catch some wayward exceptions on GAE
|
|
100
|
+
*/
|
|
101
|
+
try {
|
|
102
|
+
// one more: method locals, anonymous, are not good:
|
|
103
|
+
if (type.getEnclosingMethod() != null) {
|
|
104
|
+
return "local/anonymous";
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* But how about non-static inner classes? Can't construct
|
|
108
|
+
* easily (theoretically, we could try to check if parent
|
|
109
|
+
* happens to be enclosing... but that gets convoluted)
|
|
110
|
+
*/
|
|
111
|
+
if (!allowNonStatic) {
|
|
112
|
+
if (type.getEnclosingClass() != null) {
|
|
113
|
+
if (!Modifier.isStatic(type.getModifiers())) {
|
|
114
|
+
return "non-static member class";
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (SecurityException e) { }
|
|
120
|
+
catch (NullPointerException e) { }
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Method for finding enclosing class for non-static inner classes
|
|
126
|
+
*
|
|
127
|
+
* @since 1.9
|
|
128
|
+
*/
|
|
129
|
+
public static Class<?> getOuterClass(Class<?> type)
|
|
130
|
+
{
|
|
131
|
+
// as above, GAE has some issues...
|
|
132
|
+
try {
|
|
133
|
+
// one more: method locals, anonymous, are not good:
|
|
134
|
+
if (type.getEnclosingMethod() != null) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
if (!Modifier.isStatic(type.getModifiers())) {
|
|
138
|
+
return type.getEnclosingClass();
|
|
139
|
+
}
|
|
140
|
+
} catch (SecurityException e) { }
|
|
141
|
+
catch (NullPointerException e) { }
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Helper method used to weed out dynamic Proxy types; types that do
|
|
148
|
+
* not expose concrete method API that we could use to figure out
|
|
149
|
+
* automatic Bean (property) based serialization.
|
|
150
|
+
*/
|
|
151
|
+
public static boolean isProxyType(Class<?> type)
|
|
152
|
+
{
|
|
153
|
+
// Then: well-known proxy (etc) classes
|
|
154
|
+
if (Proxy.isProxyClass(type)) {
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
String name = type.getName();
|
|
158
|
+
// Hibernate uses proxies heavily as well:
|
|
159
|
+
if (name.startsWith("net.sf.cglib.proxy.")
|
|
160
|
+
|| name.startsWith("org.hibernate.proxy.")) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
// Not one of known proxies, nope:
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Helper method that checks if given class is a concrete one;
|
|
169
|
+
* that is, not an interface or abstract class.
|
|
170
|
+
*/
|
|
171
|
+
public static boolean isConcrete(Class<?> type)
|
|
172
|
+
{
|
|
173
|
+
int mod = type.getModifiers();
|
|
174
|
+
return (mod & (Modifier.INTERFACE | Modifier.ABSTRACT)) == 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @since 1.6
|
|
179
|
+
*/
|
|
180
|
+
public static boolean isConcrete(Member member)
|
|
181
|
+
{
|
|
182
|
+
int mod = member.getModifiers();
|
|
183
|
+
return (mod & (Modifier.INTERFACE | Modifier.ABSTRACT)) == 0;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
public static boolean isCollectionMapOrArray(Class<?> type)
|
|
187
|
+
{
|
|
188
|
+
if (type.isArray()) return true;
|
|
189
|
+
if (Collection.class.isAssignableFrom(type)) return true;
|
|
190
|
+
if (Map.class.isAssignableFrom(type)) return true;
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/*
|
|
195
|
+
/**********************************************************
|
|
196
|
+
/* Type name handling methods
|
|
197
|
+
/**********************************************************
|
|
198
|
+
*/
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Helper method used to construct appropriate description
|
|
202
|
+
* when passed either type (Class) or an instance; in latter
|
|
203
|
+
* case, class of instance is to be used.
|
|
204
|
+
*/
|
|
205
|
+
public static String getClassDescription(Object classOrInstance)
|
|
206
|
+
{
|
|
207
|
+
if (classOrInstance == null) {
|
|
208
|
+
return "unknown";
|
|
209
|
+
}
|
|
210
|
+
Class<?> cls = (classOrInstance instanceof Class<?>) ?
|
|
211
|
+
(Class<?>) classOrInstance : classOrInstance.getClass();
|
|
212
|
+
return cls.getName();
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/*
|
|
216
|
+
/**********************************************************
|
|
217
|
+
/* Method type detection methods
|
|
218
|
+
/**********************************************************
|
|
219
|
+
*/
|
|
220
|
+
|
|
221
|
+
public static boolean hasGetterSignature(Method m)
|
|
222
|
+
{
|
|
223
|
+
// First: static methods can't be getters
|
|
224
|
+
if (Modifier.isStatic(m.getModifiers())) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
// Must take no args
|
|
228
|
+
Class<?>[] pts = m.getParameterTypes();
|
|
229
|
+
if (pts != null && pts.length != 0) {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
// Can't be a void method
|
|
233
|
+
if (Void.TYPE == m.getReturnType()) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
// Otherwise looks ok:
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/*
|
|
241
|
+
/**********************************************************
|
|
242
|
+
/* Exception handling
|
|
243
|
+
/**********************************************************
|
|
244
|
+
*/
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Method that can be used to find the "root cause", innermost
|
|
248
|
+
* of chained (wrapped) exceptions.
|
|
249
|
+
*/
|
|
250
|
+
public static Throwable getRootCause(Throwable t)
|
|
251
|
+
{
|
|
252
|
+
while (t.getCause() != null) {
|
|
253
|
+
t = t.getCause();
|
|
254
|
+
}
|
|
255
|
+
return t;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Method that will unwrap root causes of given Throwable, and throw
|
|
260
|
+
* the innermost {@link Exception} or {@link Error} as is.
|
|
261
|
+
* This is useful in cases where mandatory wrapping is added, which
|
|
262
|
+
* is often done by Reflection API.
|
|
263
|
+
*
|
|
264
|
+
* @since 1.7
|
|
265
|
+
*/
|
|
266
|
+
public static void throwRootCause(Throwable t) throws Exception
|
|
267
|
+
{
|
|
268
|
+
t = getRootCause(t);
|
|
269
|
+
if (t instanceof Exception) {
|
|
270
|
+
throw (Exception) t;
|
|
271
|
+
}
|
|
272
|
+
throw (Error) t;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Method that will wrap 't' as an {@link IllegalArgumentException} if it
|
|
277
|
+
* is a checked exception; otherwise (runtime exception or error) throw as is
|
|
278
|
+
*/
|
|
279
|
+
public static void throwAsIAE(Throwable t)
|
|
280
|
+
{
|
|
281
|
+
throwAsIAE(t, t.getMessage());
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Method that will wrap 't' as an {@link IllegalArgumentException} (and with
|
|
286
|
+
* specified message) if it
|
|
287
|
+
* is a checked exception; otherwise (runtime exception or error) throw as is
|
|
288
|
+
*/
|
|
289
|
+
public static void throwAsIAE(Throwable t, String msg)
|
|
290
|
+
{
|
|
291
|
+
if (t instanceof RuntimeException) {
|
|
292
|
+
throw (RuntimeException) t;
|
|
293
|
+
}
|
|
294
|
+
if (t instanceof Error) {
|
|
295
|
+
throw (Error) t;
|
|
296
|
+
}
|
|
297
|
+
throw new IllegalArgumentException(msg, t);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Method that will locate the innermost exception for given Throwable;
|
|
302
|
+
* and then wrap it as an {@link IllegalArgumentException} if it
|
|
303
|
+
* is a checked exception; otherwise (runtime exception or error) throw as is
|
|
304
|
+
*/
|
|
305
|
+
public static void unwrapAndThrowAsIAE(Throwable t)
|
|
306
|
+
{
|
|
307
|
+
throwAsIAE(getRootCause(t));
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Method that will locate the innermost exception for given Throwable;
|
|
312
|
+
* and then wrap it as an {@link IllegalArgumentException} if it
|
|
313
|
+
* is a checked exception; otherwise (runtime exception or error) throw as is
|
|
314
|
+
*/
|
|
315
|
+
public static void unwrapAndThrowAsIAE(Throwable t, String msg)
|
|
316
|
+
{
|
|
317
|
+
throwAsIAE(getRootCause(t), msg);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/*
|
|
321
|
+
/**********************************************************
|
|
322
|
+
/* Instantiation
|
|
323
|
+
/**********************************************************
|
|
324
|
+
*/
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Method that can be called to try to create an instantiate of
|
|
328
|
+
* specified type. Instantiation is done using default no-argument
|
|
329
|
+
* constructor.
|
|
330
|
+
*
|
|
331
|
+
* @param canFixAccess Whether it is possible to try to change access
|
|
332
|
+
* rights of the default constructor (in case it is not publicly
|
|
333
|
+
* accessible) or not.
|
|
334
|
+
*
|
|
335
|
+
* @throws IllegalArgumentException If instantiation fails for any reason;
|
|
336
|
+
* except for cases where constructor throws an unchecked exception
|
|
337
|
+
* (which will be passed as is)
|
|
338
|
+
*/
|
|
339
|
+
public static <T> T createInstance(Class<T> cls, boolean canFixAccess)
|
|
340
|
+
throws IllegalArgumentException
|
|
341
|
+
{
|
|
342
|
+
Constructor<T> ctor = findConstructor(cls, canFixAccess);
|
|
343
|
+
if (ctor == null) {
|
|
344
|
+
throw new IllegalArgumentException("Class "+cls.getName()+" has no default (no arg) constructor");
|
|
345
|
+
}
|
|
346
|
+
try {
|
|
347
|
+
return ctor.newInstance();
|
|
348
|
+
} catch (Exception e) {
|
|
349
|
+
ClassUtil.unwrapAndThrowAsIAE(e, "Failed to instantiate class "+cls.getName()+", problem: "+e.getMessage());
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
public static <T> Constructor<T> findConstructor(Class<T> cls, boolean canFixAccess)
|
|
355
|
+
throws IllegalArgumentException
|
|
356
|
+
{
|
|
357
|
+
try {
|
|
358
|
+
Constructor<T> ctor = cls.getDeclaredConstructor();
|
|
359
|
+
if (canFixAccess) {
|
|
360
|
+
checkAndFixAccess(ctor);
|
|
361
|
+
} else {
|
|
362
|
+
// Has to be public...
|
|
363
|
+
if (!Modifier.isPublic(ctor.getModifiers())) {
|
|
364
|
+
throw new IllegalArgumentException("Default constructor for "+cls.getName()+" is not accessible (non-public?): not allowed to try modify access via Reflection: can not instantiate type");
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return ctor;
|
|
368
|
+
} catch (NoSuchMethodException e) {
|
|
369
|
+
;
|
|
370
|
+
} catch (Exception e) {
|
|
371
|
+
ClassUtil.unwrapAndThrowAsIAE(e, "Failed to find default constructor of class "+cls.getName()+", problem: "+e.getMessage());
|
|
372
|
+
}
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/*
|
|
377
|
+
/**********************************************************
|
|
378
|
+
/* Primitive type support
|
|
379
|
+
/**********************************************************
|
|
380
|
+
*/
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Helper method used to get default value for wrappers used for primitive types
|
|
384
|
+
* (0 for Integer etc)
|
|
385
|
+
*
|
|
386
|
+
* @since 1.6.1
|
|
387
|
+
*/
|
|
388
|
+
public static Object defaultValue(Class<?> cls)
|
|
389
|
+
{
|
|
390
|
+
if (cls == Integer.TYPE) {
|
|
391
|
+
return Integer.valueOf(0);
|
|
392
|
+
}
|
|
393
|
+
if (cls == Long.TYPE) {
|
|
394
|
+
return Long.valueOf(0L);
|
|
395
|
+
}
|
|
396
|
+
if (cls == Boolean.TYPE) {
|
|
397
|
+
return Boolean.FALSE;
|
|
398
|
+
}
|
|
399
|
+
if (cls == Double.TYPE) {
|
|
400
|
+
return Double.valueOf(0.0);
|
|
401
|
+
}
|
|
402
|
+
if (cls == Float.TYPE) {
|
|
403
|
+
return Float.valueOf(0.0f);
|
|
404
|
+
}
|
|
405
|
+
if (cls == Byte.TYPE) {
|
|
406
|
+
return Byte.valueOf((byte) 0);
|
|
407
|
+
}
|
|
408
|
+
if (cls == Short.TYPE) {
|
|
409
|
+
return Short.valueOf((short) 0);
|
|
410
|
+
}
|
|
411
|
+
if (cls == Character.TYPE) {
|
|
412
|
+
return '\0';
|
|
413
|
+
}
|
|
414
|
+
throw new IllegalArgumentException("Class "+cls.getName()+" is not a primitive type");
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* Helper method for finding wrapper type for given primitive type (why isn't
|
|
419
|
+
* there one in JDK?)
|
|
420
|
+
*
|
|
421
|
+
* @since 1.7.1
|
|
422
|
+
*/
|
|
423
|
+
public static Class<?> wrapperType(Class<?> primitiveType)
|
|
424
|
+
{
|
|
425
|
+
if (primitiveType == Integer.TYPE) {
|
|
426
|
+
return Integer.class;
|
|
427
|
+
}
|
|
428
|
+
if (primitiveType == Long.TYPE) {
|
|
429
|
+
return Long.class;
|
|
430
|
+
}
|
|
431
|
+
if (primitiveType == Boolean.TYPE) {
|
|
432
|
+
return Boolean.class;
|
|
433
|
+
}
|
|
434
|
+
if (primitiveType == Double.TYPE) {
|
|
435
|
+
return Double.class;
|
|
436
|
+
}
|
|
437
|
+
if (primitiveType == Float.TYPE) {
|
|
438
|
+
return Float.class;
|
|
439
|
+
}
|
|
440
|
+
if (primitiveType == Byte.TYPE) {
|
|
441
|
+
return Byte.class;
|
|
442
|
+
}
|
|
443
|
+
if (primitiveType == Short.TYPE) {
|
|
444
|
+
return Short.class;
|
|
445
|
+
}
|
|
446
|
+
if (primitiveType == Character.TYPE) {
|
|
447
|
+
return Character.class;
|
|
448
|
+
}
|
|
449
|
+
throw new IllegalArgumentException("Class "+primitiveType.getName()+" is not a primitive type");
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/*
|
|
453
|
+
/**********************************************************
|
|
454
|
+
/* Access checking/handling methods
|
|
455
|
+
/**********************************************************
|
|
456
|
+
*/
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Method called to check if we can use the passed method or constructor
|
|
460
|
+
* (wrt access restriction -- public methods can be called, others
|
|
461
|
+
* usually not); and if not, if there is a work-around for
|
|
462
|
+
* the problem.
|
|
463
|
+
*/
|
|
464
|
+
public static void checkAndFixAccess(Member member)
|
|
465
|
+
{
|
|
466
|
+
// We know all members are also accessible objects...
|
|
467
|
+
AccessibleObject ao = (AccessibleObject) member;
|
|
468
|
+
|
|
469
|
+
/* 14-Jan-2009, tatu: It seems safe and potentially beneficial to
|
|
470
|
+
* always to make it accessible (latter because it will force
|
|
471
|
+
* skipping checks we have no use for...), so let's always call it.
|
|
472
|
+
*/
|
|
473
|
+
//if (!ao.isAccessible()) {
|
|
474
|
+
try {
|
|
475
|
+
ao.setAccessible(true);
|
|
476
|
+
} catch (SecurityException se) {
|
|
477
|
+
/* 17-Apr-2009, tatu: Related to [JACKSON-101]: this can fail on
|
|
478
|
+
* platforms like EJB and Google App Engine); so let's
|
|
479
|
+
* only fail if we really needed it...
|
|
480
|
+
*/
|
|
481
|
+
if (!ao.isAccessible()) {
|
|
482
|
+
Class<?> declClass = member.getDeclaringClass();
|
|
483
|
+
throw new IllegalArgumentException("Can not access "+member+" (from class "+declClass.getName()+"; failed to set access: "+se.getMessage());
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
//}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/*
|
|
490
|
+
/**********************************************************
|
|
491
|
+
/* Enum type detection
|
|
492
|
+
/**********************************************************
|
|
493
|
+
*/
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* Helper method that can be used to dynamically figure out
|
|
497
|
+
* enumeration type of given {@link EnumSet}, without having
|
|
498
|
+
* access to its declaration.
|
|
499
|
+
* Code is needed to work around design flaw in JDK.
|
|
500
|
+
*
|
|
501
|
+
* @since 1.5
|
|
502
|
+
*/
|
|
503
|
+
public static Class<? extends Enum<?>> findEnumType(EnumSet<?> s)
|
|
504
|
+
{
|
|
505
|
+
// First things first: if not empty, easy to determine
|
|
506
|
+
if (!s.isEmpty()) {
|
|
507
|
+
return findEnumType(s.iterator().next());
|
|
508
|
+
}
|
|
509
|
+
// Otherwise need to locate using an internal field
|
|
510
|
+
return EnumTypeLocator.instance.enumTypeFor(s);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* Helper method that can be used to dynamically figure out
|
|
515
|
+
* enumeration type of given {@link EnumSet}, without having
|
|
516
|
+
* access to its declaration.
|
|
517
|
+
* Code is needed to work around design flaw in JDK.
|
|
518
|
+
*
|
|
519
|
+
* @since 1.5
|
|
520
|
+
*/
|
|
521
|
+
public static Class<? extends Enum<?>> findEnumType(EnumMap<?,?> m)
|
|
522
|
+
{
|
|
523
|
+
if (!m.isEmpty()) {
|
|
524
|
+
return findEnumType(m.keySet().iterator().next());
|
|
525
|
+
}
|
|
526
|
+
// Otherwise need to locate using an internal field
|
|
527
|
+
return EnumTypeLocator.instance.enumTypeFor(m);
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Helper method that can be used to dynamically figure out formal
|
|
532
|
+
* enumeration type (class) for given enumeration. This is either
|
|
533
|
+
* class of enum instance (for "simple" enumerations), or its
|
|
534
|
+
* superclass (for enums with instance fields or methods)
|
|
535
|
+
*/
|
|
536
|
+
@SuppressWarnings("unchecked")
|
|
537
|
+
public static Class<? extends Enum<?>> findEnumType(Enum<?> en)
|
|
538
|
+
{
|
|
539
|
+
// enums with "body" are sub-classes of the formal type
|
|
540
|
+
Class<?> ec = en.getClass();
|
|
541
|
+
if (ec.getSuperclass() != Enum.class) {
|
|
542
|
+
ec = ec.getSuperclass();
|
|
543
|
+
}
|
|
544
|
+
return (Class<? extends Enum<?>>) ec;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* Helper method that can be used to dynamically figure out formal
|
|
549
|
+
* enumeration type (class) for given class of an enumeration value.
|
|
550
|
+
* This is either class of enum instance (for "simple" enumerations),
|
|
551
|
+
* or its superclass (for enums with instance fields or methods)
|
|
552
|
+
*/
|
|
553
|
+
@SuppressWarnings("unchecked")
|
|
554
|
+
public static Class<? extends Enum<?>> findEnumType(Class<?> cls)
|
|
555
|
+
{
|
|
556
|
+
// enums with "body" are sub-classes of the formal type
|
|
557
|
+
if (cls.getSuperclass() != Enum.class) {
|
|
558
|
+
cls = cls.getSuperclass();
|
|
559
|
+
}
|
|
560
|
+
return (Class<? extends Enum<?>>) cls;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/*
|
|
564
|
+
/**********************************************************
|
|
565
|
+
/* Helper classes
|
|
566
|
+
/**********************************************************
|
|
567
|
+
*/
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Inner class used to contain gory details of how we can determine
|
|
571
|
+
* details of instances of common JDK types like {@link EnumMap}s.
|
|
572
|
+
*/
|
|
573
|
+
private static class EnumTypeLocator
|
|
574
|
+
{
|
|
575
|
+
final static EnumTypeLocator instance = new EnumTypeLocator();
|
|
576
|
+
|
|
577
|
+
private final Field enumSetTypeField;
|
|
578
|
+
private final Field enumMapTypeField;
|
|
579
|
+
|
|
580
|
+
private EnumTypeLocator() {
|
|
581
|
+
/* JDK uses following fields to store information about actual Enumeration
|
|
582
|
+
* type for EnumSets, EnumMaps...
|
|
583
|
+
*/
|
|
584
|
+
enumSetTypeField = locateField(EnumSet.class, "elementType", Class.class);
|
|
585
|
+
enumMapTypeField = locateField(EnumMap.class, "elementType", Class.class);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
@SuppressWarnings("unchecked")
|
|
589
|
+
public Class<? extends Enum<?>> enumTypeFor(EnumSet<?> set)
|
|
590
|
+
{
|
|
591
|
+
if (enumSetTypeField != null) {
|
|
592
|
+
return (Class<? extends Enum<?>>) get(set, enumSetTypeField);
|
|
593
|
+
}
|
|
594
|
+
throw new IllegalStateException("Can not figure out type for EnumSet (odd JDK platform?)");
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
@SuppressWarnings("unchecked")
|
|
598
|
+
public Class<? extends Enum<?>> enumTypeFor(EnumMap<?,?> set)
|
|
599
|
+
{
|
|
600
|
+
if (enumMapTypeField != null) {
|
|
601
|
+
return (Class<? extends Enum<?>>) get(set, enumMapTypeField);
|
|
602
|
+
}
|
|
603
|
+
throw new IllegalStateException("Can not figure out type for EnumMap (odd JDK platform?)");
|
|
604
|
+
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
private Object get(Object bean, Field field)
|
|
608
|
+
{
|
|
609
|
+
try {
|
|
610
|
+
return field.get(bean);
|
|
611
|
+
} catch (Exception e) {
|
|
612
|
+
throw new IllegalArgumentException(e);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
private static Field locateField(Class<?> fromClass, String expectedName, Class<?> type)
|
|
617
|
+
{
|
|
618
|
+
Field found = null;
|
|
619
|
+
// First: let's see if we can find exact match:
|
|
620
|
+
Field[] fields = fromClass.getDeclaredFields();
|
|
621
|
+
for (Field f : fields) {
|
|
622
|
+
if (expectedName.equals(f.getName()) && f.getType() == type) {
|
|
623
|
+
found = f;
|
|
624
|
+
break;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
// And if not, if there is just one field with the type, that field
|
|
628
|
+
if (found == null) {
|
|
629
|
+
for (Field f : fields) {
|
|
630
|
+
if (f.getType() == type) {
|
|
631
|
+
// If more than one, can't choose
|
|
632
|
+
if (found != null) return null;
|
|
633
|
+
found = f;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
if (found != null) { // it's non-public, need to force accessible
|
|
638
|
+
try {
|
|
639
|
+
found.setAccessible(true);
|
|
640
|
+
} catch (Throwable t) { }
|
|
641
|
+
}
|
|
642
|
+
return found;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|