@@ -20,16 +20,24 @@ public ObfuscationConfig.Builder loadConfig(File configFile) throws IOException
2020 JsonNode root = objectMapper .readTree (configFile );
2121 ObfuscationConfig .Builder builder = new ObfuscationConfig .Builder ();
2222
23+ JsonNode obfuscationNode = root .has ("obfuscation" ) ? root .get ("obfuscation" ) : root ;
24+
2325 if (root .has ("renameClasses" )) {
2426 builder .renameClasses (root .get ("renameClasses" ).asBoolean ());
27+ } else if (obfuscationNode .has ("renameClasses" )) {
28+ builder .renameClasses (obfuscationNode .get ("renameClasses" ).asBoolean ());
2529 }
26-
30+
2731 if (root .has ("renameFields" )) {
2832 builder .renameFields (root .get ("renameFields" ).asBoolean ());
33+ } else if (obfuscationNode .has ("renameFields" )) {
34+ builder .renameFields (obfuscationNode .get ("renameFields" ).asBoolean ());
2935 }
3036
3137 if (root .has ("renameMethods" )) {
3238 builder .renameMethods (root .get ("renameMethods" ).asBoolean ());
39+ } else if (obfuscationNode .has ("renameMethods" )) {
40+ builder .renameMethods (obfuscationNode .get ("renameMethods" ).asBoolean ());
3341 }
3442
3543
@@ -54,12 +62,18 @@ public ObfuscationConfig.Builder loadConfig(File configFile) throws IOException
5462 builder .verbose (root .get ("verbose" ).asBoolean ());
5563 }
5664
65+ JsonNode keepRulesNode = root .has ("keepRules" ) ? root .get ("keepRules" ) : root ;
66+
5767 if (root .has ("keepMainClass" )) {
5868 builder .keepMainClass (root .get ("keepMainClass" ).asBoolean ());
69+ } else if (keepRulesNode .has ("keepMainClass" )) {
70+ builder .keepMainClass (keepRulesNode .get ("keepMainClass" ).asBoolean ());
5971 }
6072
6173 if (root .has ("keepStandardEntryPoints" )) {
6274 builder .keepStandardEntryPoints (root .get ("keepStandardEntryPoints" ).asBoolean ());
75+ } else if (keepRulesNode .has ("keepStandardEntryPoints" )) {
76+ builder .keepStandardEntryPoints (keepRulesNode .get ("keepStandardEntryPoints" ).asBoolean ());
6377 }
6478
6579 if (root .has ("sequentialTransformers" )) {
@@ -95,9 +109,9 @@ public ObfuscationConfig.Builder loadConfig(File configFile) throws IOException
95109 if (root .has ("maxThreads" )) {
96110 builder .maxThreads (root .get ("maxThreads" ).asInt ());
97111 }
98-
99- if (root .has ("keepClasses" )) {
100- JsonNode keepClasses = root .get ("keepClasses" );
112+
113+ if (keepRulesNode .has ("keepClasses" )) {
114+ JsonNode keepClasses = keepRulesNode .get ("keepClasses" );
101115 if (keepClasses .isArray ()) {
102116 List <String > classes = new ArrayList <>();
103117 for (JsonNode node : keepClasses ) {
@@ -107,8 +121,8 @@ public ObfuscationConfig.Builder loadConfig(File configFile) throws IOException
107121 }
108122 }
109123
110- if (root .has ("keepClassPatterns" )) {
111- JsonNode keepClassPatterns = root .get ("keepClassPatterns" );
124+ if (keepRulesNode .has ("keepClassPatterns" )) {
125+ JsonNode keepClassPatterns = keepRulesNode .get ("keepClassPatterns" );
112126 if (keepClassPatterns .isArray ()) {
113127 List <String > patterns = new ArrayList <>();
114128 for (JsonNode node : keepClassPatterns ) {
@@ -118,8 +132,8 @@ public ObfuscationConfig.Builder loadConfig(File configFile) throws IOException
118132 }
119133 }
120134
121- if (root .has ("keepMethods" )) {
122- JsonNode keepMethods = root .get ("keepMethods" );
135+ if (keepRulesNode .has ("keepMethods" )) {
136+ JsonNode keepMethods = keepRulesNode .get ("keepMethods" );
123137 if (keepMethods .isArray ()) {
124138 List <String > methods = new ArrayList <>();
125139 for (JsonNode node : keepMethods ) {
@@ -129,8 +143,19 @@ public ObfuscationConfig.Builder loadConfig(File configFile) throws IOException
129143 }
130144 }
131145
132- if (root .has ("keepFields" )) {
133- JsonNode keepFields = root .get ("keepFields" );
146+ if (keepRulesNode .has ("keepMethodsInClassPatterns" )) {
147+ JsonNode keepMethodsInClassPatterns = keepRulesNode .get ("keepMethodsInClassPatterns" );
148+ if (keepMethodsInClassPatterns .isArray ()) {
149+ List <String > patterns = new ArrayList <>();
150+ for (JsonNode node : keepMethodsInClassPatterns ) {
151+ patterns .add (node .asText ());
152+ }
153+ builder .keepMethodsInClassPatterns (patterns );
154+ }
155+ }
156+
157+ if (keepRulesNode .has ("keepFields" )) {
158+ JsonNode keepFields = keepRulesNode .get ("keepFields" );
134159 if (keepFields .isArray ()) {
135160 List <String > fields = new ArrayList <>();
136161 for (JsonNode node : keepFields ) {
0 commit comments