org.usergrid.tools.apidoc.swagger.ApiOperation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of usergrid-tools Show documentation
Show all versions of usergrid-tools Show documentation
Command line tools for Usergrid system.
/*******************************************************************************
* Copyright 2012 Apigee Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License 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 org.usergrid.tools.apidoc.swagger;
import static org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL;
import java.util.List;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.usergrid.utils.JsonUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class ApiOperation {
String httpMethod;
String nickname;
String summary;
String notes;
String responseTypeInternal;
String responseClass;
String tags;
List parameters;
List errorResponses;
public ApiOperation() {
}
@JsonSerialize(include = NON_NULL)
public String getHttpMethod() {
return httpMethod;
}
public void setHttpMethod(String httpMethod) {
this.httpMethod = httpMethod;
}
@JsonSerialize(include = NON_NULL)
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
@JsonSerialize(include = NON_NULL)
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
@JsonSerialize(include = NON_NULL)
public String getNotes() {
return notes;
}
public void setNotes(String notes) {
this.notes = notes;
}
@JsonSerialize(include = NON_NULL)
public String getResponseTypeInternal() {
return responseTypeInternal;
}
public void setResponseTypeInternal(String responseTypeInternal) {
this.responseTypeInternal = responseTypeInternal;
}
@JsonSerialize(include = NON_NULL)
public String getResponseClass() {
return responseClass;
}
public void setResponseClass(String responseClass) {
this.responseClass = responseClass;
}
@JsonSerialize(include = NON_NULL)
public String getTags() {
return tags;
}
public void setTags(String tags) {
this.tags = tags;
}
@JsonSerialize(include = NON_NULL)
public List getParameters() {
return parameters;
}
public void setParameters(List parameters) {
this.parameters = parameters;
}
@JsonSerialize(include = NON_NULL)
public List getErrorResponses() {
return errorResponses;
}
public void setErrorResponses(List errorResponses) {
this.errorResponses = errorResponses;
}
@Override
public String toString() {
return JsonUtils.mapToJsonString(this);
}
public Element createWADLMethod(Document doc, Api api) {
Element method = doc.createElement("method");
if (httpMethod != null) {
method.setAttribute("name", httpMethod);
}
if (summary != null) {
method.setAttributeNS("http://api.apigee.com/wadl/2010/07/",
"apigee:displayName", summary);
}
if (nickname != null) {
method.setAttribute("id", nickname);
}
Element tags = doc.createElementNS(
"http://api.apigee.com/wadl/2010/07/", "tags");
Element tag = doc.createElementNS(
"http://api.apigee.com/wadl/2010/07/", "tag");
tag.setAttribute("primary", "true");
tags.appendChild(tag);
tag.setTextContent(api.description != null ? api.description
: "Objects");
method.appendChild(tags);
Element authentication = doc.createElementNS(
"http://api.apigee.com/wadl/2010/07/", "authentication");
authentication.setAttribute("required", "false");
method.appendChild(authentication);
Element example = doc.createElementNS(
"http://api.apigee.com/wadl/2010/07/", "example");
example.setAttribute("url", api.path);
method.appendChild(example);
if (notes != null) {
Element d = doc.createElement("doc");
d.setTextContent(notes);
method.appendChild(d);
}
if ((parameters != null) && !parameters.isEmpty()) {
Element request = doc.createElement("request");
method.appendChild(request);
boolean isForm = false;
boolean isJson = false;
for (ApiParam param : parameters) {
if ("post".equalsIgnoreCase(param.getParamType())) {
isForm = true;
} else if ("body".equalsIgnoreCase(param.getParamType())) {
isJson = true;
}
}
for (ApiParam param : parameters) {
if (!"post".equalsIgnoreCase(param.getParamType())
&& !"body".equalsIgnoreCase(param.getParamType())) {
request.appendChild(param.createWADLParam(doc, this));
}
}
if (isForm) {
Element contentType = doc.createElement("param");
contentType.setAttribute("name", "Content-Type");
contentType.setAttribute("type", "string");
contentType.setAttribute("style", "header");
contentType.setAttribute("required", "true");
contentType.setAttribute("default",
"application/x-www-form-urlencoded");
request.appendChild(contentType);
Element representation = doc.createElement("representation");
representation.setAttribute("mediaType",
"application/x-www-form-urlencoded");
request.appendChild(representation);
for (ApiParam param : parameters) {
if ("post".equalsIgnoreCase(param.getParamType())) {
representation.appendChild(param.createWADLParam(doc,
this));
}
}
} else if (isJson) {
Element contentType = doc.createElement("param");
contentType.setAttribute("name", "Content-Type");
contentType.setAttribute("type", "string");
contentType.setAttribute("style", "header");
contentType.setAttribute("required", "true");
contentType.setAttribute("default", "application/json");
request.appendChild(contentType);
Element representation = doc.createElement("representation");
representation.setAttribute("mediaType", "application/json");
request.appendChild(representation);
Element payload = doc.createElementNS(
"http://api.apigee.com/wadl/2010/07/", "payload");
representation.appendChild(payload);
payload.setTextContent("{ }");
}
}
Element response = doc.createElement("response");
method.appendChild(response);
Element representation = doc.createElement("representation");
representation.setAttribute("mediaType", "application/json");
response.appendChild(representation);
return method;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy