calabash-android 0.4.7.pre6 → 0.4.7.pre7

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