Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,51 +2,21 @@

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.swagger.models.ArrayModel;
import io.swagger.models.AuthorizationScope;
import io.swagger.models.Contact;
import io.swagger.models.Info;
import io.swagger.models.License;
import io.swagger.models.Method;
import io.swagger.models.*;
import io.swagger.models.Model;
import io.swagger.models.ModelImpl;
import io.swagger.models.Operation;
import io.swagger.models.ParamType;
import io.swagger.models.PassAs;
import io.swagger.models.Path;
import io.swagger.models.RefModel;
import io.swagger.models.Response;
import io.swagger.models.Scheme;
import io.swagger.models.Swagger;
import io.swagger.models.apideclaration.Api;
import io.swagger.models.apideclaration.ApiDeclaration;
import io.swagger.models.apideclaration.ExtendedTypedObject;
import io.swagger.models.apideclaration.Items;
import io.swagger.models.apideclaration.ModelProperty;
import io.swagger.models.apideclaration.ResponseMessage;
import io.swagger.models.apideclaration.*;
import io.swagger.models.auth.ApiKeyAuthDefinition;
import io.swagger.models.auth.AuthorizationValue;
import io.swagger.models.auth.In;
import io.swagger.models.auth.OAuth2Definition;
import io.swagger.models.parameters.BodyParameter;
import io.swagger.models.parameters.FormParameter;
import io.swagger.models.parameters.HeaderParameter;
import io.swagger.models.parameters.*;
import io.swagger.models.parameters.Parameter;
import io.swagger.models.parameters.PathParameter;
import io.swagger.models.parameters.QueryParameter;
import io.swagger.models.parameters.SerializableParameter;
import io.swagger.models.properties.ArrayProperty;
import io.swagger.models.properties.Property;
import io.swagger.models.properties.PropertyBuilder;
import io.swagger.models.properties.RefProperty;
import io.swagger.models.resourcelisting.ApiInfo;
import io.swagger.models.resourcelisting.ApiKeyAuthorization;
import io.swagger.models.resourcelisting.ApiListingReference;
import io.swagger.models.resourcelisting.Authorization;
import io.swagger.models.resourcelisting.AuthorizationCodeGrant;
import io.swagger.models.resourcelisting.ImplicitGrant;
import io.swagger.models.resourcelisting.OAuth2Authorization;
import io.swagger.models.resourcelisting.ResourceListing;
import io.swagger.models.resourcelisting.*;
import io.swagger.parser.util.RemoteUrl;
import io.swagger.report.MessageBuilder;
import io.swagger.transform.migrate.ApiDeclarationMigrator;
Expand Down Expand Up @@ -344,7 +314,8 @@ public Property propertyFromTypedObject(ExtendedTypedObject obj) {
return output;
}

public Operation convertOperation(String tag, io.swagger.models.apideclaration.Operation operation) {
public Operation convertOperation(String tag, io.swagger.models.apideclaration.Operation operation,
ApiDeclaration apiDeclaration) {
Method method;

if (operation.getMethod() == null) {
Expand All @@ -366,16 +337,25 @@ public Operation convertOperation(String tag, io.swagger.models.apideclaration.O
output.parameter(convertParameter(parameter));
}

if (operation.getConsumes() != null) {
if (operation.getConsumes() != null && !operation.getConsumes().isEmpty()) {
for (String consumes : operation.getConsumes()) {
output.consumes(consumes);
}
} else if (apiDeclaration.getConsumes() != null) {
for (String consumes : apiDeclaration.getConsumes()) {
output.consumes(consumes);
}
}
if (operation.getProduces() != null) {
if (operation.getProduces() != null && !operation.getProduces().isEmpty()) {
for (String produces : operation.getProduces()) {
output.produces(produces);
}
} else if (apiDeclaration.getProduces() != null) {
for (String produces : apiDeclaration.getProduces()) {
output.produces(produces);
}
}

for (ResponseMessage message : operation.getResponseMessages()) {
Response response = new Response().description(message.getMessage());

Expand Down Expand Up @@ -502,7 +482,7 @@ public Swagger convert(ResourceListing resourceListing, List<ApiDeclaration> api
paths.put(apiPath, path);
}
for (io.swagger.models.apideclaration.Operation op : ops) {
Operation operation = convertOperation(tag, op);
Operation operation = convertOperation(tag, op, apiDeclaration);

if (op.getMethod() != null) {
path.set(op.getMethod().toString().toLowerCase(), operation);
Expand Down Expand Up @@ -541,6 +521,7 @@ public Swagger convert(ResourceListing resourceListing, List<ApiDeclaration> api
}
}


Swagger swagger = new Swagger()
.host(host)
.scheme(Scheme.forValue(scheme))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,16 @@
import io.swagger.models.Operation;
import io.swagger.models.ParamType;
import io.swagger.models.Response;
import io.swagger.models.apideclaration.ApiDeclaration;
import io.swagger.models.apideclaration.ResponseMessage;
import io.swagger.models.properties.Property;
import io.swagger.models.properties.RefProperty;
import io.swagger.parser.SwaggerCompatConverter;
import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.*;

import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.*;

public class OperationConverterTest {
SwaggerCompatConverter converter = new SwaggerCompatConverter();
Expand Down Expand Up @@ -56,7 +54,7 @@ public void convertOperation1() throws Exception {
parameters.add(param);
operation.setParameters(parameters);

Operation converted = converter.convertOperation("tag", operation);
Operation converted = converter.convertOperation("tag", operation, new ApiDeclaration());

assertTrue(converted.getTags().size() == 1);
assertEquals(converted.getTags().get(0), "tag");
Expand All @@ -78,4 +76,30 @@ public void convertOperation1() throws Exception {
RefProperty ref = (RefProperty) property;
assertEquals(ref.getSimpleRef(), "Cat");
}

@Test
public void testConvertOperation_ConsumesAndProducesInheritedFromApiDeclaration() throws Exception {
Set<String> expectedConsumes = new HashSet<>(Arrays.asList("application/json", "application/xml"));
Set<String> expectedProduces = new HashSet<>(Arrays.asList("text/plain"));

final ApiDeclaration apiDeclaration = new ApiDeclaration();
apiDeclaration.setConsumes(new ArrayList<>(expectedConsumes));
apiDeclaration.setProduces(new ArrayList<>(expectedProduces));

io.swagger.models.apideclaration.Operation operation = new io.swagger.models.apideclaration.Operation();
operation.setMethod(Method.GET);

final SwaggerCompatConverter swaggerCompatConverter = new SwaggerCompatConverter();
Operation converted = swaggerCompatConverter.convertOperation("tag", operation, apiDeclaration);

assertSetsAreEqual(expectedConsumes, converted.getConsumes());
assertSetsAreEqual(expectedProduces, converted.getProduces());
}

private void assertSetsAreEqual(Set<String> expectedConsumes, List<String> actualConsumes) {
Set<String> actualConsumesSet = new HashSet<>();
actualConsumesSet.addAll(actualConsumes);
assertEquals(expectedConsumes.size(), actualConsumes.size());
assertTrue(actualConsumesSet.containsAll(expectedConsumes));
}
}
4 changes: 2 additions & 2 deletions modules/swagger-parser/src/test/scala/RemoteUrlTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import scala.collection.JavaConverters._
@RunWith(classOf[JUnitRunner])
class RemoteUrlTest extends FlatSpec with Matchers {
it should "read a remote URL" in {
val output = RemoteUrl.urlToString("http://petstore.swagger.io/v2/pet/3", null)
val output = RemoteUrl.urlToString("http://petstore.swagger.io/v2/pet/1", null)
output should not be (null)
}

it should "set a header" in {
val av = new AuthorizationValue("accept", "application/xml", "header")
val output = RemoteUrl.urlToString("http://petstore.swagger.io/v2/pet/3", List(av).asJava)
val output = RemoteUrl.urlToString("http://petstore.swagger.io/v2/pet/1", List(av).asJava)
output.trim.charAt(0) should be('<')
}

Expand Down