From c6a6d370ad757b4d3a8126b066a920726d66d274 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Tue, 29 Jun 2021 16:06:53 +0200 Subject: [PATCH] =?UTF-8?q?#1563=20-=20Deprecate=20PayloadMetadata.getProp?= =?UTF-8?q?ertyMetadata(=E2=80=A6).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This method is currently used in test cases only and the just introduced ability to rename property makes the method not reliably usable as the way it is named doesn't convey which name is to be used. It currently is the potentially renamed value. Moving to the actual property name as input creates stronger boundaries to assume a type backing the metadata, which we want to avoid. --- .../hateoas/AffordanceModel.java | 5 +++++ .../hateoas/mediatype/PropertyUtilsTest.java | 17 ++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/AffordanceModel.java b/src/main/java/org/springframework/hateoas/AffordanceModel.java index 1c635d675..4d5eb23ca 100644 --- a/src/main/java/org/springframework/hateoas/AffordanceModel.java +++ b/src/main/java/org/springframework/hateoas/AffordanceModel.java @@ -204,6 +204,11 @@ public interface PayloadMetadata { */ Stream stream(); + /** + * @deprecated since 1.4, for removal in 1.5. Prefer {@link #stream()} and selecting individual + * {@code PropertyMetadata} instances yourself. + */ + @Deprecated default Optional getPropertyMetadata(String name) { return stream().filter(it -> it.hasName(name)).findFirst(); } diff --git a/src/test/java/org/springframework/hateoas/mediatype/PropertyUtilsTest.java b/src/test/java/org/springframework/hateoas/mediatype/PropertyUtilsTest.java index 895d2b656..e44b89ab6 100644 --- a/src/test/java/org/springframework/hateoas/mediatype/PropertyUtilsTest.java +++ b/src/test/java/org/springframework/hateoas/mediatype/PropertyUtilsTest.java @@ -140,11 +140,11 @@ void considersAccessorAvailablility() { PayloadMetadata metadata = PropertyUtils.getExposedProperties(MethodExposurePayload.class); - assertThat(metadata.getPropertyMetadata("readWrite")) // + assertThat(getProperty(metadata, "readWrite")) // .map(PropertyMetadata::isReadOnly) // .hasValue(false); - assertThat(metadata.getPropertyMetadata("readOnly")) // + assertThat(getProperty(metadata, "readOnly")) // .map(PropertyMetadata::isReadOnly) // .hasValue(true); } @@ -154,15 +154,15 @@ void considersJsr303Annotations() { InputPayloadMetadata metadata = PropertyUtils.getExposedProperties(Jsr303SamplePayload.class); - assertThat(metadata.getPropertyMetadata("nonNull")).hasValueSatisfying(it -> { + assertThat(getProperty(metadata, "nonNull")).hasValueSatisfying(it -> { assertThat(it.isRequired()).isTrue(); }); - assertThat(metadata.getPropertyMetadata("pattern")).hasValueSatisfying(it -> { + assertThat(getProperty(metadata, "pattern")).hasValueSatisfying(it -> { assertThat(it.getPattern()).hasValue("\\w"); }); - assertThat(metadata.getPropertyMetadata("annotated")).hasValueSatisfying(it -> { + assertThat(getProperty(metadata, "annotated")).hasValueSatisfying(it -> { assertThat(it.getPattern()).hasValue("regex"); }); } @@ -172,7 +172,7 @@ void considersPropertyWithoutReader() throws Exception { InputPayloadMetadata metadata = PropertyUtils.getExposedProperties(WithoutReaderMethod.class); - assertThat(metadata.getPropertyMetadata("firstname")).isPresent(); + assertThat(getProperty(metadata, "firstname")).isPresent(); } @TestFactory @@ -252,8 +252,7 @@ static class TypeAnnotated {} static class MethodExposurePayload { - @Getter - @Setter String readWrite; + @Getter @Setter String readWrite; @Getter String readOnly; } @@ -308,7 +307,7 @@ static class InputTypes { public void verify(InputPayloadMetadata metadata) { - assertThat(metadata.getPropertyMetadata(property)) + assertThat(PropertyUtilsTest.getProperty(metadata, property)) .map(PropertyMetadata::getInputType) .hasValue(type.toString()); }