/*
* Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.codegen.model.intermediate;
import com.amazonaws.codegen.JmesPathCodeGenVisitor;
import com.amazonaws.codegen.internal.Utils;
import com.amazonaws.jmespath.JmesPathExpression;
import com.fasterxml.jackson.databind.JsonNode;
import org.apache.commons.lang3.StringEscapeUtils;
import java.math.BigDecimal;
public class AcceptorModel {
private String matcher;
private String argument;
private String state;
private JsonNode expected;
private JmesPathExpression ast;
public void setAst(JmesPathExpression ast) {
this.ast = ast;
}
public String getAst() {
if(ast != null) {
return ast.accept(new JmesPathCodeGenVisitor(), null);
}
return null;
}
public void setState(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setMatcher(String matcher) {
this.matcher = matcher;
}
public String getMatcher() {
return matcher;
}
public void setArgument(String argument) {
this.argument = argument;
}
public String getArgument() {
return argument;
}
public void setExpected(JsonNode expected) {
this.expected = expected;
}
public JsonNode getExpected() {
return expected;
}
public String getExpectedAsCamelCase(){
return Utils.capitialize(this.expected.asText().replaceAll("\\W", ""));
}
public String getExpectedAsEscapedJson() {
return StringEscapeUtils.escapeJava(expected.toString());
}
public String getExpectedAsString() {
if(expected.isTextual()) {
return expected.toString();
}
return null;
}
public BigDecimal getExpectedAsNumber() {
if(expected.isNumber()) {
return expected.decimalValue();
}
return null;
}
public String getEnumState() {
return "WaiterState." + this.state.toUpperCase();
}
public boolean getIsStatusMatcher(){
return this.matcher.equals("status");
}
public boolean getIsErrorMatcher(){
return this.matcher.equals("error");
}
}