1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.juneau.rest.annotation;
18
19 import org.apache.juneau.*;
20 import org.apache.juneau.http.annotation.*;
21 import org.apache.juneau.json.*;
22 import org.apache.juneau.rest.mock.*;
23 import org.junit.jupiter.api.*;
24
25 class Rest_AnnotationInheritance_Test extends TestBase {
26
27 //------------------------------------------------------------------------------------------------------------------
28 // @Body on parameter
29 //------------------------------------------------------------------------------------------------------------------
30
31 @Rest(serializers=Json5Serializer.class, parsers=JsonParser.class, defaultAccept="text/json")
32 public interface IA {
33 @RestPut String a(@Content String b);
34 @RestGet String b(@Query("foo") String b);
35 @RestGet String c(@Header("foo") String b);
36 }
37
38 public static class A implements IA {
39 @Override
40 public String a(String b) {
41 return b;
42 }
43 @Override
44 public String b(String b) {
45 return b;
46 }
47 @Override
48 public String c(String b) {
49 return b;
50 }
51 }
52
53 @Test void a01_inheritedFromInterface() throws Exception {
54 var a = MockRestClient.build(A.class);
55 a.put("/a", "foo").json().run().assertContent("'foo'");
56 a.get("/b").queryData("foo", "bar").json().run().assertContent("'bar'");
57 a.get("/c").header("foo", "bar").json().run().assertContent("'bar'");
58 }
59 }