@@ -29,23 +29,10 @@ private GsonFactory() {
2929 * Most of the Slack APIs' key naming is snake-cased.
3030 */
3131 public static Gson createSnakeCase () {
32- return new GsonBuilder ()
33- .setFieldNamingPolicy (FieldNamingPolicy .LOWER_CASE_WITH_UNDERSCORES )
34- .registerTypeAdapter (Instant .class , new JavaTimeInstantFactory ())
35- .registerTypeAdapter (File .class , new GsonFileFactory ())
36- .registerTypeAdapter (LayoutBlock .class , new GsonLayoutBlockFactory ())
37- .registerTypeAdapter (TextObject .class , new GsonTextObjectFactory ())
38- .registerTypeAdapter (ContextBlockElement .class , new GsonContextBlockElementFactory ())
39- .registerTypeAdapter (BlockElement .class , new GsonBlockElementFactory ())
40- .registerTypeAdapter (RichTextElement .class , new GsonRichTextElementFactory ())
41- .registerTypeAdapter (FunctionExecutedEvent .InputValue .class , new GsonFunctionExecutedEventInputValueFactory ())
42- .registerTypeAdapter (Attachment .VideoHtml .class , new GsonMessageAttachmentVideoHtmlFactory ())
43- .registerTypeAdapter (MessageChangedEvent .PreviousMessage .class , new GsonMessageChangedEventPreviousMessageFactory ())
44- .registerTypeAdapter (AppWorkflow .StepInputValue .class , new GsonAppWorkflowStepInputValueFactory ())
45- .registerTypeAdapter (AppWorkflow .StepInputValueElementDefault .class , new GsonAppWorkflowStepInputValueDefaultFactory ())
46- .registerTypeAdapter (LogsResponse .DetailsChangedValue .class , new GsonAuditLogsDetailsChangedValueFactory ())
47- .registerTypeAdapter (LogsResponse .UserIDs .class , new GsonAuditLogsDetailsUserIDsFactory ())
48- .create ();
32+ GsonBuilder gsonBuilder = new GsonBuilder ()
33+ .setFieldNamingPolicy (FieldNamingPolicy .LOWER_CASE_WITH_UNDERSCORES );
34+ registerTypeAdapters (gsonBuilder , false );
35+ return gsonBuilder .create ();
4936 }
5037
5138 /**
@@ -54,21 +41,8 @@ public static Gson createSnakeCase() {
5441 public static Gson createSnakeCase (SlackConfig config ) {
5542 boolean failOnUnknownProps = config .isFailOnUnknownProperties ();
5643 GsonBuilder gsonBuilder = new GsonBuilder ()
57- .setFieldNamingPolicy (FieldNamingPolicy .LOWER_CASE_WITH_UNDERSCORES )
58- .registerTypeAdapter (Instant .class , new JavaTimeInstantFactory (failOnUnknownProps ))
59- .registerTypeAdapter (File .class , new GsonFileFactory (failOnUnknownProps ))
60- .registerTypeAdapter (LayoutBlock .class , new GsonLayoutBlockFactory (failOnUnknownProps ))
61- .registerTypeAdapter (TextObject .class , new GsonTextObjectFactory (failOnUnknownProps ))
62- .registerTypeAdapter (ContextBlockElement .class , new GsonContextBlockElementFactory (failOnUnknownProps ))
63- .registerTypeAdapter (BlockElement .class , new GsonBlockElementFactory (failOnUnknownProps ))
64- .registerTypeAdapter (RichTextElement .class , new GsonRichTextElementFactory (failOnUnknownProps ))
65- .registerTypeAdapter (FunctionExecutedEvent .InputValue .class , new GsonFunctionExecutedEventInputValueFactory ())
66- .registerTypeAdapter (Attachment .VideoHtml .class , new GsonMessageAttachmentVideoHtmlFactory (failOnUnknownProps ))
67- .registerTypeAdapter (MessageChangedEvent .PreviousMessage .class , new GsonMessageChangedEventPreviousMessageFactory (failOnUnknownProps ))
68- .registerTypeAdapter (AppWorkflow .StepInputValue .class , new GsonAppWorkflowStepInputValueFactory (failOnUnknownProps ))
69- .registerTypeAdapter (AppWorkflow .StepInputValueElementDefault .class , new GsonAppWorkflowStepInputValueDefaultFactory (failOnUnknownProps ))
70- .registerTypeAdapter (LogsResponse .DetailsChangedValue .class , new GsonAuditLogsDetailsChangedValueFactory (failOnUnknownProps ))
71- .registerTypeAdapter (LogsResponse .UserIDs .class , new GsonAuditLogsDetailsUserIDsFactory (failOnUnknownProps ));
44+ .setFieldNamingPolicy (FieldNamingPolicy .LOWER_CASE_WITH_UNDERSCORES );
45+ registerTypeAdapters (gsonBuilder , failOnUnknownProps );
7246 if (failOnUnknownProps || config .isLibraryMaintainerMode ()) {
7347 gsonBuilder = gsonBuilder .registerTypeAdapterFactory (new UnknownPropertyDetectionAdapterFactory ());
7448 }
@@ -83,27 +57,32 @@ public static Gson createSnakeCase(SlackConfig config) {
8357 */
8458 public static Gson createCamelCase (SlackConfig config ) {
8559 boolean failOnUnknownProps = config .isFailOnUnknownProperties ();
86- GsonBuilder gsonBuilder = new GsonBuilder ()
60+ GsonBuilder gsonBuilder = new GsonBuilder ();
61+ registerTypeAdapters (gsonBuilder , failOnUnknownProps );
62+ if (failOnUnknownProps || config .isLibraryMaintainerMode ()) {
63+ gsonBuilder = gsonBuilder .registerTypeAdapterFactory (new UnknownPropertyDetectionAdapterFactory ());
64+ }
65+ if (config .isPrettyResponseLoggingEnabled ()) {
66+ gsonBuilder = gsonBuilder .setPrettyPrinting ();
67+ }
68+ return gsonBuilder .create ();
69+ }
70+
71+ public static void registerTypeAdapters (GsonBuilder builder , boolean failOnUnknownProps ) {
72+ builder
8773 .registerTypeAdapter (Instant .class , new JavaTimeInstantFactory (failOnUnknownProps ))
8874 .registerTypeAdapter (File .class , new GsonFileFactory (failOnUnknownProps ))
8975 .registerTypeAdapter (LayoutBlock .class , new GsonLayoutBlockFactory (failOnUnknownProps ))
9076 .registerTypeAdapter (TextObject .class , new GsonTextObjectFactory (failOnUnknownProps ))
9177 .registerTypeAdapter (ContextBlockElement .class , new GsonContextBlockElementFactory (failOnUnknownProps ))
9278 .registerTypeAdapter (BlockElement .class , new GsonBlockElementFactory (failOnUnknownProps ))
9379 .registerTypeAdapter (RichTextElement .class , new GsonRichTextElementFactory (failOnUnknownProps ))
94- .registerTypeAdapter (MessageChangedEvent . PreviousMessage .class , new GsonMessageChangedEventPreviousMessageFactory ( failOnUnknownProps ))
95- .registerTypeAdapter (LogsResponse . DetailsChangedValue .class , new GsonAuditLogsDetailsChangedValueFactory (failOnUnknownProps ))
80+ .registerTypeAdapter (FunctionExecutedEvent . InputValue .class , new GsonFunctionExecutedEventInputValueFactory ( ))
81+ .registerTypeAdapter (Attachment . VideoHtml .class , new GsonMessageAttachmentVideoHtmlFactory (failOnUnknownProps ))
9682 .registerTypeAdapter (MessageChangedEvent .PreviousMessage .class , new GsonMessageChangedEventPreviousMessageFactory (failOnUnknownProps ))
9783 .registerTypeAdapter (AppWorkflow .StepInputValue .class , new GsonAppWorkflowStepInputValueFactory (failOnUnknownProps ))
9884 .registerTypeAdapter (AppWorkflow .StepInputValueElementDefault .class , new GsonAppWorkflowStepInputValueDefaultFactory (failOnUnknownProps ))
9985 .registerTypeAdapter (LogsResponse .DetailsChangedValue .class , new GsonAuditLogsDetailsChangedValueFactory (failOnUnknownProps ))
10086 .registerTypeAdapter (LogsResponse .UserIDs .class , new GsonAuditLogsDetailsUserIDsFactory (failOnUnknownProps ));
101- if (failOnUnknownProps || config .isLibraryMaintainerMode ()) {
102- gsonBuilder = gsonBuilder .registerTypeAdapterFactory (new UnknownPropertyDetectionAdapterFactory ());
103- }
104- if (config .isPrettyResponseLoggingEnabled ()) {
105- gsonBuilder = gsonBuilder .setPrettyPrinting ();
106- }
107- return gsonBuilder .create ();
10887 }
10988}
0 commit comments