|
45 | 45 | import java.util.TreeSet;
|
46 | 46 |
|
47 | 47 | import com.esotericsoftware.kryo.serializers.DefaultSerializers.URLSerializer;
|
| 48 | +import com.esotericsoftware.kryo.serializers.FieldSerializer.FieldSerializerConfig; |
48 | 49 | import com.esotericsoftware.kryo.serializers.OptionalSerializers;
|
49 | 50 | import com.esotericsoftware.kryo.serializers.GenericsResolver;
|
50 | 51 | import com.esotericsoftware.kryo.serializers.TimeSerializers;
|
@@ -143,12 +144,11 @@ public class Kryo {
|
143 | 144 |
|
144 | 145 | private int copyDepth;
|
145 | 146 | private boolean copyShallow;
|
146 |
| - private boolean copyTransient = true; |
147 | 147 | private IdentityMap originalToCopy;
|
148 | 148 | private Object needsCopyReference;
|
149 | 149 | private GenericsResolver genericsResolver = new GenericsResolver();
|
150 |
| - /** Tells if ASM-based backend should be used by new serializer instances created using this Kryo instance. */ |
151 |
| - private boolean asmEnabled = false; |
| 150 | + |
| 151 | + private FieldSerializerConfig fieldSerializerConfig = new FieldSerializerConfig(); |
152 | 152 |
|
153 | 153 | private StreamFactory streamFactory;
|
154 | 154 |
|
@@ -1058,22 +1058,11 @@ public void setCopyReferences (boolean copyReferences) {
|
1058 | 1058 | this.copyReferences = copyReferences;
|
1059 | 1059 | }
|
1060 | 1060 |
|
1061 |
| - /** |
1062 |
| - * If false, when {@link #copy(Object)} is called all transient fields that are accessible will be ignored from |
1063 |
| - * being copied. This has to be set before registering classes with kryo for it to be used by all field |
1064 |
| - * serializers. If transient fields has to be copied for specific classes then use {@link FieldSerializer#setCopyTransient(boolean)}. |
1065 |
| - * Default is true. |
1066 |
| - */ |
1067 |
| - public void setCopyTransient(boolean copyTransient) { |
1068 |
| - this.copyTransient = copyTransient; |
1069 |
| - } |
1070 |
| - |
1071 |
| - /** |
1072 |
| - * Returns true if copying of transient fields is enabled for {@link #copy(Object)}. |
1073 |
| - * @return true if transient field copy is enable |
1074 |
| - */ |
1075 |
| - public boolean getCopyTransient() { |
1076 |
| - return copyTransient; |
| 1061 | + /** The default configuration for {@link FieldSerializer} instances. Already existing serializer instances (e.g. |
| 1062 | + * implicitely created for already registered classes) are not affected by this configuration. You can override |
| 1063 | + * the configuration for a single {@link FieldSerializer}. */ |
| 1064 | + public FieldSerializerConfig getFieldSerializerConfig() { |
| 1065 | + return fieldSerializerConfig; |
1077 | 1066 | }
|
1078 | 1067 |
|
1079 | 1068 | /** Sets the reference resolver and enables references. */
|
@@ -1209,13 +1198,18 @@ public void setStreamFactory (StreamFactory streamFactory) {
|
1209 | 1198 | * </p>
|
1210 | 1199 | *
|
1211 | 1200 | * @param flag if true, ASM-based backend will be used. Otherwise Unsafe-based backend could be used by some serializers, e.g.
|
1212 |
| - * FieldSerializer */ |
| 1201 | + * FieldSerializer |
| 1202 | + * |
| 1203 | + * @deprecated Use {@link #getFieldSerializerConfig()} to change the default {@link FieldSerializer} configuration. */ |
| 1204 | + @Deprecated |
1213 | 1205 | public void setAsmEnabled (boolean flag) {
|
1214 |
| - this.asmEnabled = flag; |
| 1206 | + fieldSerializerConfig.setUseAsm(flag); |
1215 | 1207 | }
|
1216 | 1208 |
|
| 1209 | + /** @deprecated Use {@link #getFieldSerializerConfig()} to change the default {@link FieldSerializer} configuration. */ |
| 1210 | + @Deprecated |
1217 | 1211 | public boolean getAsmEnabled () {
|
1218 |
| - return asmEnabled; |
| 1212 | + return fieldSerializerConfig.isUseAsm(); |
1219 | 1213 | }
|
1220 | 1214 |
|
1221 | 1215 | static public class DefaultInstantiatorStrategy implements org.objenesis.strategy.InstantiatorStrategy {
|
|
0 commit comments