/*
* Copyright (c) 2016. 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.protocol.ApiGatewayProtocolMetadataProvider;
import com.amazonaws.codegen.protocol.AwsCborProtocolMetadataProvider;
import com.amazonaws.codegen.protocol.AwsJsonProtocolMetadataProvider;
import com.amazonaws.codegen.protocol.Ec2ProtocolMetdataProvider;
import com.amazonaws.codegen.protocol.IonProtocolMetadataProvider;
import com.amazonaws.codegen.protocol.ProtocolMetadataProvider;
import com.amazonaws.codegen.protocol.QueryProtocolMetadataProvider;
import com.amazonaws.codegen.protocol.RestJsonProtocolMetdataProvider;
import com.amazonaws.codegen.protocol.RestXmlProtocolMetadataProvider;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
public enum Protocol {
EC2("ec2", new Ec2ProtocolMetdataProvider()),
AWS_JSON("json", new AwsJsonProtocolMetadataProvider()),
REST_JSON("rest-json", new RestJsonProtocolMetdataProvider()),
CBOR("cbor", new AwsCborProtocolMetadataProvider()),
QUERY("query", new QueryProtocolMetadataProvider()),
REST_XML("rest-xml", new RestXmlProtocolMetadataProvider()),
API_GATEWAY("api-gateway", new ApiGatewayProtocolMetadataProvider()),
ION("ion", new IonProtocolMetadataProvider());
private String protocol;
private ProtocolMetadataProvider metadataProvider;
Protocol(String protocol, ProtocolMetadataProvider metadataProvider) {
this.protocol = protocol;
this.metadataProvider = metadataProvider;
}
@JsonCreator
public static Protocol fromValue(String strProtocol) {
if (strProtocol == null) {
return null;
}
for (Protocol protocol : Protocol.values()) {
if (protocol.protocol.equals(strProtocol)) {
return protocol;
}
}
throw new IllegalArgumentException("Unknown enum value for Protocol : " + strProtocol);
}
@JsonValue
public String getValue() {
return protocol;
}
public ProtocolMetadataProvider getProvider() {
return metadataProvider;
}
}