diff --git a/spring-beans/spring-beans.gradle b/spring-beans/spring-beans.gradle index a93a798118..b8ead1ac61 100644 --- a/spring-beans/spring-beans.gradle +++ b/spring-beans/spring-beans.gradle @@ -5,7 +5,7 @@ apply plugin: "groovy" dependencies { compile(project(':spring-core')) optional("javax.inject:javax.inject:1") - optional("org.yaml:snakeyaml:1.20") + optional("org.yaml:snakeyaml:1.21") optional("org.codehaus.groovy:groovy-all:${groovyVersion}") optional("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") optional("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}") diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java index d8f6e41a99..37e3830cec 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 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. @@ -64,6 +64,8 @@ import org.springframework.lang.Nullable; * Note that the value of "foo" in the first document is not simply replaced * with the value in the second, but its nested values are merged. * + *

Requires SnakeYAML 1.18 or higher, as of Spring Framework 5.0.6. + * * @author Dave Syer * @author Juergen Hoeller * @since 4.1 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 fb55ab37cc..baf243bffe 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 @@ -18,7 +18,6 @@ package org.springframework.beans.factory.config; import java.io.IOException; import java.io.Reader; -import java.util.AbstractMap; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -26,14 +25,11 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Properties; -import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.constructor.Constructor; -import org.yaml.snakeyaml.nodes.MappingNode; -import org.yaml.snakeyaml.parser.ParserException; import org.yaml.snakeyaml.reader.UnicodeReader; import org.springframework.core.CollectionFactory; @@ -45,6 +41,8 @@ import org.springframework.util.StringUtils; /** * Base class for YAML factories. * + *

Requires SnakeYAML 1.18 or higher, as of Spring Framework 5.0.6. + * * @author Dave Syer * @author Juergen Hoeller * @since 4.1 @@ -144,9 +142,14 @@ public abstract class YamlProcessor { /** * Create the {@link Yaml} instance to use. + *

The default implementation sets the "allowDuplicateKeys" flag to {@code false}, + * enabling built-in duplicate key handling in SnakeYAML 1.18+. + * @see LoaderOptions#setAllowDuplicateKeys(boolean) */ protected Yaml createYaml() { - return new Yaml(new StrictMapAppenderConstructor()); + LoaderOptions options = new LoaderOptions(); + options.setAllowDuplicateKeys(false); + return new Yaml(options); } private boolean process(MatchCallback callback, Yaml yaml, Resource resource) { @@ -390,45 +393,4 @@ public abstract class YamlProcessor { FIRST_FOUND } - - /** - * A specialized {@link Constructor} that checks for duplicate keys. - */ - protected static class StrictMapAppenderConstructor extends Constructor { - - // Declared as public for use in subclasses - public StrictMapAppenderConstructor() { - super(); - } - - @Override - protected Map constructMapping(MappingNode node) { - try { - return super.constructMapping(node); - } - catch (IllegalStateException ex) { - throw new ParserException("while parsing MappingNode", - node.getStartMark(), ex.getMessage(), node.getEndMark()); - } - } - - @Override - protected Map createDefaultMap() { - final Map delegate = super.createDefaultMap(); - return new AbstractMap() { - @Override - public Object put(Object key, Object value) { - if (delegate.containsKey(key)) { - throw new IllegalStateException("Duplicate key: " + key); - } - return delegate.put(key, value); - } - @Override - public Set> entrySet() { - return delegate.entrySet(); - } - }; - } - } - } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.java index dec7902506..38d97af44c 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 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. @@ -74,6 +74,8 @@ import org.springframework.lang.Nullable; * servers[1]=foo.bar.com * * + *

Requires SnakeYAML 1.18 or higher, as of Spring Framework 5.0.6. + * * @author Dave Syer * @author Stephane Nicoll * @author Juergen Hoeller diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlMapFactoryBeanTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlMapFactoryBeanTests.java index 91c0053e68..fa07de82e4 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlMapFactoryBeanTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlMapFactoryBeanTests.java @@ -19,10 +19,10 @@ package org.springframework.beans.factory.config; import java.io.IOException; import java.io.InputStream; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; import org.junit.Test; +import org.yaml.snakeyaml.constructor.DuplicateKeyException; import org.springframework.core.io.AbstractResource; import org.springframework.core.io.ByteArrayResource; @@ -42,27 +42,27 @@ public class YamlMapFactoryBeanTests { @Test - public void testSetIgnoreResourceNotFound() throws Exception { + public void testSetIgnoreResourceNotFound() { this.factory.setResolutionMethod(YamlMapFactoryBean.ResolutionMethod.OVERRIDE_AND_IGNORE); this.factory.setResources(new FileSystemResource("non-exsitent-file.yml")); assertEquals(0, this.factory.getObject().size()); } @Test(expected = IllegalStateException.class) - public void testSetBarfOnResourceNotFound() throws Exception { + public void testSetBarfOnResourceNotFound() { this.factory.setResources(new FileSystemResource("non-exsitent-file.yml")); assertEquals(0, this.factory.getObject().size()); } @Test - public void testGetObject() throws Exception { + public void testGetObject() { this.factory.setResources(new ByteArrayResource("foo: bar".getBytes())); assertEquals(1, this.factory.getObject().size()); } @SuppressWarnings("unchecked") @Test - public void testOverrideAndRemoveDefaults() throws Exception { + public void testOverrideAndRemoveDefaults() { this.factory.setResources(new ByteArrayResource("foo:\n bar: spam".getBytes()), new ByteArrayResource("foo:\n spam: bar".getBytes())); @@ -71,7 +71,7 @@ public class YamlMapFactoryBeanTests { } @Test - public void testFirstFound() throws Exception { + public void testFirstFound() { this.factory.setResolutionMethod(YamlProcessor.ResolutionMethod.FIRST_FOUND); this.factory.setResources(new AbstractResource() { @Override @@ -88,7 +88,7 @@ public class YamlMapFactoryBeanTests { } @Test - public void testMapWithPeriodsInKey() throws Exception { + public void testMapWithPeriodsInKey() { this.factory.setResources(new ByteArrayResource("foo:\n ? key1.key2\n : value".getBytes())); Map map = this.factory.getObject(); @@ -103,7 +103,7 @@ public class YamlMapFactoryBeanTests { } @Test - public void testMapWithIntegerValue() throws Exception { + public void testMapWithIntegerValue() { this.factory.setResources(new ByteArrayResource("foo:\n ? key1.key2\n : 3".getBytes())); Map map = this.factory.getObject(); @@ -117,33 +117,10 @@ public class YamlMapFactoryBeanTests { assertEquals(Integer.valueOf(3), sub.get("key1.key2")); } - @Test - public void mapWithEmptyArrayValue() { - this.factory.setResources(new ByteArrayResource("a: alpha\ntest: []".getBytes())); - assertTrue(this.factory.getObject().containsKey("test")); - assertEquals(((List)this.factory.getObject().get("test")).size(), 0); - } - - @Test - public void mapWithEmptyValue() { - this.factory.setResources(new ByteArrayResource("a: alpha\ntest:".getBytes())); - assertTrue(this.factory.getObject().containsKey("test")); - assertNull(this.factory.getObject().get("test")); - } - - @Test - public void testDuplicateKey() throws Exception { + @Test(expected = DuplicateKeyException.class) + public void testDuplicateKey() { this.factory.setResources(new ByteArrayResource("mymap:\n foo: bar\nmymap:\n bar: foo".getBytes())); - Map map = this.factory.getObject(); - - assertEquals(1, map.size()); - assertTrue(map.containsKey("mymap")); - Object object = map.get("mymap"); - assertTrue(object instanceof LinkedHashMap); - @SuppressWarnings("unchecked") - Map sub = (Map) object; - assertEquals(1, sub.size()); - assertEquals("foo", sub.get("bar")); + this.factory.getObject().get("mymap"); } } diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlProcessorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlProcessorTests.java index 51740c7418..1673e2caa0 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlProcessorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/config/YamlProcessorTests.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. @@ -18,7 +18,6 @@ package org.springframework.beans.factory.config; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Properties; import org.junit.Rule; import org.junit.Test; @@ -29,7 +28,6 @@ import org.yaml.snakeyaml.scanner.ScannerException; import org.springframework.core.io.ByteArrayResource; import static org.junit.Assert.*; -import static org.springframework.beans.factory.config.YamlProcessor.*; /** * Tests for {@link YamlProcessor}. @@ -48,91 +46,65 @@ public class YamlProcessorTests { @Test public void arrayConvertedToIndexedBeanReference() { this.processor.setResources(new ByteArrayResource("foo: bar\nbar: [1,2,3]".getBytes())); - this.processor.process(new MatchCallback() { - @Override - public void process(Properties properties, Map map) { - assertEquals(4, properties.size()); - assertEquals("bar", properties.get("foo")); - assertEquals("bar", properties.getProperty("foo")); - assertEquals(1, properties.get("bar[0]")); - assertEquals("1", properties.getProperty("bar[0]")); - assertEquals(2, properties.get("bar[1]")); - assertEquals("2", properties.getProperty("bar[1]")); - assertEquals(3, properties.get("bar[2]")); - assertEquals("3", properties.getProperty("bar[2]")); - } + this.processor.process((properties, map) -> { + assertEquals(4, properties.size()); + assertEquals("bar", properties.get("foo")); + assertEquals("bar", properties.getProperty("foo")); + assertEquals(1, properties.get("bar[0]")); + assertEquals("1", properties.getProperty("bar[0]")); + assertEquals(2, properties.get("bar[1]")); + assertEquals("2", properties.getProperty("bar[1]")); + assertEquals(3, properties.get("bar[2]")); + assertEquals("3", properties.getProperty("bar[2]")); }); } @Test - public void testStringResource() throws Exception { + public void testStringResource() { this.processor.setResources(new ByteArrayResource("foo # a document that is a literal".getBytes())); - this.processor.process(new MatchCallback() { - @Override - public void process(Properties properties, Map map) { - assertEquals("foo", map.get("document")); - } - }); + this.processor.process((properties, map) -> assertEquals("foo", map.get("document"))); } @Test - public void testBadDocumentStart() throws Exception { + public void testBadDocumentStart() { this.processor.setResources(new ByteArrayResource("foo # a document\nbar: baz".getBytes())); this.exception.expect(ParserException.class); this.exception.expectMessage("line 2, column 1"); - this.processor.process(new MatchCallback() { - @Override - public void process(Properties properties, Map map) { - } - }); + this.processor.process((properties, map) -> {}); } @Test - public void testBadResource() throws Exception { + public void testBadResource() { this.processor.setResources(new ByteArrayResource("foo: bar\ncd\nspam:\n foo: baz".getBytes())); this.exception.expect(ScannerException.class); this.exception.expectMessage("line 3, column 1"); - this.processor.process(new MatchCallback() { - @Override - public void process(Properties properties, Map map) { - } - }); + this.processor.process((properties, map) -> {}); } @Test public void mapConvertedToIndexedBeanReference() { this.processor.setResources(new ByteArrayResource("foo: bar\nbar:\n spam: bucket".getBytes())); - this.processor.process(new MatchCallback() { - @Override - public void process(Properties properties, Map map) { - // System.err.println(properties); - assertEquals("bucket", properties.get("bar.spam")); - assertEquals(2, properties.size()); - } + this.processor.process((properties, map) -> { + assertEquals("bucket", properties.get("bar.spam")); + assertEquals(2, properties.size()); }); } @Test public void integerKeyBehaves() { this.processor.setResources(new ByteArrayResource("foo: bar\n1: bar".getBytes())); - this.processor.process(new MatchCallback() { - @Override - public void process(Properties properties, Map map) { - assertEquals("bar", properties.get("[1]")); - assertEquals(2, properties.size()); - } + this.processor.process((properties, map) -> { + assertEquals("bar", properties.get("[1]")); + assertEquals(2, properties.size()); }); } @Test public void integerDeepKeyBehaves() { this.processor.setResources(new ByteArrayResource("foo:\n 1: bar".getBytes())); - this.processor.process(new MatchCallback() { - @Override - public void process(Properties properties, Map map) { - assertEquals("bar", properties.get("foo[1]")); - assertEquals(1, properties.size()); - } + this.processor.process((properties, map) -> { + assertEquals("bar", properties.get("foo[1]")); + assertEquals(1, properties.size()); }); } @@ -140,18 +112,15 @@ public class YamlProcessorTests { @SuppressWarnings("unchecked") public void flattenedMapIsSameAsPropertiesButOrdered() { this.processor.setResources(new ByteArrayResource("foo: bar\nbar:\n spam: bucket".getBytes())); - this.processor.process(new MatchCallback() { - @Override - public void process(Properties properties, Map map) { - assertEquals("bucket", properties.get("bar.spam")); - assertEquals(2, properties.size()); - Map flattenedMap = processor.getFlattenedMap(map); - assertEquals("bucket", flattenedMap.get("bar.spam")); - assertEquals(2, flattenedMap.size()); - assertTrue(flattenedMap instanceof LinkedHashMap); - Map bar = (Map) map.get("bar"); - assertEquals("bucket", bar.get("spam")); - } + this.processor.process((properties, map) -> { + assertEquals("bucket", properties.get("bar.spam")); + assertEquals(2, properties.size()); + Map flattenedMap = processor.getFlattenedMap(map); + assertEquals("bucket", flattenedMap.get("bar.spam")); + assertEquals(2, flattenedMap.size()); + assertTrue(flattenedMap instanceof LinkedHashMap); + Map bar = (Map) map.get("bar"); + assertEquals("bucket", bar.get("spam")); }); } 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 838dcb50b9..0fa759c277 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 @@ -19,11 +19,11 @@ package org.springframework.beans.factory.config; import java.util.Map; import java.util.Properties; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.DuplicateKeyException; import org.yaml.snakeyaml.scanner.ScannerException; import org.springframework.core.io.ByteArrayResource; @@ -46,17 +46,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())); @@ -66,7 +65,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()), @@ -77,27 +76,24 @@ public class YamlPropertiesFactoryBeanTests { assertThat(properties.getProperty("foo.bar"), equalTo("spam")); } - @Test - public void testLoadResourcesWithInternalOverride() throws Exception { + @Test(expected = DuplicateKeyException.class) + public void testLoadResourcesWithInternalOverride() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource( "foo: bar\nspam:\n foo: baz\nfoo: bucket".getBytes())); - Properties properties = factory.getObject(); - assertThat(properties.getProperty("foo"), equalTo("bucket")); + factory.getObject(); } - @Test - @Ignore("We can't fail on duplicate keys because the Map is created by the YAML library") - public void testLoadResourcesWithNestedInternalOverride() throws Exception { + @Test(expected = DuplicateKeyException.class) + public void testLoadResourcesWithNestedInternalOverride() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(new ByteArrayResource( "foo:\n bar: spam\n foo: baz\nbreak: it\nfoo: bucket".getBytes())); - Properties properties = factory.getObject(); - assertThat(properties.getProperty("foo.bar"), equalTo("spam")); + factory.getObject(); } @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())); @@ -107,37 +103,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((DocumentMatcher) 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((DocumentMatcher) 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")); @@ -146,7 +134,7 @@ public class YamlPropertiesFactoryBeanTests { } @Test - public void testLoadResourceWithoutDefaultMatch() throws Exception { + public void testLoadResourceWithoutDefaultMatch() { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setMatchDefault(false); factory.setResources(new ByteArrayResource( @@ -168,20 +156,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((DocumentMatcher) 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")); @@ -190,7 +175,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")); @@ -199,7 +184,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(); @@ -217,7 +202,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(); @@ -227,7 +212,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(); @@ -237,7 +222,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() @@ -255,8 +240,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")); } }