From 357ca2167509b06648c60fc7a0b7a0b371466e66 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 6 Jun 2018 21:27:00 +0200 Subject: [PATCH] Correct code example for YamlProcessor.setDocumentMatchers Issue: SPR-16849 (cherry picked from commit 455d8ac) --- .../beans/factory/config/YamlProcessor.java | 14 ++-- .../YamlPropertiesFactoryBeanTests.java | 74 ++++++++----------- 2 files changed, 37 insertions(+), 51 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java index 38381ea176..2f43f2e84c 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java @@ -76,15 +76,16 @@ public abstract class YamlProcessor { * name: My Cool App * * when mapped with - * documentMatchers = YamlProcessor.mapMatcher({"environment": "prod"}) + *
+	 * setDocumentMatchers(properties ->
+	 *     ("prod".equals(properties.getProperty("environment")) ? MatchStatus.FOUND : MatchStatus.NOT_FOUND));
+	 * 
* would end up as *
 	 * environment=prod
 	 * url=http://foo.bar.com
 	 * name=My Cool App
-	 * url=http://dev.bar.com
 	 * 
- * @param matchers a map of keys to value patterns (regular expressions) */ public void setDocumentMatchers(DocumentMatcher... matchers) { this.documentMatchers = Arrays.asList(matchers); @@ -93,8 +94,7 @@ public abstract class YamlProcessor { /** * Flag indicating that a document for which all the * {@link #setDocumentMatchers(DocumentMatcher...) document matchers} abstain will - * nevertheless match. - * @param matchDefault the flag to set (default true) + * nevertheless match. Default is {@code true}. */ public void setMatchDefault(boolean matchDefault) { this.matchDefault = matchDefault; @@ -103,9 +103,7 @@ public abstract class YamlProcessor { /** * Method to use for resolving resources. Each resource will be converted to a Map, * so this property is used to decide which map entries to keep in the final output - * from this factory. - * @param resolutionMethod the resolution method to set (defaults to - * {@link ResolutionMethod#OVERRIDE}). + * from this factory. Default is {@link ResolutionMethod#OVERRIDE}. */ public void setResolutionMethod(ResolutionMethod resolutionMethod) { Assert.notNull(resolutionMethod, "ResolutionMethod must not be null"); diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBeanTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBeanTests.java index 0bfa512777..fe2ca4945f 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBeanTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBeanTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2018 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. @@ -47,17 +47,16 @@ public class YamlPropertiesFactoryBeanTests { @Test - public void testLoadResource() throws Exception { + public void testLoadResource() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); - factory.setResources(new ByteArrayResource( - "foo: bar\nspam:\n foo: baz".getBytes())); + factory.setResources(new ByteArrayResource("foo: bar\nspam:\n foo: baz".getBytes())); Properties properties = factory.getObject(); assertThat(properties.getProperty("foo"), equalTo("bar")); assertThat(properties.getProperty("spam.foo"), equalTo("baz")); } @Test - public void testBadResource() throws Exception { + public void testBadResource() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource( "foo: bar\ncd\nspam:\n foo: baz".getBytes())); @@ -67,7 +66,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadResourcesWithOverride() throws Exception { + public void testLoadResourcesWithOverride() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources( new ByteArrayResource("foo: bar\nspam:\n foo: baz".getBytes()), @@ -79,7 +78,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadResourcesWithInternalOverride() throws Exception { + public void testLoadResourcesWithInternalOverride() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource( "foo: bar\nspam:\n foo: baz\nfoo: bucket".getBytes())); @@ -89,7 +88,7 @@ public class YamlPropertiesFactoryBeanTests { @Test @Ignore("We can't fail on duplicate keys because the Map is created by the YAML library") - public void testLoadResourcesWithNestedInternalOverride() throws Exception { + public void testLoadResourcesWithNestedInternalOverride() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource( "foo:\n bar: spam\n foo: baz\nbreak: it\nfoo: bucket".getBytes())); @@ -98,7 +97,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadResourceWithMultipleDocuments() throws Exception { + public void testLoadResourceWithMultipleDocuments() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource( "foo: bar\nspam: baz\n---\nfoo: bag".getBytes())); @@ -108,37 +107,29 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadResourceWithSelectedDocuments() throws Exception { + public void testLoadResourceWithSelectedDocuments() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource( "foo: bar\nspam: baz\n---\nfoo: bag\nspam: bad".getBytes())); - factory.setDocumentMatchers(new DocumentMatcher() { - @Override - public MatchStatus matches(Properties properties) { - return ("bag".equals(properties.getProperty("foo")) ? - MatchStatus.FOUND : MatchStatus.NOT_FOUND); - } - }); + factory.setDocumentMatchers(properties -> ("bag".equals(properties.getProperty("foo")) ? + MatchStatus.FOUND : MatchStatus.NOT_FOUND)); Properties properties = factory.getObject(); assertThat(properties.getProperty("foo"), equalTo("bag")); assertThat(properties.getProperty("spam"), equalTo("bad")); } @Test - public void testLoadResourceWithDefaultMatch() throws Exception { + public void testLoadResourceWithDefaultMatch() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setMatchDefault(true); factory.setResources(new ByteArrayResource( "one: two\n---\nfoo: bar\nspam: baz\n---\nfoo: bag\nspam: bad".getBytes())); - factory.setDocumentMatchers(new DocumentMatcher() { - @Override - public MatchStatus matches(Properties properties) { - if (!properties.containsKey("foo")) { - return MatchStatus.ABSTAIN; - } - return ("bag".equals(properties.getProperty("foo")) ? - MatchStatus.FOUND : MatchStatus.NOT_FOUND); + factory.setDocumentMatchers(properties -> { + if (!properties.containsKey("foo")) { + return MatchStatus.ABSTAIN; } + return ("bag".equals(properties.getProperty("foo")) ? + MatchStatus.FOUND : MatchStatus.NOT_FOUND); }); Properties properties = factory.getObject(); assertThat(properties.getProperty("foo"), equalTo("bag")); @@ -147,7 +138,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadResourceWithoutDefaultMatch() throws Exception { + public void testLoadResourceWithoutDefaultMatch() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setMatchDefault(false); factory.setResources(new ByteArrayResource( @@ -169,20 +160,17 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadResourceWithDefaultMatchSkippingMissedMatch() throws Exception { + public void testLoadResourceWithDefaultMatchSkippingMissedMatch() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setMatchDefault(true); factory.setResources(new ByteArrayResource( "one: two\n---\nfoo: bag\nspam: bad\n---\nfoo: bar\nspam: baz".getBytes())); - factory.setDocumentMatchers(new DocumentMatcher() { - @Override - public MatchStatus matches(Properties properties) { - if (!properties.containsKey("foo")) { - return MatchStatus.ABSTAIN; - } - return ("bag".equals(properties.getProperty("foo")) ? - MatchStatus.FOUND : MatchStatus.NOT_FOUND); + factory.setDocumentMatchers(properties -> { + if (!properties.containsKey("foo")) { + return MatchStatus.ABSTAIN; } + return ("bag".equals(properties.getProperty("foo")) ? + MatchStatus.FOUND : MatchStatus.NOT_FOUND); }); Properties properties = factory.getObject(); assertThat(properties.getProperty("foo"), equalTo("bag")); @@ -191,7 +179,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadNonExistentResource() throws Exception { + public void testLoadNonExistentResource() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResolutionMethod(ResolutionMethod.OVERRIDE_AND_IGNORE); factory.setResources(new ClassPathResource("no-such-file.yml")); @@ -200,7 +188,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadNull() throws Exception { + public void testLoadNull() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource("foo: bar\nspam:".getBytes())); Properties properties = factory.getObject(); @@ -209,7 +197,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadArrayOfString() throws Exception { + public void testLoadArrayOfString() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource("foo:\n- bar\n- baz".getBytes())); Properties properties = factory.getObject(); @@ -219,7 +207,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadArrayOfInteger() throws Exception { + public void testLoadArrayOfInteger() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource("foo:\n- 1\n- 2".getBytes())); Properties properties = factory.getObject(); @@ -229,7 +217,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadArrayOfObject() throws Exception { + public void testLoadArrayOfObject() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource( "foo:\n- bar:\n spam: crap\n- baz\n- one: two\n three: four".getBytes() @@ -247,8 +235,8 @@ public class YamlPropertiesFactoryBeanTests { public void testYaml() { Yaml yaml = new Yaml(); Map map = yaml.loadAs("foo: bar\nspam:\n foo: baz", Map.class); - assertThat(map.get("foo"), equalTo((Object) "bar")); - assertThat(((Map) map.get("spam")).get("foo"), equalTo((Object) "baz")); + assertThat(map.get("foo"), equalTo("bar")); + assertThat(((Map) map.get("spam")).get("foo"), equalTo("baz")); } }