com.hpe.caf.autoscale.endpoint.RequestLine Maven / Gradle / Ivy
/*
* Copyright 2015-2020 Micro Focus or one of its affiliates.
*
* 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 com.hpe.caf.autoscale.endpoint;
import static java.lang.annotation.ElementType.METHOD;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Expands the request-line supplied in the {@code value}, permitting path and query variables, or
* just the http method.
*
* ...
* @RequestLine("POST /servers")
* ...
*
* @RequestLine("GET /servers/{serverId}?count={count}")
* void get(@Param("serverId") String serverId, @Param("count") int count);
* ...
*
*
*
Note: Query params do not overwrite each other. All queries with the same
* name will be included in the request.
Relationship to JAXRS
The following
* two forms are identical.
Feign:
*
* @RequestLine("GET /servers/{serverId}?count={count}")
* void get(@Param("serverId") String serverId, @Param("count") int count);
* ...
*
*
JAX-RS:
*
* @GET @Path("/servers/{serverId}")
* void get(@PathParam("serverId") String serverId, @QueryParam("count") int count);
* ...
*
*/
@java.lang.annotation.Target(METHOD)
@Retention(RUNTIME)
@Inherited
public @interface RequestLine {
/**
* Request action type i.e. GET / DELETE / POST
* @return
*/
String action();
/**
* Request url i.e. /services
* @return
*/
String request();
/**
* The type of response to get back from the request.
* @return
*/
Class> responseType();
}