1 package com.fasterxml.jackson.databind.cfg;
2
3 import com.fasterxml.jackson.databind.ser.*;
4 import com.fasterxml.jackson.databind.util.ArrayBuilders;
5 import com.fasterxml.jackson.databind.util.ArrayIterator;
6
7
11 public final class SerializerFactoryConfig
12 implements java.io.Serializable
13 {
14 private static final long serialVersionUID = 1L;
15
19 protected final static Serializers[] NO_SERIALIZERS = new Serializers[0];
20
21 protected final static BeanSerializerModifier[] NO_MODIFIERS = new BeanSerializerModifier[0];
22
23
27 protected final Serializers[] _additionalSerializers;
28
29
33 protected final Serializers[] _additionalKeySerializers;
34
35
39 protected final BeanSerializerModifier[] _modifiers;
40
41 public SerializerFactoryConfig() {
42 this(null, null, null);
43 }
44
45 protected SerializerFactoryConfig(Serializers[] allAdditionalSerializers,
46 Serializers[] allAdditionalKeySerializers,
47 BeanSerializerModifier[] modifiers)
48 {
49 _additionalSerializers = (allAdditionalSerializers == null) ?
50 NO_SERIALIZERS : allAdditionalSerializers;
51 _additionalKeySerializers = (allAdditionalKeySerializers == null) ?
52 NO_SERIALIZERS : allAdditionalKeySerializers;
53 _modifiers = (modifiers == null) ? NO_MODIFIERS : modifiers;
54 }
55
56 public SerializerFactoryConfig withAdditionalSerializers(Serializers additional)
57 {
58 if (additional == null) {
59 throw new IllegalArgumentException("Cannot pass null Serializers");
60 }
61 Serializers[] all = ArrayBuilders.insertInListNoDup(_additionalSerializers, additional);
62 return new SerializerFactoryConfig(all, _additionalKeySerializers, _modifiers);
63 }
64
65 public SerializerFactoryConfig withAdditionalKeySerializers(Serializers additional)
66 {
67 if (additional == null) {
68 throw new IllegalArgumentException("Cannot pass null Serializers");
69 }
70 Serializers[] all = ArrayBuilders.insertInListNoDup(_additionalKeySerializers, additional);
71 return new SerializerFactoryConfig(_additionalSerializers, all, _modifiers);
72 }
73
74 public SerializerFactoryConfig withSerializerModifier(BeanSerializerModifier modifier)
75 {
76 if (modifier == null) {
77 throw new IllegalArgumentException("Cannot pass null modifier");
78 }
79 BeanSerializerModifier[] modifiers = ArrayBuilders.insertInListNoDup(_modifiers, modifier);
80 return new SerializerFactoryConfig(_additionalSerializers, _additionalKeySerializers, modifiers);
81 }
82
83 public boolean hasSerializers() { return _additionalSerializers.length > 0; }
84 public boolean hasKeySerializers() { return _additionalKeySerializers.length > 0; }
85 public boolean hasSerializerModifiers() { return _modifiers.length > 0; }
86 public Iterable<Serializers> serializers() { return new ArrayIterator<Serializers>(_additionalSerializers); }
87 public Iterable<Serializers> keySerializers() { return new ArrayIterator<Serializers>(_additionalKeySerializers); }
88 public Iterable<BeanSerializerModifier> serializerModifiers() { return new ArrayIterator<BeanSerializerModifier>(_modifiers); }
89 }
90