77
88import org .elasticsearch .action .support .master .AcknowledgedResponse ;
99import org .elasticsearch .common .ParseField ;
10- import org .elasticsearch .common .collect .Tuple ;
1110import org .elasticsearch .common .io .stream .StreamInput ;
1211import org .elasticsearch .common .io .stream .StreamOutput ;
13- import org .elasticsearch .common .xcontent .ConstructingObjectParser ;
12+ import org .elasticsearch .common .xcontent .StatusToXContentObject ;
1413import org .elasticsearch .common .xcontent .XContentBuilder ;
15- import org .elasticsearch .common .xcontent .XContentParseException ;
16- import org .elasticsearch .common .xcontent .XContentParser ;
1714import org .elasticsearch .protocol .xpack .common .ProtocolUtils ;
1815import org .elasticsearch .rest .RestStatus ;
1916
2017import java .io .IOException ;
21- import java .util .ArrayList ;
2218import java .util .Collections ;
2319import java .util .HashMap ;
24- import java .util .List ;
2520import java .util .Map ;
2621import java .util .Objects ;
2722
28- import static org .elasticsearch .common .xcontent .ConstructingObjectParser .constructorArg ;
29- import static org .elasticsearch .common .xcontent .ConstructingObjectParser .optionalConstructorArg ;
30- import static org .elasticsearch .common .xcontent .XContentParserUtils .ensureExpectedToken ;
31-
32- public class PostStartBasicResponse extends AcknowledgedResponse {
33-
34- private static final ConstructingObjectParser <PostStartBasicResponse , Void > PARSER = new ConstructingObjectParser <>(
35- "start_basic_response" , true , (a , v ) -> {
36- boolean basicWasStarted = (Boolean ) a [0 ];
37- String errorMessage = (String ) a [1 ];
38-
39- if (basicWasStarted ) {
40- return new PostStartBasicResponse (Status .GENERATED_BASIC );
41- }
42- Status status = Status .fromErrorMessage (errorMessage );
43- @ SuppressWarnings ("unchecked" ) Tuple <String , Map <String , String []>> acknowledgements = (Tuple <String , Map <String , String []>>) a [2 ];
44- return new PostStartBasicResponse (status , acknowledgements .v2 (), acknowledgements .v1 ());
45- });
23+ public class PostStartBasicResponse extends AcknowledgedResponse implements StatusToXContentObject {
4624
4725 private static final ParseField BASIC_WAS_STARTED_FIELD = new ParseField ("basic_was_started" );
4826 private static final ParseField ERROR_MESSAGE_FIELD = new ParseField ("error_message" );
49- private static final ParseField ACKNOWLEDGE_FIELD = new ParseField ("acknowledge" );
5027 private static final ParseField MESSAGE_FIELD = new ParseField ("message" );
5128
52- static {
53- PARSER .declareBoolean (constructorArg (), BASIC_WAS_STARTED_FIELD );
54- PARSER .declareString (optionalConstructorArg (), ERROR_MESSAGE_FIELD );
55- PARSER .declareObject (optionalConstructorArg (), (parser , v ) -> {
56- Map <String , String []> acknowledgeMessages = new HashMap <>();
57- String message = null ;
58- XContentParser .Token token ;
59- String currentFieldName = null ;
60- while ((token = parser .nextToken ()) != XContentParser .Token .END_OBJECT ) {
61- if (token == XContentParser .Token .FIELD_NAME ) {
62- currentFieldName = parser .currentName ();
63- } else {
64- if (currentFieldName == null ) {
65- throw new XContentParseException (parser .getTokenLocation (), "expected message header or acknowledgement" );
66- }
67- if (MESSAGE_FIELD .getPreferredName ().equals (currentFieldName )) {
68- ensureExpectedToken (XContentParser .Token .VALUE_STRING , token , parser ::getTokenLocation );
69- message = parser .text ();
70- } else {
71- if (token != XContentParser .Token .START_ARRAY ) {
72- throw new XContentParseException (parser .getTokenLocation (), "unexpected acknowledgement type" );
73- }
74- List <String > acknowledgeMessagesList = new ArrayList <>();
75- while ((token = parser .nextToken ()) != XContentParser .Token .END_ARRAY ) {
76- ensureExpectedToken (XContentParser .Token .VALUE_STRING , token , parser ::getTokenLocation );
77- acknowledgeMessagesList .add (parser .text ());
78- }
79- acknowledgeMessages .put (currentFieldName , acknowledgeMessagesList .toArray (new String [0 ]));
80- }
81- }
82- }
83- return new Tuple <>(message , acknowledgeMessages );
84- }, ACKNOWLEDGE_FIELD );
85- }
86-
8729 private Map <String , String []> acknowledgeMessages ;
8830 private String acknowledgeMessage ;
8931
@@ -113,16 +55,6 @@ String getErrorMessage() {
11355 RestStatus getRestStatus () {
11456 return restStatus ;
11557 }
116-
117- static Status fromErrorMessage (final String errorMessage ) {
118- final Status [] values = Status .values ();
119- for (Status status : values ) {
120- if (Objects .equals (status .errorMessage , errorMessage )) {
121- return status ;
122- }
123- }
124- throw new IllegalArgumentException ("No status for error message ['" + errorMessage + "']" );
125- }
12658 }
12759
12860 private Status status ;
@@ -201,8 +133,9 @@ protected void addCustomFields(XContentBuilder builder, Params params) throws IO
201133 }
202134 }
203135
204- public static PostStartBasicResponse fromXContent (XContentParser parser ) throws IOException {
205- return PARSER .parse (parser , null );
136+ @ Override
137+ public RestStatus status () {
138+ return status .restStatus ;
206139 }
207140
208141 @ Override
@@ -221,5 +154,4 @@ public boolean equals(Object o) {
221154 public int hashCode () {
222155 return Objects .hash (super .hashCode (), status , ProtocolUtils .hashCode (acknowledgeMessages ), acknowledgeMessage );
223156 }
224-
225157}
0 commit comments