|
1 | 1 | package com.fasterxml.jackson.databind.deser.impl;
|
2 | 2 |
|
3 |
| -import java.lang.reflect.AnnotatedElement; |
4 | 3 | import java.lang.reflect.Member;
|
5 |
| -import java.lang.reflect.Type; |
6 | 4 | import java.util.*;
|
7 | 5 |
|
8 | 6 | import com.fasterxml.jackson.databind.*;
|
@@ -91,14 +89,8 @@ public ValueInstantiator constructValueInstantiator(DeserializationContext ctxt)
|
91 | 89 | _creators[C_ARRAY_DELEGATE], _arrayDelegateArgs);
|
92 | 90 | final JavaType type = _beanDesc.getType();
|
93 | 91 |
|
94 |
| - // 11-Jul-2016, tatu: Earlier optimization by replacing the whole |
95 |
| - // instantiator did not |
96 |
| - // work well, so let's replace by lower-level check: |
97 |
| - AnnotatedWithParams defaultCtor = StdTypeConstructor |
98 |
| - .tryToOptimize(_creators[C_DEFAULT]); |
99 |
| - |
100 | 92 | StdValueInstantiator inst = new StdValueInstantiator(config, type);
|
101 |
| - inst.configureFromObjectSettings(defaultCtor, _creators[C_DELEGATE], |
| 93 | + inst.configureFromObjectSettings(_creators[C_DEFAULT], _creators[C_DELEGATE], |
102 | 94 | delegateType, _delegateArgs, _creators[C_PROPS],
|
103 | 95 | _propertyBasedArgs);
|
104 | 96 | inst.configureFromArraySettings(_creators[C_ARRAY_DELEGATE],
|
@@ -347,170 +339,4 @@ protected boolean _isEnumValueOf(AnnotatedWithParams creator) {
|
347 | 339 | return creator.getDeclaringClass().isEnum()
|
348 | 340 | && "valueOf".equals(creator.getName());
|
349 | 341 | }
|
350 |
| - |
351 |
| - /* |
352 |
| - /********************************************************** |
353 |
| - /* Helper class(es) |
354 |
| - /********************************************************** |
355 |
| - */ |
356 |
| - |
357 |
| - /** |
358 |
| - * Replacement for default constructor to use for a small set of |
359 |
| - * "well-known" types. |
360 |
| - * <p> |
361 |
| - * Note: replaces earlier <code>Vanilla</code> |
362 |
| - * <code>ValueInstantiator</code> implementation |
363 |
| - * |
364 |
| - * @since 2.8.1 (replacing earlier <code>Vanilla</code> instantiator |
365 |
| - */ |
366 |
| - protected final static class StdTypeConstructor extends AnnotatedWithParams |
367 |
| - implements java.io.Serializable { |
368 |
| - private static final long serialVersionUID = 1L; |
369 |
| - |
370 |
| - public final static int TYPE_ARRAY_LIST = 1; |
371 |
| - public final static int TYPE_HASH_MAP = 2; |
372 |
| - public final static int TYPE_LINKED_HASH_MAP = 3; |
373 |
| - |
374 |
| - private final AnnotatedWithParams _base; |
375 |
| - |
376 |
| - private final int _type; |
377 |
| - |
378 |
| - public StdTypeConstructor(AnnotatedWithParams base, int t) { |
379 |
| - super(base, null); |
380 |
| - _base = base; |
381 |
| - _type = t; |
382 |
| - } |
383 |
| - |
384 |
| - public static AnnotatedWithParams tryToOptimize( |
385 |
| - AnnotatedWithParams src) { |
386 |
| - if (src != null) { |
387 |
| - final Class<?> rawType = src.getDeclaringClass(); |
388 |
| - if (rawType == List.class || rawType == ArrayList.class) { |
389 |
| - return new StdTypeConstructor(src, TYPE_ARRAY_LIST); |
390 |
| - } |
391 |
| - if (rawType == LinkedHashMap.class) { |
392 |
| - return new StdTypeConstructor(src, TYPE_LINKED_HASH_MAP); |
393 |
| - } |
394 |
| - if (rawType == HashMap.class) { |
395 |
| - return new StdTypeConstructor(src, TYPE_HASH_MAP); |
396 |
| - } |
397 |
| - } |
398 |
| - return src; |
399 |
| - } |
400 |
| - |
401 |
| - protected final Object _construct() { |
402 |
| - switch (_type) { |
403 |
| - case TYPE_ARRAY_LIST: |
404 |
| - return new ArrayList<Object>(); |
405 |
| - case TYPE_LINKED_HASH_MAP: |
406 |
| - return new LinkedHashMap<String, Object>(); |
407 |
| - case TYPE_HASH_MAP: |
408 |
| - return new HashMap<String, Object>(); |
409 |
| - } |
410 |
| - throw new IllegalStateException("Unknown type " + _type); |
411 |
| - } |
412 |
| - |
413 |
| - @Override |
414 |
| - public int getParameterCount() { |
415 |
| - return _base.getParameterCount(); |
416 |
| - } |
417 |
| - |
418 |
| - @Override |
419 |
| - public Class<?> getRawParameterType(int index) { |
420 |
| - return _base.getRawParameterType(index); |
421 |
| - } |
422 |
| - |
423 |
| - @Override |
424 |
| - public JavaType getParameterType(int index) { |
425 |
| - return _base.getParameterType(index); |
426 |
| - } |
427 |
| - |
428 |
| - @Override |
429 |
| - @Deprecated |
430 |
| - public Type getGenericParameterType(int index) { |
431 |
| - return _base.getGenericParameterType(index); |
432 |
| - } |
433 |
| - |
434 |
| - @Override |
435 |
| - public Object call() throws Exception { |
436 |
| - return _construct(); |
437 |
| - } |
438 |
| - |
439 |
| - @Override |
440 |
| - public Object call(Object[] args) throws Exception { |
441 |
| - return _construct(); |
442 |
| - } |
443 |
| - |
444 |
| - @Override |
445 |
| - public Object call1(Object arg) throws Exception { |
446 |
| - return _construct(); |
447 |
| - } |
448 |
| - |
449 |
| - @Override |
450 |
| - public Class<?> getDeclaringClass() { |
451 |
| - return _base.getDeclaringClass(); |
452 |
| - } |
453 |
| - |
454 |
| - @Override |
455 |
| - public Member getMember() { |
456 |
| - return _base.getMember(); |
457 |
| - } |
458 |
| - |
459 |
| - @Override |
460 |
| - public void setValue(Object pojo, Object value) |
461 |
| - throws UnsupportedOperationException, IllegalArgumentException { |
462 |
| - throw new UnsupportedOperationException(); |
463 |
| - } |
464 |
| - |
465 |
| - @Override |
466 |
| - public Object getValue(Object pojo) |
467 |
| - throws UnsupportedOperationException, IllegalArgumentException { |
468 |
| - throw new UnsupportedOperationException(); |
469 |
| - } |
470 |
| - |
471 |
| - @Override |
472 |
| - public Annotated withAnnotations(AnnotationMap fallback) { |
473 |
| - throw new UnsupportedOperationException(); |
474 |
| - } |
475 |
| - |
476 |
| - @Override |
477 |
| - public AnnotatedElement getAnnotated() { |
478 |
| - return _base.getAnnotated(); |
479 |
| - } |
480 |
| - |
481 |
| - @Override |
482 |
| - protected int getModifiers() { |
483 |
| - return _base.getMember().getModifiers(); |
484 |
| - } |
485 |
| - |
486 |
| - @Override |
487 |
| - public String getName() { |
488 |
| - return _base.getName(); |
489 |
| - } |
490 |
| - |
491 |
| - @Override |
492 |
| - public JavaType getType() { |
493 |
| - return _base.getType(); |
494 |
| - } |
495 |
| - |
496 |
| - @Override |
497 |
| - public Class<?> getRawType() { |
498 |
| - return _base.getRawType(); |
499 |
| - } |
500 |
| - |
501 |
| - @Override |
502 |
| - public boolean equals(Object o) { |
503 |
| - return (o == this); |
504 |
| - } |
505 |
| - |
506 |
| - @Override |
507 |
| - public int hashCode() { |
508 |
| - return _base.hashCode(); |
509 |
| - } |
510 |
| - |
511 |
| - @Override |
512 |
| - public String toString() { |
513 |
| - return _base.toString(); |
514 |
| - } |
515 |
| - } |
516 | 342 | }
|
0 commit comments