Skip to content

Commit bf8f178

Browse files
committed
Refactoring to prepare for getting #4300 merged
1 parent 74379c0 commit bf8f178

File tree

1 file changed

+24
-32
lines changed

1 file changed

+24
-32
lines changed

src/main/java/com/fasterxml/jackson/databind/deser/impl/JDKValueInstantiators.java

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,36 @@ public static ValueInstantiator findStdValueInstantiator(DeserializationConfig c
5151
return null;
5252
}
5353

54-
private static class ArrayListInstantiator
54+
private abstract static class JDKValueInstantiator
5555
extends ValueInstantiator.Base
5656
implements java.io.Serializable
5757
{
58-
private static final long serialVersionUID = 2L;
58+
private static final long serialVersionUID = 2L;
5959

60-
public final static ArrayListInstantiator INSTANCE = new ArrayListInstantiator();
61-
public ArrayListInstantiator() {
62-
super(ArrayList.class);
60+
public JDKValueInstantiator(Class<?> type) {
61+
super(type);
6362
}
6463

6564
@Override
66-
public boolean canInstantiate() { return true; }
65+
public final boolean canInstantiate() { return true; }
6766

6867
@Override
69-
public boolean canCreateUsingDefault() { return true; }
68+
public final boolean canCreateUsingDefault() { return true; }
69+
70+
// Make abstract to force (re)implementation
71+
@Override
72+
public abstract Object createUsingDefault(DeserializationContext ctxt) throws IOException;
73+
}
74+
75+
private static class ArrayListInstantiator
76+
extends JDKValueInstantiator
77+
{
78+
private static final long serialVersionUID = 2L;
79+
80+
public final static ArrayListInstantiator INSTANCE = new ArrayListInstantiator();
81+
public ArrayListInstantiator() {
82+
super(ArrayList.class);
83+
}
7084

7185
@Override
7286
public Object createUsingDefault(DeserializationContext ctxt) throws IOException {
@@ -75,8 +89,7 @@ public Object createUsingDefault(DeserializationContext ctxt) throws IOException
7589
}
7690

7791
private static class HashMapInstantiator
78-
extends ValueInstantiator.Base
79-
implements java.io.Serializable
92+
extends JDKValueInstantiator
8093
{
8194
private static final long serialVersionUID = 2L;
8295

@@ -86,21 +99,14 @@ public HashMapInstantiator() {
8699
super(HashMap.class);
87100
}
88101

89-
@Override
90-
public boolean canInstantiate() { return true; }
91-
92-
@Override
93-
public boolean canCreateUsingDefault() { return true; }
94-
95102
@Override
96103
public Object createUsingDefault(DeserializationContext ctxt) throws IOException {
97104
return new HashMap<>();
98105
}
99106
}
100107

101108
private static class LinkedHashMapInstantiator
102-
extends ValueInstantiator.Base
103-
implements java.io.Serializable
109+
extends JDKValueInstantiator
104110
{
105111
private static final long serialVersionUID = 2L;
106112

@@ -110,21 +116,14 @@ public LinkedHashMapInstantiator() {
110116
super(LinkedHashMap.class);
111117
}
112118

113-
@Override
114-
public boolean canInstantiate() { return true; }
115-
116-
@Override
117-
public boolean canCreateUsingDefault() { return true; }
118-
119119
@Override
120120
public Object createUsingDefault(DeserializationContext ctxt) throws IOException {
121121
return new LinkedHashMap<>();
122122
}
123123
}
124124

125125
private static class ConstantValueInstantiator
126-
extends ValueInstantiator.Base
127-
implements java.io.Serializable
126+
extends JDKValueInstantiator
128127
{
129128
private static final long serialVersionUID = 2L;
130129

@@ -135,16 +134,9 @@ public ConstantValueInstantiator(Object value) {
135134
_value = value;
136135
}
137136

138-
@Override // yes, since default ctor works
139-
public boolean canInstantiate() { return true; }
140-
141-
@Override
142-
public boolean canCreateUsingDefault() { return true; }
143-
144137
@Override
145138
public Object createUsingDefault(DeserializationContext ctxt) throws IOException {
146139
return _value;
147140
}
148141
}
149-
150142
}

0 commit comments

Comments
 (0)