@@ -30,83 +30,71 @@ private GsonFactory() {
3030 * Most of the Slack APIs' key naming is snake-cased.
3131 */
3232 public static Gson createSnakeCase () {
33- GsonBuilder gsonBuilder = getSnakeCaseBuilder ();
34- configureBuilder (gsonBuilder );
33+ GsonBuilder gsonBuilder = new GsonBuilder ()
34+ .setFieldNamingPolicy (FieldNamingPolicy .LOWER_CASE_WITH_UNDERSCORES );
35+ registerTypeAdapters (gsonBuilder , false );
3536 return gsonBuilder .create ();
3637 }
3738
3839 /**
3940 * Most of the Slack APIs' key naming is snake-cased.
4041 */
4142 public static Gson createSnakeCase (SlackConfig config ) {
42- GsonBuilder gsonBuilder = getSnakeCaseBuilder ();
43- configureBuilder (gsonBuilder , config );
43+ boolean failOnUnknownProps = config .isFailOnUnknownProperties ();
44+ GsonBuilder gsonBuilder = new GsonBuilder ()
45+ .setFieldNamingPolicy (FieldNamingPolicy .LOWER_CASE_WITH_UNDERSCORES );
46+ registerTypeAdapters (gsonBuilder , failOnUnknownProps );
47+
48+ if (failOnUnknownProps || config .isLibraryMaintainerMode ()) {
49+ gsonBuilder .registerTypeAdapterFactory (new UnknownPropertyDetectionAdapterFactory ());
50+ }
51+ if (config .isFailOnRequiredProperties ()) {
52+ gsonBuilder .registerTypeAdapterFactory (new RequiredPropertyDetectionAdapterFactory ());
53+ }
54+ if (config .isPrettyResponseLoggingEnabled ()) {
55+ gsonBuilder .setPrettyPrinting ();
56+ }
57+
4458 return gsonBuilder .create ();
4559 }
4660
4761 /**
4862 * Mainly used for SCIM APIs.
4963 */
5064 public static Gson createCamelCase (SlackConfig config ) {
65+ boolean failOnUnknownProps = config .isFailOnUnknownProperties ();
5166 GsonBuilder gsonBuilder = new GsonBuilder ();
52- configureBuilder (gsonBuilder , config );
53- return gsonBuilder .create ();
54- }
67+ registerTypeAdapters (gsonBuilder , failOnUnknownProps );
5568
56- private static GsonBuilder getSnakeCaseBuilder () {
57- return new GsonBuilder ().setFieldNamingPolicy (FieldNamingPolicy .LOWER_CASE_WITH_UNDERSCORES );
58- }
59-
60- private static void configureBuilder (GsonBuilder builder ) {
61- configureBuilder (builder , false , false , false , false );
62- }
63-
64- private static void configureBuilder (GsonBuilder builder , SlackConfig config ) {
65- configureBuilder (
66- builder ,
67- config .isFailOnUnknownProperties (),
68- config .isFailOnRequiredProperties (),
69- config .isPrettyResponseLoggingEnabled (),
70- config .isLibraryMaintainerMode ()
71- );
72- }
73-
74- private static void configureBuilder (
75- GsonBuilder builder ,
76- boolean failOnUnknownProps ,
77- boolean failOnRequiredProps ,
78- boolean isPrettyResponseLoggingEnabled ,
79- boolean isLibraryMaintainerMode
80- ) {
81- if (failOnUnknownProps || isLibraryMaintainerMode ) {
82- builder .registerTypeAdapterFactory (new UnknownPropertyDetectionAdapterFactory ());
69+ if (failOnUnknownProps || config .isLibraryMaintainerMode ()) {
70+ gsonBuilder .registerTypeAdapterFactory (new UnknownPropertyDetectionAdapterFactory ());
8371 }
84- if (failOnRequiredProps ) {
85- builder .registerTypeAdapterFactory (new RequiredPropertyDetectionAdapterFactory ());
72+ if (config . isFailOnRequiredProperties () ) {
73+ gsonBuilder .registerTypeAdapterFactory (new RequiredPropertyDetectionAdapterFactory ());
8674 }
87- if (isPrettyResponseLoggingEnabled ) {
88- builder .setPrettyPrinting ();
75+ if (config . isPrettyResponseLoggingEnabled () ) {
76+ gsonBuilder .setPrettyPrinting ();
8977 }
9078
91- registerTypeAdapters ( builder , failOnUnknownProps );
79+ return gsonBuilder . create ( );
9280 }
9381
9482 public static void registerTypeAdapters (GsonBuilder builder , boolean failOnUnknownProps ) {
9583 builder
96- .registerTypeAdapter (Instant .class , new JavaTimeInstantFactory (failOnUnknownProps ))
97- .registerTypeAdapter (File .class , new GsonFileFactory (failOnUnknownProps ))
98- .registerTypeAdapter (LayoutBlock .class , new GsonLayoutBlockFactory (failOnUnknownProps ))
99- .registerTypeAdapter (TextObject .class , new GsonTextObjectFactory (failOnUnknownProps ))
100- .registerTypeAdapter (ContextBlockElement .class , new GsonContextBlockElementFactory (failOnUnknownProps ))
101- .registerTypeAdapter (ContextActionsBlockElement .class , new GsonContextActionsBlockElementFactory (failOnUnknownProps ))
102- .registerTypeAdapter (BlockElement .class , new GsonBlockElementFactory (failOnUnknownProps ))
103- .registerTypeAdapter (RichTextElement .class , new GsonRichTextElementFactory (failOnUnknownProps ))
104- .registerTypeAdapter (FunctionExecutedEvent .InputValue .class , new GsonFunctionExecutedEventInputValueFactory ())
105- .registerTypeAdapter (Attachment .VideoHtml .class , new GsonMessageAttachmentVideoHtmlFactory (failOnUnknownProps ))
106- .registerTypeAdapter (MessageChangedEvent .PreviousMessage .class , new GsonMessageChangedEventPreviousMessageFactory (failOnUnknownProps ))
107- .registerTypeAdapter (AppWorkflow .StepInputValue .class , new GsonAppWorkflowStepInputValueFactory (failOnUnknownProps ))
108- .registerTypeAdapter (AppWorkflow .StepInputValueElementDefault .class , new GsonAppWorkflowStepInputValueDefaultFactory (failOnUnknownProps ))
109- .registerTypeAdapter (LogsResponse .DetailsChangedValue .class , new GsonAuditLogsDetailsChangedValueFactory (failOnUnknownProps ))
110- .registerTypeAdapter (LogsResponse .UserIDs .class , new GsonAuditLogsDetailsUserIDsFactory (failOnUnknownProps ));
84+ .registerTypeAdapter (Instant .class , new JavaTimeInstantFactory (failOnUnknownProps ))
85+ .registerTypeAdapter (File .class , new GsonFileFactory (failOnUnknownProps ))
86+ .registerTypeAdapter (LayoutBlock .class , new GsonLayoutBlockFactory (failOnUnknownProps ))
87+ .registerTypeAdapter (TextObject .class , new GsonTextObjectFactory (failOnUnknownProps ))
88+ .registerTypeAdapter (ContextBlockElement .class , new GsonContextBlockElementFactory (failOnUnknownProps ))
89+ .registerTypeAdapter (ContextActionsBlockElement .class , new GsonContextActionsBlockElementFactory (failOnUnknownProps ))
90+ .registerTypeAdapter (BlockElement .class , new GsonBlockElementFactory (failOnUnknownProps ))
91+ .registerTypeAdapter (RichTextElement .class , new GsonRichTextElementFactory (failOnUnknownProps ))
92+ .registerTypeAdapter (FunctionExecutedEvent .InputValue .class , new GsonFunctionExecutedEventInputValueFactory ())
93+ .registerTypeAdapter (Attachment .VideoHtml .class , new GsonMessageAttachmentVideoHtmlFactory (failOnUnknownProps ))
94+ .registerTypeAdapter (MessageChangedEvent .PreviousMessage .class , new GsonMessageChangedEventPreviousMessageFactory (failOnUnknownProps ))
95+ .registerTypeAdapter (AppWorkflow .StepInputValue .class , new GsonAppWorkflowStepInputValueFactory (failOnUnknownProps ))
96+ .registerTypeAdapter (AppWorkflow .StepInputValueElementDefault .class , new GsonAppWorkflowStepInputValueDefaultFactory (failOnUnknownProps ))
97+ .registerTypeAdapter (LogsResponse .DetailsChangedValue .class , new GsonAuditLogsDetailsChangedValueFactory (failOnUnknownProps ))
98+ .registerTypeAdapter (LogsResponse .UserIDs .class , new GsonAuditLogsDetailsUserIDsFactory (failOnUnknownProps ));
11199 }
112100}
0 commit comments