| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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.apache.servicecomb.it.testcase; |
| |
| import org.apache.servicecomb.it.Consumers; |
| import org.apache.servicecomb.swagger.SwaggerUtils; |
| import org.apache.servicecomb.swagger.generator.SwaggerGenerator; |
| import org.junit.jupiter.api.Test; |
| |
| import io.swagger.models.Swagger; |
| import org.junit.jupiter.api.Assertions; |
| |
| public class TestDefaultMethod { |
| interface DataTypePojoIntf { |
| default int intBodyWithDefault() { |
| return intBody(100); |
| } |
| |
| int intBody(int input); |
| } |
| |
| private static Consumers<DataTypePojoIntf> consumersPojo = new Consumers<>("dataTypePojo", |
| DataTypePojoIntf.class); |
| |
| @Test |
| public void should_support_default_method() { |
| Assertions.assertEquals(100, consumersPojo.getIntf().intBodyWithDefault()); |
| } |
| |
| @Test |
| public void should_generate_swagger_without_default_method() { |
| Swagger swagger = SwaggerGenerator.generate(DataTypePojoIntf.class); |
| Assertions.assertEquals("---\n" |
| + "swagger: \"2.0\"\n" |
| + "info:\n" |
| + " version: \"1.0.0\"\n" |
| + " title: \"swagger definition for org.apache.servicecomb.it.testcase.TestDefaultMethod$DataTypePojoIntf\"\n" |
| + " x-java-interface: \"org.apache.servicecomb.it.testcase.TestDefaultMethod$DataTypePojoIntf\"\n" |
| + "basePath: \"/DataTypePojoIntf\"\n" |
| + "consumes:\n" |
| + "- \"application/json\"\n" |
| + "produces:\n" |
| + "- \"application/json\"\n" |
| + "paths:\n" |
| + " /intBody:\n" |
| + " post:\n" |
| + " operationId: \"intBody\"\n" |
| + " parameters:\n" |
| + " - in: \"body\"\n" |
| + " name: \"input\"\n" |
| + " required: false\n" |
| + " schema:\n" |
| + " $ref: \"#/definitions/intBodyBody\"\n" |
| + " responses:\n" |
| + " \"200\":\n" |
| + " description: \"response of 200\"\n" |
| + " schema:\n" |
| + " type: \"integer\"\n" |
| + " format: \"int32\"\n" |
| + "definitions:\n" |
| + " intBodyBody:\n" |
| + " type: \"object\"\n" |
| + " properties:\n" |
| + " input:\n" |
| + " type: \"integer\"\n" |
| + " format: \"int32\"\n", |
| SwaggerUtils.swaggerToString(swagger)); |
| } |
| } |