parent
							
								
									79d3e3080f
								
							
						
					
					
						commit
						522ea0a90e
					
				|  | @ -1,5 +1,5 @@ | ||||||
| /* | /* | ||||||
|  * Copyright 2012-2019 the original author or authors. |  * Copyright 2012-2022 the original author or authors. | ||||||
|  * |  * | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  * you may not use this file except in compliance with the License. |  * you may not use this file except in compliance with the License. | ||||||
|  | @ -39,12 +39,12 @@ public class BasicJsonParser extends AbstractJsonParser { | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public Map<String, Object> parseMap(String json) { | 	public Map<String, Object> parseMap(String json) { | ||||||
| 		return parseMap(json, this::parseMapInternal); | 		return tryParse(() -> parseMap(json, this::parseMapInternal), Exception.class); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public List<Object> parseList(String json) { | 	public List<Object> parseList(String json) { | ||||||
| 		return parseList(json, this::parseListInternal); | 		return tryParse(() -> parseList(json, this::parseListInternal), Exception.class); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private List<Object> parseListInternal(String json) { | 	private List<Object> parseListInternal(String json) { | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| /* | /* | ||||||
|  * Copyright 2012-2019 the original author or authors. |  * Copyright 2012-2022 the original author or authors. | ||||||
|  * |  * | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  * you may not use this file except in compliance with the License. |  * you may not use this file except in compliance with the License. | ||||||
|  | @ -41,12 +41,14 @@ public class GsonJsonParser extends AbstractJsonParser { | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public Map<String, Object> parseMap(String json) { | 	public Map<String, Object> parseMap(String json) { | ||||||
| 		return parseMap(json, (trimmed) -> this.gson.fromJson(trimmed, MAP_TYPE.getType())); | 		return tryParse(() -> parseMap(json, (trimmed) -> this.gson.fromJson(trimmed, MAP_TYPE.getType())), | ||||||
|  | 				Exception.class); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public List<Object> parseList(String json) { | 	public List<Object> parseList(String json) { | ||||||
| 		return parseList(json, (trimmed) -> this.gson.fromJson(trimmed, LIST_TYPE.getType())); | 		return tryParse(() -> parseList(json, (trimmed) -> this.gson.fromJson(trimmed, LIST_TYPE.getType())), | ||||||
|  | 				Exception.class); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private static final class MapTypeToken extends TypeToken<Map<String, Object>> { | 	private static final class MapTypeToken extends TypeToken<Map<String, Object>> { | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| /* | /* | ||||||
|  * Copyright 2012-2019 the original author or authors. |  * Copyright 2012-2022 the original author or authors. | ||||||
|  * |  * | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  * you may not use this file except in compliance with the License. |  * you may not use this file except in compliance with the License. | ||||||
|  | @ -175,4 +175,15 @@ abstract class AbstractJsonParserTests { | ||||||
| 		assertThat(map.get("foo")).isEqualTo("\"bar\""); | 		assertThat(map.get("foo")).isEqualTo("\"bar\""); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	@Test | ||||||
|  | 	void listWithMalformedMap() { | ||||||
|  | 		assertThatExceptionOfType(JsonParseException.class) | ||||||
|  | 				.isThrownBy(() -> this.parser.parseList("[tru,erqett,{\"foo\":fatrue,true,true,true,tr''ue}]")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	void mapWithKeyAndNoValue() { | ||||||
|  | 		assertThatExceptionOfType(JsonParseException.class).isThrownBy(() -> this.parser.parseMap("{\"foo\"}")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| /* | /* | ||||||
|  * Copyright 2012-2021 the original author or authors. |  * Copyright 2012-2022 the original author or authors. | ||||||
|  * |  * | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  * you may not use this file except in compliance with the License. |  * you may not use this file except in compliance with the License. | ||||||
|  | @ -16,6 +16,7 @@ | ||||||
| 
 | 
 | ||||||
| package org.springframework.boot.json; | package org.springframework.boot.json; | ||||||
| 
 | 
 | ||||||
|  | import org.junit.jupiter.api.Disabled; | ||||||
| import org.junit.jupiter.api.Test; | import org.junit.jupiter.api.Test; | ||||||
| import org.yaml.snakeyaml.constructor.ConstructorException; | import org.yaml.snakeyaml.constructor.ConstructorException; | ||||||
| 
 | 
 | ||||||
|  | @ -40,4 +41,16 @@ class YamlJsonParserTests extends AbstractJsonParserTests { | ||||||
| 				.withCauseInstanceOf(IllegalStateException.class); | 				.withCauseInstanceOf(IllegalStateException.class); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	@Test | ||||||
|  | 	@Override | ||||||
|  | 	@Disabled("SnakeYaml does not fail when a map is malformed") | ||||||
|  | 	void listWithMalformedMap() { | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	@Override | ||||||
|  | 	@Disabled("SnakeYaml does not fail when a map has a key with no value") | ||||||
|  | 	void mapWithKeyAndNoValue() { | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue