35
35
* using Jackson. This format is resolvable with {@link io.cloudevents.core.provider.EventFormatProvider} using the content type {@link #CONTENT_TYPE}.
36
36
* <p>
37
37
* If you want to use the {@link CloudEvent} serializers/deserializers directly in your mapper, you can use {@link #getCloudEventJacksonModule()} or
38
- * {@link #getCloudEventJacksonModule(boolean, boolean, boolean, boolean )} to get a {@link SimpleModule} to register in your {@link ObjectMapper} instance.
38
+ * {@link #getCloudEventJacksonModule(boolean, boolean)} to get a {@link SimpleModule} to register in your {@link ObjectMapper} instance.
39
39
*/
40
40
public final class JsonFormat implements EventFormat {
41
41
@@ -45,60 +45,54 @@ public final class JsonFormat implements EventFormat {
45
45
public static final String CONTENT_TYPE = "application/cloudevents+json" ;
46
46
47
47
private final ObjectMapper mapper ;
48
- private final boolean forceDataBase64Serialization ;
49
- private final boolean forceStringSerialization ;
50
- private final boolean forceExtensionNameLowerCaseDeserialization ;
51
- private final boolean forceIgnoreInvalidExtensionNameDeserialization ;
48
+ private final JsonFormatOptions options ;
52
49
53
50
/**
54
51
* Create a new instance of this class customizing the serialization configuration.
55
52
*
56
53
* @param forceDataBase64Serialization force json base64 encoding for data
57
54
* @param forceStringSerialization force string serialization for non json data field
58
- * @param forceExtensionNameLowerCaseDeserialization force extension name deserialization for lower case
59
- * @param forceIgnoreInvalidExtensionNameDeserialization force extension name deserialization for ignoring invalid name
60
55
* @see #withForceJsonDataToBase64()
61
56
* @see #withForceNonJsonDataToString()
62
- * @see #withForceExtensionNameLowerCaseDeserialization()
63
- * @see #withForceIgnoreInvalidExtensionNameDeserialization()
64
57
*/
65
- public JsonFormat (
66
- boolean forceDataBase64Serialization ,
67
- boolean forceStringSerialization ,
68
- boolean forceExtensionNameLowerCaseDeserialization ,
69
- boolean forceIgnoreInvalidExtensionNameDeserialization
70
- ) {
71
- this .mapper = new ObjectMapper ();
72
- this .mapper .registerModule (
73
- getCloudEventJacksonModule (
74
- forceDataBase64Serialization ,
75
- forceStringSerialization ,
76
- forceExtensionNameLowerCaseDeserialization ,
77
- forceIgnoreInvalidExtensionNameDeserialization
78
- )
58
+ public JsonFormat (boolean forceDataBase64Serialization , boolean forceStringSerialization ) {
59
+ this (
60
+ JsonFormatOptions .builder ()
61
+ .forceDataBase64Serialization (forceDataBase64Serialization )
62
+ .forceStringSerialization (forceStringSerialization )
63
+ .build ()
79
64
);
80
- this .forceDataBase64Serialization = forceDataBase64Serialization ;
81
- this .forceStringSeri
10000
alization = forceStringSerialization ;
82
- this .forceExtensionNameLowerCaseDeserialization = forceExtensionNameLowerCaseDeserialization ;
83
- this .forceIgnoreInvalidExtensionNameDeserialization = forceIgnoreInvalidExtensionNameDeserialization ;
65
+ }
66
+
67
+ /**
68
+ * Create a new instance of this class customizing the serialization configuration.
69
+ *
70
+ * @param options json serialization / deserialization options
71
+ */
72
+ public JsonFormat (JsonFormatOptions options ) {
73
+ this .mapper = new ObjectMapper ();
74
+ this .mapper .registerModule (getCloudEventJacksonModule (options ));
75
+ this .options = options ;
84
76
}
85
77
86
78
/**
87
79
* Create a new instance of this class with default serialization configuration
88
80
*/
89
81
public JsonFormat () {
90
- this (false , false , false , false );
82
+ this (new JsonFormatOptions () );
91
83
}
92
84
93
85
/**
94
86
* @return a copy of this JsonFormat that serialize events with json data with Base64 encoding
95
87
*/
96
88
public JsonFormat withForceJsonDataToBase64 () {
97
89
return new JsonFormat (
98
- true ,
99
- this .forceStringSerialization ,
100
- this .forceExtensionNameLowerCaseDeserialization ,
101
- this .forceIgnoreInvalidExtensionNameDeserialization
90
+ JsonFormatOptions .builder ()
91
+ .forceDataBase64Serialization (true )
92
+ .forceStringSerialization (this .options .isForceStringSerialization ())
93
+ .forceExtensionNameLowerCaseDeserialization (this .options .isForceExtensionNameLowerCaseDeserialization ())
94
+ .forceIgnoreInvalidExtensionNameDeserialization (this .options .isForceIgnoreInvalidExtensionNameDeserialization ())
95
+ .build ()
102
96
);
103
97
}
104
98
@@ -107,10 +101,12 @@ public JsonFormat withForceJsonDataToBase64() {
107
101
*/
108
102
public JsonFormat withForceNonJsonDataToString () {
109
103
return new JsonFormat (
110
- this .forceDataBase64Serialization ,
111
- true ,
112
- this .forceExtensionNameLowerCaseDeserialization ,
113
- this .forceIgnoreInvalidExtensionNameDeserialization
104
+ JsonFormatOptions .builder ()
105
+ .forceDataBase64Serialization (this .options .isForceDataBase64Serialization ())
106
+ .forceStringSerialization (true )
107
+ .forceExtensionNameLowerCaseDeserialization (this .options .isForceExtensionNameLowerCaseDeserialization ())
108
+ .forceIgnoreInvalidExtensionNameDeserialization (this .options .isForceIgnoreInvalidExtensionNameDeserialization ())
109
+ .build ()
114
110
);
115
111
}
116
112
@@ -119,10 +115,12 @@ public JsonFormat withForceNonJsonDataToString() {
119
115
*/
120
116
public JsonFormat withForceExtensionNameLowerCaseDeserialization () {
121
117
return new JsonFormat (
122
- this .forceDataBase64Serialization ,
123
- this .forceStringSerialization ,
124
- true ,
125
- this .forceIgnoreInvalidExtensionNameDeserialization
118
+ JsonFormatOptions .builder ()
119
+ .forceDataBase64Serialization (this .options .isForceDataBase64Serialization ())
120
+ .forceStringSerialization (this .options .isForceStringSerialization ())
121
+ .forceExtensionNameLowerCaseDeserialization (true )
122
+ .forceIgnoreInvalidExtensionNameDeserialization (this .options .isForceIgnoreInvalidExtensionNameDeserialization ())
123
+ .build ()
126
124
);
127
125
}
128
126
@@ -131,10 +129,12 @@ public JsonFormat withForceExtensionNameLowerCaseDeserialization() {
131
129
*/
132
130
public JsonFormat withForceIgnoreInvalidExtensionNameDeserialization () {
133
131
return new JsonFormat (
134
- this .forceDataBase64Serialization ,
135
- this .forceStringSerialization ,
136
- this .forceExtensionNameLowerCaseDeserialization ,
137
- true
132
+ JsonFormatOptions .builder ()
133
+ .forceDataBase64Serialization (this .options .isForceDataBase64Serialization ())
134
+ .forceStringSerialization (this .options .isForceStringSerialization ())
135
+ .forceExtensionNameLowerCaseDeserialization (this .options .isForceExtensionNameLowerCaseDeserialization ())
136
+ .forceIgnoreInvalidExtensionNameDeserialization (true )
137
+ .build ()
138
138
);
139
139
}
140
140
@@ -180,30 +180,35 @@ public String serializedContentType() {
180
180
* @return a {@link SimpleModule} with {@link CloudEvent} serializer/deserializer configured using default values.
181
181
*/
182
182
public static SimpleModule getCloudEventJacksonModule () {
183
- return getCloudEventJacksonModule (false , false , false , false );
183
+ return getCloudEventJacksonModule (false , false );
184
184
}
185
185
186
186
/**
187
187
* @param forceDataBase64Serialization force json base64 encoding for data
188
188
* @param forceStringSerialization force string serialization for non json data field
189
- * @param forceExtensionNameLowerCaseDeserialization force extension name deserialization for lower case
190
- * @param forceIgnoreInvalidExtensionNameDeserialization force extension name deserialization for ignoring invalid name
191
189
* @return a JacksonModule with CloudEvent serializer/deserializer customizing the data serialization.
192
190
* @see #withForceJsonDataToBase64()
193
191
* @see #withForceNonJsonDataToString()
194
- * @see #withForceExtensionNameLowerCaseDeserialization()
195
- * @see #withForceIgnoreInvalidExtensionNameDeserialization()
196
192
*/
197
- public static SimpleModule getCloudEventJacksonModule (
198
- boolean forceDataBase64Serialization ,
199
- boolean forceStringSerialization ,
200
- boolean forceExtensionNameLowerCaseDeserialization ,
201
- boolean forceIgnoreInvalidExtensionNameDeserialization
202
- ) {
193
+ public static SimpleModule getCloudEventJacksonModule (boolean forceDataBase64Serialization , boolean forceStringSerialization ) {
194
+ return getCloudEventJacksonModule (
195
+ JsonFormatOptions .builder ()
196
+ .forceDataBase64Serialization (forceDataBase64Serialization )
197
+ .forceStringSerialization (forceStringSerialization )
198
+ .build ()
199
+ );
200
+ }
201
+
202
+ /**
203
+ * @param options json serialization / deserialization options
204
+ * @return a JacksonModule with CloudEvent serializer/deserializer customizing the data serialization.
205
+ */
206
+ public static SimpleModule getCloudEventJacksonModule (JsonFormatOptions options ) {
203
207
final SimpleModule ceModule = new SimpleModule ("CloudEvent" );
204
- ceModule .addSerializer (CloudEvent .class , new CloudEventSerializer (forceDataBase64Serialization , forceStringSerialization ));
208
+ ceModule .addSerializer (CloudEvent .class , new CloudEventSerializer (
209
+ options .isForceDataBase64Serialization (), options .isForceStringSerialization ()));
205
210
ceModule .addDeserializer (CloudEvent .class , new CloudEventDeserializer (
206
- forceExtensionNameLowerCaseDeserialization , forceIgnoreInvalidExtensionNameDeserialization ));
211
+ options . isForceExtensionNameLowerCaseDeserialization (), options . isForceIgnoreInvalidExtensionNameDeserialization () ));
207
212
return ceModule ;
208
213
}
209
214
0 commit comments