@@ -44,7 +44,7 @@ public class ClientYamlSuiteRestSpec {
4444 private final Set <String > globalParameters = new HashSet <>();
4545 private final Map <String , ClientYamlSuiteRestApi > restApiMap = new HashMap <>();
4646
47- private ClientYamlSuiteRestSpec () {}
47+ ClientYamlSuiteRestSpec () {}
4848
4949 private void addApi (ClientYamlSuiteRestApi restApi ) {
5050 ClientYamlSuiteRestApi previous = restApiMap .putIfAbsent (restApi .getName (), restApi );
@@ -100,32 +100,7 @@ private static void parseSpecFile(ClientYamlSuiteRestApiParser restApiParser, Pa
100100 JsonXContent .jsonXContent .createParser (NamedXContentRegistry .EMPTY , LoggingDeprecationHandler .INSTANCE , stream )) {
101101 String filename = jsonFile .getFileName ().toString ();
102102 if (filename .equals ("_common.json" )) {
103- String currentFieldName = null ;
104- while (parser .nextToken () != XContentParser .Token .END_OBJECT ) {
105- if (parser .currentToken () == XContentParser .Token .FIELD_NAME ) {
106- currentFieldName = parser .currentName ();
107- } else if (parser .currentToken () == XContentParser .Token .START_OBJECT ) {
108- if ("params" .equals (currentFieldName )) {
109- while (parser .nextToken () == XContentParser .Token .FIELD_NAME ) {
110- String param = parser .currentName ();
111- if (restSpec .globalParameters .contains (param )) {
112- throw new IllegalArgumentException ("Found duplicate global param [" + param + "]" );
113- }
114- restSpec .globalParameters .add (param );
115- parser .nextToken ();
116- if (parser .currentToken () != XContentParser .Token .START_OBJECT ) {
117- throw new IllegalArgumentException ("Expected params field in rest api definition to " +
118- "contain an object" );
119- }
120- parser .skipChildren ();
121- }
122- } else if ("documentation" .equals (currentFieldName )) {
123- parser .skipChildren ();
124- } else {
125- throw new ParsingException (parser .getTokenLocation (), "unsupported field [" + currentFieldName + "]" );
126- }
127- }
128- }
103+ parseCommonSpec (parser , restSpec );
129104 } else {
130105 ClientYamlSuiteRestApi restApi = restApiParser .parse (jsonFile .toString (), parser );
131106 String expectedApiName = filename .substring (0 , filename .lastIndexOf ('.' ));
@@ -140,4 +115,34 @@ private static void parseSpecFile(ClientYamlSuiteRestApiParser restApiParser, Pa
140115 throw new UncheckedIOException ("Can't parse rest spec file: [" + jsonFile + "]" , ex );
141116 }
142117 }
118+
119+ static void parseCommonSpec (XContentParser parser , ClientYamlSuiteRestSpec restSpec ) throws IOException {
120+ String currentFieldName = null ;
121+ parser .nextToken ();
122+ assert parser .currentToken () == XContentParser .Token .START_OBJECT ;
123+ while (parser .nextToken () != XContentParser .Token .END_OBJECT ) {
124+ if (parser .currentToken () == XContentParser .Token .FIELD_NAME ) {
125+ currentFieldName = parser .currentName ();
126+ } else if (parser .currentToken () == XContentParser .Token .START_OBJECT ) {
127+ if ("params" .equals (currentFieldName )) {
128+ while (parser .nextToken () == XContentParser .Token .FIELD_NAME ) {
129+ String param = parser .currentName ();
130+ if (restSpec .globalParameters .contains (param )) {
131+ throw new IllegalArgumentException ("Found duplicate global param [" + param + "]" );
132+ }
133+ restSpec .globalParameters .add (param );
134+ parser .nextToken ();
135+ if (parser .currentToken () != XContentParser .Token .START_OBJECT ) {
136+ throw new IllegalArgumentException ("Expected params field in rest api definition to " +
137+ "contain an object" );
138+ }
139+ parser .skipChildren ();
140+ }
141+ } else {
142+ parser .skipChildren ();
143+ }
144+ }
145+ }
146+
147+ }
143148}
0 commit comments