Add remaining HttpExchange annotations
See gh-28386
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* https://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.springframework.web.service.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
|
||||
|
||||
/**
|
||||
* Shortcut for {@link HttpExchange} for HTTP DELETE requests.
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 6.0
|
||||
*/
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@HttpExchange(method = "DELETE")
|
||||
public @interface DeleteExchange {
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#value}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String[] value() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#url()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String[] url() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#contentType()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String contentType() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#accept()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String[] accept() default {};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* https://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.springframework.web.service.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
|
||||
|
||||
/**
|
||||
* Shortcut for {@link HttpExchange} for HTTP HEAD requests.
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 6.0
|
||||
*/
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@HttpExchange(method = "HEAD")
|
||||
public @interface HeadExchange {
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#value}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String value() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#url()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String url() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#accept()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String[] accept() default {};
|
||||
|
||||
}
|
||||
@@ -25,20 +25,47 @@ import java.lang.annotation.Target;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.web.bind.annotation.Mapping;
|
||||
|
||||
|
||||
/**
|
||||
* Supported method parameters:
|
||||
* Annotation that declares an HTTP service method as an HTTP endpoint defined
|
||||
* through attributes of the annotation and method argument values.
|
||||
*
|
||||
* <p>The annotation may only be used at the type level for example to specify
|
||||
* a base URL path. At the method level, use one of the HTTP method specific,
|
||||
* shortcut annotations, each of which is <em>meta-annotated</em> with
|
||||
* {@link HttpExchange}:
|
||||
* <ul>
|
||||
* <li>{@link java.net.URI} -- dynamic URL
|
||||
* <li>{@link org.springframework.http.HttpMethod} - dynamic HTTP method
|
||||
* <li>{@link org.springframework.http.HttpHeaders} - request headers
|
||||
* <li>{@link org.springframework.http.HttpCookie} - request headers
|
||||
* <li>...
|
||||
* <li>{@link GetExchange}
|
||||
* <li>{@link PostExchange}
|
||||
* <li>{@link PutExchange}
|
||||
* <li>{@link PatchExchange}
|
||||
* <li>{@link DeleteExchange}
|
||||
* <li>{@link OptionsExchange}
|
||||
* <li>{@link HeadExchange}
|
||||
* </ul>
|
||||
*
|
||||
* <p>Supported method arguments:
|
||||
* <table>
|
||||
* <tr>
|
||||
* <th>Method Argument</th>
|
||||
* <th>Description</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link org.springframework.http.HttpMethod}</td>
|
||||
* <td>Set the HTTP method for the request, overriding the annotation
|
||||
* {@link #method()} attribute value</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link org.springframework.web.bind.annotation.PathVariable @PathVariable}</td>
|
||||
* <td>Provide a path variable to expand the URI template with. This may be an
|
||||
* individual value or a Map of values.</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 6.0
|
||||
*/
|
||||
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@Mapping
|
||||
@@ -83,5 +110,4 @@ public @interface HttpExchange {
|
||||
*/
|
||||
String[] accept() default {};
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* https://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.springframework.web.service.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
|
||||
|
||||
/**
|
||||
* Shortcut for {@link HttpExchange} for HTTP OPTIONS requests.
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 6.0
|
||||
*/
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@HttpExchange(method = "OPTIONS")
|
||||
public @interface OptionsExchange {
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#value}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String value() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#url()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String url() default "";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* https://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.springframework.web.service.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
|
||||
|
||||
/**
|
||||
* Shortcut for {@link HttpExchange} for HTTP PATCH requests.
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 6.0
|
||||
*/
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@HttpExchange(method = "PATCH")
|
||||
public @interface PatchExchange {
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#value}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String[] value() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#url()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String[] url() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#contentType()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String contentType() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#accept()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String[] accept() default {};
|
||||
|
||||
}
|
||||
@@ -55,4 +55,10 @@ public @interface PutExchange {
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String contentType() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link HttpExchange#accept()}.
|
||||
*/
|
||||
@AliasFor(annotation = HttpExchange.class)
|
||||
String[] accept() default {};
|
||||
|
||||
}
|
||||
|
||||
@@ -33,18 +33,58 @@ import org.springframework.http.ResponseEntity;
|
||||
*/
|
||||
public interface HttpClientAdapter {
|
||||
|
||||
/**
|
||||
* Perform the given request, and release the response content, if any.
|
||||
* @param requestValues the request to perform
|
||||
* @return {@code Mono} that completes when the request is fully executed
|
||||
* and the response content is released.
|
||||
*/
|
||||
Mono<Void> requestToVoid(HttpRequestValues requestValues);
|
||||
|
||||
/**
|
||||
* Perform the given request, release the response content, and return the
|
||||
* response headers.
|
||||
* @param requestValues the request to perform
|
||||
* @return {@code Mono} that returns the response headers the request is
|
||||
* fully executed and the response content released.
|
||||
*/
|
||||
Mono<HttpHeaders> requestToHeaders(HttpRequestValues requestValues);
|
||||
|
||||
/**
|
||||
* Perform the given request and decode the response content to the given type.
|
||||
* @param requestValues the request to perform
|
||||
* @param bodyType the target type to decode to
|
||||
* @return {@code Mono} that returns the decoded response.
|
||||
* @param <T> the type the response is decoded to
|
||||
*/
|
||||
<T> Mono<T> requestToBody(HttpRequestValues requestValues, ParameterizedTypeReference<T> bodyType);
|
||||
|
||||
/**
|
||||
* Perform the given request and decode the response content to a stream with
|
||||
* elements of the given type.
|
||||
* @param requestValues the request to perform
|
||||
* @param bodyType the target stream element type to decode to
|
||||
* @return {@code Flux} with decoded stream elements.
|
||||
* @param <T> the type the response is decoded to
|
||||
*/
|
||||
<T> Flux<T> requestToBodyFlux(HttpRequestValues requestValues, ParameterizedTypeReference<T> bodyType);
|
||||
|
||||
/**
|
||||
* Variant of {@link #requestToVoid(HttpRequestValues)} with additional
|
||||
* access to the response status and headers.
|
||||
*/
|
||||
Mono<ResponseEntity<Void>> requestToBodilessEntity(HttpRequestValues requestValues);
|
||||
|
||||
/**
|
||||
* Variant of {@link #requestToBody(HttpRequestValues, ParameterizedTypeReference)}
|
||||
* with additional access to the response status and headers.
|
||||
*/
|
||||
<T> Mono<ResponseEntity<T>> requestToEntity(HttpRequestValues requestValues, ParameterizedTypeReference<T> bodyType);
|
||||
|
||||
/**
|
||||
* Variant of {@link #requestToBodyFlux(HttpRequestValues, ParameterizedTypeReference)}
|
||||
* with additional access to the response status and headers.
|
||||
*/
|
||||
<T> Mono<ResponseEntity<Flux<T>>> requestToEntityFlux(HttpRequestValues requestValues, ParameterizedTypeReference<T> bodyType);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user