diff -Nru snakeyaml-1.21/bitbucket-pipelines.yml snakeyaml-1.23/bitbucket-pipelines.yml --- snakeyaml-1.21/bitbucket-pipelines.yml 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/bitbucket-pipelines.yml 2018-08-27 16:22:08.000000000 +0000 @@ -3,7 +3,7 @@ # Only use spaces to indent your .yml configuration. # ----- # You can specify a custom docker image from Docker Hub as your build environment. -image: maven:3-jdk-9-slim +image: maven:3.5.4-jdk-8 pipelines: default: @@ -11,4 +11,4 @@ caches: - maven script: # Modify the commands below to build your repository. - - mvn -V -B -Pwith-java9-tests clean install + - mvn -V -B -Pwith-java8-tests clean install diff -Nru snakeyaml-1.21/debian/changelog snakeyaml-1.23/debian/changelog --- snakeyaml-1.21/debian/changelog 2018-06-03 16:02:57.000000000 +0000 +++ snakeyaml-1.23/debian/changelog 2018-11-07 00:12:28.000000000 +0000 @@ -1,3 +1,12 @@ +snakeyaml (1.23-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + - Fixes the test failure with Java 11 (Closes: #912389) + * Standards-Version updated to 4.2.1 + + -- Emmanuel Bourg Wed, 07 Nov 2018 01:12:28 +0100 + snakeyaml (1.21-1) unstable; urgency=medium * Team upload. diff -Nru snakeyaml-1.21/debian/control snakeyaml-1.23/debian/control --- snakeyaml-1.21/debian/control 2018-06-03 16:02:57.000000000 +0000 +++ snakeyaml-1.23/debian/control 2018-11-06 23:49:51.000000000 +0000 @@ -15,7 +15,7 @@ libspring-context-java, maven-debian-helper (>= 1.6.5), velocity -Standards-Version: 4.1.4 +Standards-Version: 4.2.1 Vcs-Git: https://salsa.debian.org/java-team/snakeyaml.git Vcs-Browser: https://salsa.debian.org/java-team/snakeyaml Homepage: https://bitbucket.org/asomov/snakeyaml diff -Nru snakeyaml-1.21/debian/rules snakeyaml-1.23/debian/rules --- snakeyaml-1.21/debian/rules 2018-06-03 15:56:06.000000000 +0000 +++ snakeyaml-1.23/debian/rules 2018-11-07 00:12:17.000000000 +0000 @@ -2,6 +2,3 @@ %: dh $@ --buildsystem=maven - -get-orig-source: - uscan --force-download --download-current-version --repack --compression xz diff -Nru snakeyaml-1.21/debian/watch snakeyaml-1.23/debian/watch --- snakeyaml-1.21/debian/watch 2018-06-03 15:56:06.000000000 +0000 +++ snakeyaml-1.23/debian/watch 2018-11-06 23:49:51.000000000 +0000 @@ -1,3 +1,3 @@ version=4 -opts=uversionmangle=s/(\d)[\.\-]?((?:rc|RC|pre)(?:\.|-)?\d+(?:-\d+)?)$/$1~$2/, +opts=repack,compression=xz,uversionmangle=s/(\d)[\.\-]?((?:rc|RC|pre)(?:\.|-)?\d+(?:-\d+)?)$/$1~$2/, https://bitbucket.org/asomov/snakeyaml/downloads?tab=tags .*/snakeyaml-(\d\S+)\.tar\.gz diff -Nru snakeyaml-1.21/docker-run-jdk11.sh snakeyaml-1.23/docker-run-jdk11.sh --- snakeyaml-1.21/docker-run-jdk11.sh 1970-01-01 00:00:00.000000000 +0000 +++ snakeyaml-1.23/docker-run-jdk11.sh 2018-08-27 16:22:08.000000000 +0000 @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +./docker-run.sh 11-slim -Pwith-java11-tests diff -Nru snakeyaml-1.21/docker-run-jdk9.sh snakeyaml-1.23/docker-run-jdk9.sh --- snakeyaml-1.21/docker-run-jdk9.sh 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/docker-run-jdk9.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -./docker-run.sh 9-slim -Pwith-java9-tests diff -Nru snakeyaml-1.21/docker-run.sh snakeyaml-1.23/docker-run.sh --- snakeyaml-1.21/docker-run.sh 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/docker-run.sh 2018-08-27 16:22:08.000000000 +0000 @@ -5,6 +5,6 @@ -v ~:/my-home \ -e "HOME=/my-home" \ -w /work \ - maven:3-jdk-$1 \ + maven:3.5.4-jdk-$1 \ mvn -Dmaven.repo.local=/my-home/.m2/repository clean test $2 diff -Nru snakeyaml-1.21/pom.xml snakeyaml-1.23/pom.xml --- snakeyaml-1.21/pom.xml 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/pom.xml 2018-08-27 16:22:08.000000000 +0000 @@ -3,7 +3,7 @@ 4.0.0 org.yaml snakeyaml - 1.21 + 1.23 bundle UTF-8 @@ -42,7 +42,7 @@ scm:hg:http://bitbucket.org/asomov/snakeyaml scm:hg:ssh://hg@bitbucket.org/asomov/snakeyaml https://bitbucket.org/asomov/snakeyaml/src - snakeyaml-1.21 + snakeyaml-1.23 @@ -536,10 +536,10 @@ - with-java9-tests + with-java11-tests - 9 - 9 + 11 + 11 @@ -565,7 +565,7 @@ build-helper-maven-plugin - add-java9-test-source + add-java11-test-source generate-test-sources add-test-source @@ -574,7 +574,7 @@ ${basedir}/src/test/java7/ ${basedir}/src/test/java8/ - ${basedir}/src/test/java9/ + ${basedir}/src/test/java11/ diff -Nru snakeyaml-1.21/README.md snakeyaml-1.23/README.md --- snakeyaml-1.21/README.md 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/README.md 2018-08-27 16:22:08.000000000 +0000 @@ -3,11 +3,12 @@ ## Overview ## [YAML](http://yaml.org) is a data serialization format designed for human readability and interaction with scripting languages. -SnakeYAML is a YAML processor for the Java Virtual Machine. +SnakeYAML is a YAML 1.1 processor for the Java Virtual Machine version 6. +For YAML 1.2 (which is a superset of JSON) you may have a look at [SnakeYAML Engine](https://bitbucket.org/asomov/snakeyaml-engine) ## SnakeYAML features ## -* a **complete** [YAML 1.1 processor](http://yaml.org/spec/1.1/current.html). In particular, SnakeYAML can parse all examples from the specification. +* a **complete** [YAML 1.1 processor](http://yaml.org/spec/1.1/current.html). (If you need YAML **1.2** support have a look [here](https://bitbucket.org/asomov/snakeyaml-engine)). In particular, SnakeYAML can parse all examples from the specification. * Unicode support including UTF-8/UTF-16 input/output. * high-level API for serializing and deserializing native Java objects. * support for all types from the [YAML types repository](http://yaml.org/type/index.html). diff -Nru snakeyaml-1.21/src/changes/changes.xml snakeyaml-1.23/src/changes/changes.xml --- snakeyaml-1.21/src/changes/changes.xml 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/changes/changes.xml 2018-08-27 16:22:08.000000000 +0000 @@ -5,6 +5,33 @@ YAML 1.1 parser and emitter + + + Add another getter for ScalarStyle to support backwards compatibility (2018-08-27) + + + + + Run tests under Java 11 (2018-08-19) + + + Use Maven 3.5.4 (2018-08-19) + + + Restore the Boolean constructors for Events and Nodes for binary compatibility + of dependent projects (2018-08-17) + + + System Property "java.runtime.name" is not required to be defined (2018-08-12) + Ensure Compatibility with Graal + + + Dumping Enum breaks when Enum value is Anonymous inner class (2018-08-07) + Solution: refactor the way to detect if the full tag can be omitted (and !!str is used instead). + Instead of checking whether the class for property and the class for the actual value is the same + we can just check that the property class is not java.lang.Enum + + Scanner throws IndexOutOfBoundsException if no more token left but getToken() @@ -23,7 +50,7 @@ Plain scalars with colons in flow sequences/mappings are valid YAML (2018-03-03) - + Improve reflective access operation to avoid warning under Java 9 (2018-02-24) diff -Nru snakeyaml-1.21/src/etc/announcement.msg snakeyaml-1.23/src/etc/announcement.msg --- snakeyaml-1.21/src/etc/announcement.msg 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/etc/announcement.msg 2018-08-27 16:22:08.000000000 +0000 @@ -1,9 +1,9 @@ From: Andrey Somov To: yaml-core@lists.sourceforge.net -Subject: [ANN] SnakeYAML-1.20 final is available +Subject: [ANN] SnakeYAML-1.22 final is available ========================== - Announcing SnakeYAML-1.20 + Announcing SnakeYAML-1.22 ========================== A new release of SnakeYAML is now available: @@ -11,6 +11,7 @@ http://www.snakeyaml.org This release delivers minor changes and bug fixes. +This is the last release to support Java 6. As of the next release Java 7 will be required. The complete list of changes is here: https://bitbucket.org/asomov/snakeyaml/wiki/Changes @@ -20,8 +21,8 @@ SnakeYAML homepage: http://www.snakeyaml.org SnakeYAML documentation: https://bitbucket.org/asomov/snakeyaml/wiki/Home -JAR package: http://repo2.maven.org/maven2/org/yaml/snakeyaml/1.20/snakeyaml-1.20.jar -Android: http://repo2.maven.org/maven2/org/yaml/snakeyaml/1.20/snakeyaml-1.20-android.jar +JAR package: http://repo2.maven.org/maven2/org/yaml/snakeyaml/1.22/snakeyaml-1.22.jar +Android: http://repo2.maven.org/maven2/org/yaml/snakeyaml/1.22/snakeyaml-1.22-android.jar YAML homepage: http://yaml.org/ YAML-core mailing list: http://lists.sourceforge.net/lists/listinfo/yaml-core diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/composer/Composer.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/composer/Composer.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/composer/Composer.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/composer/Composer.java 2018-08-27 16:22:08.000000000 +0000 @@ -161,7 +161,7 @@ nodeTag = new Tag(tag); } Node node = new ScalarNode(nodeTag, resolved, ev.getValue(), ev.getStartMark(), - ev.getEndMark(), ev.getStyle()); + ev.getEndMark(), ev.getScalarStyle()); if (anchor != null) { anchors.put(anchor, node); } diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/DumperOptions.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/DumperOptions.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/DumperOptions.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/DumperOptions.java 2018-08-27 16:22:08.000000000 +0000 @@ -89,6 +89,18 @@ private FlowStyle(Boolean flowStyle) { styleBoolean = flowStyle; } + + /* + * Convenience for legacy constructors that took {@link Boolean} arguments since replaced by {@link FlowStyle}. + * Introduced in v1.22 but only to support that for backwards compatibility. + * @deprecated Since restored in v1.22. Use the {@link FlowStyle} constants in your code instead. + */ + @Deprecated + public static FlowStyle fromBoolean(Boolean flowStyle) { + return flowStyle==null ? AUTO + : flowStyle ? FLOW + : BLOCK; + } public Boolean getStyleBoolean() { return styleBoolean; diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java 2018-08-27 16:22:08.000000000 +0000 @@ -764,7 +764,7 @@ if (analysis == null) { analysis = analyzeScalar(ev.getValue()); } - if (!ev.isPlain() && ev.getStyle() == DumperOptions.ScalarStyle.DOUBLE_QUOTED || this.canonical) { + if (!ev.isPlain() && ev.getScalarStyle() == DumperOptions.ScalarStyle.DOUBLE_QUOTED || this.canonical) { return DumperOptions.ScalarStyle.DOUBLE_QUOTED; } if (ev.isPlain() && ev.getImplicit().canOmitTagInPlainScalar()) { @@ -773,12 +773,12 @@ return null; } } - if (!ev.isPlain() && (ev.getStyle() == DumperOptions.ScalarStyle.LITERAL || ev.getStyle() == DumperOptions.ScalarStyle.FOLDED)) { + if (!ev.isPlain() && (ev.getScalarStyle() == DumperOptions.ScalarStyle.LITERAL || ev.getScalarStyle() == DumperOptions.ScalarStyle.FOLDED)) { if (flowLevel == 0 && !simpleKeyContext && analysis.allowBlock) { - return ev.getStyle(); + return ev.getScalarStyle(); } } - if (ev.isPlain() || ev.getStyle() == DumperOptions.ScalarStyle.SINGLE_QUOTED) { + if (ev.isPlain() || ev.getScalarStyle() == DumperOptions.ScalarStyle.SINGLE_QUOTED) { if (analysis.allowSingleQuoted && !(simpleKeyContext && analysis.multiline)) { return DumperOptions.ScalarStyle.SINGLE_QUOTED; } diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/error/Mark.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/error/Mark.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/error/Mark.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/error/Mark.java 2018-08-27 16:22:08.000000000 +0000 @@ -44,6 +44,16 @@ public Mark(String name, int index, int line, int column, char[] str, int pointer) { this(name, index, line, column, toCodePoints(str), pointer); } + + /* + * Existed in older versions but replaced with {@code char[]}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link Mark#Mark(String, int, int, int, char[], int)}. + */ + @Deprecated + public Mark(String name, int index, int line, int column, String buffer, int pointer) { + this(name, index, line, column, buffer.toCharArray(), pointer); + } public Mark(String name, int index, int line, int column, int[] buffer, int pointer) { super(); @@ -60,9 +70,6 @@ } public String get_snippet(int indent, int max_length) { - if (buffer == null) { - return null; - } float half = max_length / 2 - 1; int start = pointer; String head = ""; diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/AliasEvent.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/AliasEvent.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/AliasEvent.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/AliasEvent.java 2018-08-27 16:22:08.000000000 +0000 @@ -23,6 +23,7 @@ public final class AliasEvent extends NodeEvent { public AliasEvent(String anchor, Mark startMark, Mark endMark) { super(anchor, startMark, endMark); + if(anchor == null) throw new NullPointerException(); } @Override diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/CollectionStartEvent.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/CollectionStartEvent.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/CollectionStartEvent.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/CollectionStartEvent.java 2018-08-27 16:22:08.000000000 +0000 @@ -37,6 +37,17 @@ if(flowStyle == null) throw new NullPointerException("Flow style must be provided."); this.flowStyle = flowStyle; } + + /* + * Existed in older versions but replaced with {@link DumperOptions.FlowStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link CollectionStartEvent#CollectionStartEvent(String, String, boolean, Mark, Mark, org.yaml.snakeyaml.DumperOptions.FlowStyle) }. + */ + @Deprecated + public CollectionStartEvent(String anchor, String tag, boolean implicit, Mark startMark, + Mark endMark, Boolean flowStyle) { + this(anchor, tag, implicit, startMark, endMark, DumperOptions.FlowStyle.fromBoolean(flowStyle)); + } /** * Tag of this collection. diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/MappingStartEvent.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/MappingStartEvent.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/MappingStartEvent.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/MappingStartEvent.java 2018-08-27 16:22:08.000000000 +0000 @@ -38,6 +38,17 @@ super(anchor, tag, implicit, startMark, endMark, flowStyle); } + /* + * Existed in older versions but replaced with {@link DumperOptions.FlowStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link MappingStartEvent#CollectionStartEvent(String, String, boolean, Mark, Mark, org.yaml.snakeyaml.DumperOptions.FlowStyle) }. + */ + @Deprecated + public MappingStartEvent(String anchor, String tag, boolean implicit, Mark startMark, + Mark endMark, Boolean flowStyle) { + this(anchor, tag, implicit, startMark, endMark, DumperOptions.FlowStyle.fromBoolean(flowStyle)); + } + @Override public boolean is(Event.ID id) { return ID.MappingStart == id; diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/ScalarEvent.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/ScalarEvent.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/ScalarEvent.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/ScalarEvent.java 2018-08-27 16:22:08.000000000 +0000 @@ -37,11 +37,23 @@ super(anchor, startMark, endMark); this.tag = tag; this.implicit = implicit; + if (value == null) throw new NullPointerException("Value must be provided."); this.value = value; if (style == null) throw new NullPointerException("Style must be provided."); this.style = style; } + /* + * Existed in older versions but replaced with {@link DumperOptions.ScalarStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link ScalarEvent#ScalarEvent(String, String, ImplicitTuple, String, Mark, Mark, org.yaml.snakeyaml.DumperOptions.ScalarStyle) }. + */ + @Deprecated + public ScalarEvent(String anchor, String tag, ImplicitTuple implicit, String value, + Mark startMark, Mark endMark, Character style) { + this(anchor, tag, implicit, value, startMark, endMark, DumperOptions.ScalarStyle.createStyle(style)); + } + /** * Tag of this scalar. * @@ -71,11 +83,20 @@ * Combinations * @return Style of the scalar. */ - public DumperOptions.ScalarStyle getStyle() { + public DumperOptions.ScalarStyle getScalarStyle() { return this.style; } /** + * @deprecated use getScalarStyle() instead + * @return char which is a value behind ScalarStyle + */ + @Deprecated + public Character getStyle() { + return this.style.getChar(); + } + + /** * String representation of the value. *

* Without quotes and escaping. diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/SequenceStartEvent.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/SequenceStartEvent.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/events/SequenceStartEvent.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/events/SequenceStartEvent.java 2018-08-27 16:22:08.000000000 +0000 @@ -33,6 +33,17 @@ super(anchor, tag, implicit, startMark, endMark, flowStyle); } + /* + * Existed in older versions but replaced with {@link DumperOptions.SequenceStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link SequenceStartEvent#SequenceStartEvent(String, String, boolean, Mark, Mark, org.yaml.snakeyaml.DumperOptions.FlowStyle) }. + */ + @Deprecated + public SequenceStartEvent(String anchor, String tag, boolean implicit, Mark startMark, + Mark endMark, Boolean flowStyle) { + this(anchor, tag, implicit, startMark, endMark, DumperOptions.FlowStyle.fromBoolean(flowStyle)); + } + @Override public boolean is(Event.ID id) { return ID.SequenceStart == id; diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/CollectionNode.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/CollectionNode.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/CollectionNode.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/CollectionNode.java 2018-08-27 16:22:08.000000000 +0000 @@ -32,6 +32,16 @@ setFlowStyle(flowStyle); } + /* + * Existed in older versions but replaced with {@link DumperOptions.FlowStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link CollectionNode#CollectionNode(Tag, Mark, Mark, org.yaml.snakeyaml.DumperOptions.FlowStyle) }. + */ + @Deprecated + public CollectionNode(Tag tag, Mark startMark, Mark endMark, Boolean flowStyle) { + this(tag, startMark, endMark, DumperOptions.FlowStyle.fromBoolean(flowStyle)); + } + /** * Returns the elements in this sequence. * diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/MappingNode.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/MappingNode.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/MappingNode.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/MappingNode.java 2018-08-27 16:22:08.000000000 +0000 @@ -44,6 +44,28 @@ this(tag, true, value, null, null, flowStyle); } + /* + * Existed in older versions but replaced with {@link DumperOptions.FlowStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link MappingNode#MappingNode(Tag, boolean, List, Mark, Mark, org.yaml.snakeyaml.DumperOptions.FlowStyle) }. + */ + @Deprecated + public MappingNode(Tag tag, boolean resolved, List value, Mark startMark, + Mark endMark, Boolean flowStyle) { + this(tag, resolved, value, startMark, endMark, DumperOptions.FlowStyle.fromBoolean(flowStyle)); + } + + /* + * Existed in older versions but replaced with {@link DumperOptions.FlowStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link MappingNode#MappingNode(Tag, List, org.yaml.snakeyaml.DumperOptions.FlowStyle) }. + */ + @Deprecated + public MappingNode(Tag tag, List value, Boolean flowStyle) { + this(tag, value, DumperOptions.FlowStyle.fromBoolean(flowStyle)); + + } + @Override public NodeId getNodeId() { return NodeId.mapping; diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/Node.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/Node.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/Node.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/Node.java 2018-08-27 16:22:08.000000000 +0000 @@ -151,4 +151,18 @@ public void setUseClassConstructor(Boolean useClassConstructor) { this.useClassConstructor = useClassConstructor; } + + /** + * Indicates if the tag was added by + * {@link org.yaml.snakeyaml.resolver.Resolver}. + * + * @return true if the tag of this node was resolved + * + * @deprecated Since v1.22. Absent in immediately prior versions, but present previously. Restored deprecated for backwards compatibility. + */ + @Deprecated + public boolean isResolved() { + return resolved; + } + } diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/ScalarNode.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/ScalarNode.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/ScalarNode.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/ScalarNode.java 2018-08-27 16:22:08.000000000 +0000 @@ -44,6 +44,41 @@ this.resolved = resolved; } + /* + * Existed in older versions but replaced with {@link DumperOptions.ScalarStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link ScalarNode#ScalarNode(Tag, String, Mark, Mark, org.yaml.snakeyaml.DumperOptions.ScalarStyle) }. + */ + @Deprecated + public ScalarNode(Tag tag, String value, Mark startMark, Mark endMark, Character style) { + this(tag, value, startMark, endMark, DumperOptions.ScalarStyle.createStyle(style)); + } + + /* + * Existed in older versions but replaced with {@link DumperOptions.ScalarStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link ScalarNode#ScalarNode(Tag, boolean, String, Mark, Mark, org.yaml.snakeyaml.DumperOptions.ScalarStyle) }. + */ + @Deprecated + public ScalarNode(Tag tag, boolean resolved, String value, Mark startMark, Mark endMark, + Character style) { + this(tag, resolved, value, startMark, endMark, DumperOptions.ScalarStyle.createStyle(style)); + } + + /** + * Get scalar style of this node. + * + * @see org.yaml.snakeyaml.events.ScalarEvent + * @see Chapter 9. Scalar + * Styles + * @return style of this scalar node + * @deprecated use getScalarStyle instead + */ + @Deprecated + public Character getStyle() { + return style.getChar(); + } + /** * Get scalar style of this node. * @@ -52,7 +87,7 @@ * Styles * @return style of this scalar node */ - public DumperOptions.ScalarStyle getStyle() { + public DumperOptions.ScalarStyle getScalarStyle() { return style; } diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/SequenceNode.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/SequenceNode.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/SequenceNode.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/SequenceNode.java 2018-08-27 16:22:08.000000000 +0000 @@ -42,6 +42,27 @@ public SequenceNode(Tag tag, List value, DumperOptions.FlowStyle flowStyle) { this(tag, true, value, null, null, flowStyle); } + + /* + * Existed in older versions but replaced with {@link DumperOptions.SequenceStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link SequenceNode#SequenceNode(Tag, List, org.yaml.snakeyaml.DumperOptions.FlowStyle) }. + */ + @Deprecated + public SequenceNode(Tag tag, List value, Boolean style) { + this(tag, value, DumperOptions.FlowStyle.fromBoolean(style)); + } + + /* + * Existed in older versions but replaced with {@link DumperOptions.SequenceStyle}-based constructor. + * Restored in v1.22 for backwards compatibility. + * @deprecated Since restored in v1.22. Use {@link SequenceNode#SequenceNode(Tag, boolean, List, Mark, Mark, org.yaml.snakeyaml.DumperOptions.FlowStyle) }. + */ + @Deprecated + public SequenceNode(Tag tag, boolean resolved, List value, Mark startMark, Mark endMark, + Boolean style) { + this(tag, resolved, value, startMark, endMark, DumperOptions.FlowStyle.fromBoolean(style)); + } @Override public NodeId getNodeId() { diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/Tag.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/Tag.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/nodes/Tag.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/nodes/Tag.java 2018-08-27 16:22:08.000000000 +0000 @@ -88,6 +88,10 @@ this.value = Tag.PREFIX + UriEncoder.encode(clazz.getName()); } + /** + * @deprecated - it will be removed + * @param uri - URI to be encoded as tag value + */ public Tag(URI uri) { if (uri == null) { throw new NullPointerException("URI for tag must be provided."); diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/representer/Representer.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/representer/Representer.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/representer/Representer.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/representer/Representer.java 2018-08-27 16:22:08.000000000 +0000 @@ -151,7 +151,8 @@ NodeId nodeId = nodeValue.getNodeId(); if (customTag == null) { if (nodeId == NodeId.scalar) { - if (property.getType() == propertyValue.getClass()) { + //generic Enum requires the full tag + if (property.getType() != java.lang.Enum.class) { if (propertyValue instanceof Enum) { nodeValue.setTag(Tag.STR); } diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java 2018-08-27 16:22:08.000000000 +0000 @@ -148,6 +148,7 @@ } } + //parent Node is not used but might be used in the future private void serializeNode(Node node, Node parent) throws IOException { if (node.getNodeId() == NodeId.anchor) { node = ((AnchorNode) node).getRealNode(); diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java 2018-08-27 16:22:08.000000000 +0000 @@ -17,6 +17,9 @@ import org.yaml.snakeyaml.error.Mark; +/** + * @deprecated it will be removed because it is not used + */ public class CommentToken extends Token { public CommentToken(Mark startMark, Mark endMark) { super(startMark, endMark); diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/tokens/Token.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/tokens/Token.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/tokens/Token.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/tokens/Token.java 2018-08-27 16:22:08.000000000 +0000 @@ -44,7 +44,6 @@ Comment("#"), Error(""); - private final String description; ID(String s) { diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/tokens/WhitespaceToken.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/tokens/WhitespaceToken.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/tokens/WhitespaceToken.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/tokens/WhitespaceToken.java 2018-08-27 16:22:08.000000000 +0000 @@ -17,6 +17,9 @@ import org.yaml.snakeyaml.error.Mark; +/** + * @deprecated it will be removed because it is not used + */ public class WhitespaceToken extends Token { public WhitespaceToken(Mark startMark, Mark endMark) { super(startMark, endMark); diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/util/PlatformFeatureDetector.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/util/PlatformFeatureDetector.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/util/PlatformFeatureDetector.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/util/PlatformFeatureDetector.java 2018-08-27 16:22:08.000000000 +0000 @@ -21,8 +21,8 @@ public boolean isRunningOnAndroid() { if (isRunningOnAndroid == null) { - // No risk of NPE because this property should always be available - isRunningOnAndroid = System.getProperty("java.runtime.name").startsWith("Android Runtime"); + String name = System.getProperty("java.runtime.name"); + isRunningOnAndroid = (name != null && name.startsWith("Android Runtime")); } return isRunningOnAndroid; } diff -Nru snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/Yaml.java snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/Yaml.java --- snakeyaml-1.21/src/main/java/org/yaml/snakeyaml/Yaml.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/main/java/org/yaml/snakeyaml/Yaml.java 2018-08-27 16:22:08.000000000 +0000 @@ -442,7 +442,7 @@ * Java object. * * @param io - * data to load from (BOM is respected and removed) + * data to load from (BOM is respected to detect encoding and removed from the data) * @param * the class of the instance to be created * @return parsed object @@ -508,7 +508,7 @@ * @param * Class is defined by the second argument * @param input - * data to load from (BOM is respected and removed) + * data to load from (BOM is respected to detect encoding and removed from the data) * @param type * Class of the object to be created * @return parsed object @@ -525,12 +525,12 @@ } /** - * Parse all YAML documents in a String and produce corresponding Java + * Parse all YAML documents in the Reader and produce corresponding Java * objects. The documents are parsed only when the iterator is invoked. * * @param yaml * YAML data to load from (BOM must not be present) - * @return an iterator over the parsed Java objects in this String in proper + * @return an Iterable over the parsed Java objects in this String in proper * sequence */ public Iterable loadAll(Reader yaml) { @@ -575,7 +575,7 @@ * * @param yaml * YAML data to load from (BOM must not be present) - * @return an iterator over the parsed Java objects in this String in proper + * @return an Iterable over the parsed Java objects in this String in proper * sequence */ public Iterable loadAll(String yaml) { @@ -587,8 +587,8 @@ * objects. The documents are parsed only when the iterator is invoked. * * @param yaml - * YAML data to load from (BOM is respected and ignored) - * @return an iterator over the parsed Java objects in this stream in proper + * YAML data to load from (BOM is respected to detect encoding and removed from the data) + * @return an Iterable over the parsed Java objects in this stream in proper * sequence */ public Iterable loadAll(InputStream yaml) { @@ -746,5 +746,4 @@ constructor.addTypeDescription(td); representer.addTypeDescription(td); } - } diff -Nru snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/EnumBeanGenTest.java snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/EnumBeanGenTest.java --- snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/EnumBeanGenTest.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/EnumBeanGenTest.java 2018-08-27 16:22:08.000000000 +0000 @@ -36,10 +36,10 @@ map.put(Suit.DIAMONDS, 2); bean.setMap(map); String output = yaml.dump(bean); - yaml.load(output); assertEquals( "!!org.yaml.snakeyaml.EnumBeanGen\nid: 17\nmap:\n !!org.yaml.snakeyaml.Suit 'CLUBS': 1\n !!org.yaml.snakeyaml.Suit 'DIAMONDS': 2\nsuit: !!org.yaml.snakeyaml.Suit 'SPADES'\n", output); + yaml.load(output);//load back } // Loading diff -Nru snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesTest.java snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesTest.java --- snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesTest.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesTest.java 2018-08-27 16:22:08.000000000 +0000 @@ -90,7 +90,8 @@ } catch (Exception e) { boolean java8 = e.getMessage().startsWith("[Ljava.lang.Object"); boolean java9 = e.getMessage().startsWith("java.base/[Ljava.lang.Object"); - assertTrue(e.getMessage(), java8 || java9); + boolean java11 = e.getMessage().startsWith("class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String;"); + assertTrue(e.getMessage(), java8 || java9 || java11); } } } diff -Nru snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/issues/issue318/ContextClassLoaderTest.java snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/issues/issue318/ContextClassLoaderTest.java --- snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/issues/issue318/ContextClassLoaderTest.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/issues/issue318/ContextClassLoaderTest.java 2018-08-27 16:22:08.000000000 +0000 @@ -106,6 +106,7 @@ @After public void after() { + //TODO Java 7 // URLClassLoader.close is @since 1.7 // if (yamlCL != null) { // try { diff -Nru snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/issues/issue383/RepresenterConfigurationTest.java snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/issues/issue383/RepresenterConfigurationTest.java --- snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/issues/issue383/RepresenterConfigurationTest.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/issues/issue383/RepresenterConfigurationTest.java 2018-08-27 16:22:08.000000000 +0000 @@ -66,7 +66,8 @@ Yaml yaml = new Yaml(representer); ScalarNode node = (ScalarNode) yaml.represent("test"); - Assert.assertEquals(FOLDED, node.getStyle()); + Assert.assertEquals(FOLDED, node.getScalarStyle()); + Assert.assertEquals(FOLDED.getChar(), node.getStyle()); } @Test @@ -80,14 +81,16 @@ Yaml yaml = new Yaml(representer, dumperOptions); ScalarNode node = (ScalarNode) yaml.represent("test"); - Assert.assertEquals(node.getStyle(), PLAIN); + Assert.assertEquals(node.getScalarStyle(), PLAIN); + Assert.assertEquals(node.getStyle(), PLAIN.getChar()); } @Test public void testPlainStyleByDefault() { Yaml yaml = new Yaml(); ScalarNode node = (ScalarNode) yaml.represent("test"); - Assert.assertEquals(PLAIN, node.getStyle()); + Assert.assertEquals(PLAIN, node.getScalarStyle()); + Assert.assertEquals(PLAIN.getChar(), node.getStyle()); } @Test diff -Nru snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/issues/issue409/DumpEnumAsJavabeanPropertyTest.java snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/issues/issue409/DumpEnumAsJavabeanPropertyTest.java --- snakeyaml-1.21/src/test/java/org/yaml/snakeyaml/issues/issue409/DumpEnumAsJavabeanPropertyTest.java 1970-01-01 00:00:00.000000000 +0000 +++ snakeyaml-1.23/src/test/java/org/yaml/snakeyaml/issues/issue409/DumpEnumAsJavabeanPropertyTest.java 2018-08-27 16:22:08.000000000 +0000 @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2008, http://www.snakeyaml.org + * + * 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 + * + * http://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.yaml.snakeyaml.issues.issue409; + +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.nodes.Tag; + +import junit.framework.TestCase; + +public class DumpEnumAsJavabeanPropertyTest extends TestCase { + public static class Bean { + public ExtendedEnum myEnum = ExtendedEnum.B; + } + + public enum ExtendedEnum { + A { + public String toGreek() { + return "alpha"; + } + }, + B { + public String toGreek() { + return "beta"; + } + } // issue 409 + } + + public void testDumpExtendedEnum() { + Yaml yaml = new Yaml(); + String text = yaml.dumpAs(new Bean(), Tag.MAP, DumperOptions.FlowStyle.AUTO); + assertEquals("{myEnum: B}\n", text); + Bean actual = yaml.loadAs(text, Bean.class); + assertEquals(ExtendedEnum.B, actual.myEnum); + } +} diff -Nru snakeyaml-1.21/src/test/java11/org/yaml/snakeyaml/issues/issue310/DeepThrowableCauseMatcher.java snakeyaml-1.23/src/test/java11/org/yaml/snakeyaml/issues/issue310/DeepThrowableCauseMatcher.java --- snakeyaml-1.21/src/test/java11/org/yaml/snakeyaml/issues/issue310/DeepThrowableCauseMatcher.java 1970-01-01 00:00:00.000000000 +0000 +++ snakeyaml-1.23/src/test/java11/org/yaml/snakeyaml/issues/issue310/DeepThrowableCauseMatcher.java 2018-08-27 16:22:08.000000000 +0000 @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2008, http://www.snakeyaml.org + * + * 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 + * + * http://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.yaml.snakeyaml.issues.issue310; + +import org.hamcrest.Matcher; +import org.junit.internal.matchers.ThrowableCauseMatcher; + +public class DeepThrowableCauseMatcher extends ThrowableCauseMatcher { + + public DeepThrowableCauseMatcher(Matcher causeMatcher) { + super(causeMatcher); + } + + @Override + protected boolean matchesSafely(Throwable item) { + for (Throwable cause = item; cause != null; cause = cause.getCause()) { + if (super.matchesSafely(cause)) { + return true; + } + } + return false; + } +} diff -Nru snakeyaml-1.21/src/test/java11/org/yaml/snakeyaml/issues/issue310/Java11OptionalTest.java snakeyaml-1.23/src/test/java11/org/yaml/snakeyaml/issues/issue310/Java11OptionalTest.java --- snakeyaml-1.21/src/test/java11/org/yaml/snakeyaml/issues/issue310/Java11OptionalTest.java 1970-01-01 00:00:00.000000000 +0000 +++ snakeyaml-1.23/src/test/java11/org/yaml/snakeyaml/issues/issue310/Java11OptionalTest.java 2018-08-27 16:22:08.000000000 +0000 @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2008, http://www.snakeyaml.org + * + * 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 + * + * http://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.yaml.snakeyaml.issues.issue310; + +import static org.hamcrest.CoreMatchers.instanceOf; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InaccessibleObjectException; +import java.util.Optional; +import java.util.logging.Logger; + +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.yaml.snakeyaml.error.YAMLException; + +public class Java11OptionalTest extends OptionalTesting { + + private static Logger log = Logger.getLogger(Java11OptionalTest.class.getPackageName()); + + @BeforeClass + public static void checkIllegalAccess() { + try { + Constructor privateConstructor = Optional.class.getDeclaredConstructor(Object.class); + privateConstructor.setAccessible(true); + privateConstructor.newInstance("OptionalString"); + } catch (InaccessibleObjectException | ReflectiveOperationException | SecurityException e) { + log.warning( + "Expecting exceptions in these tests because reflective access has been denied: " + + e.getLocalizedMessage()); + reflectiveAccessDenied = true; + } + } + + @Rule + public final ExpectedException expectedException = ExpectedException.none(); + + @Before + public void configureExpectedExceptions() { + if (reflectiveAccessDenied) { + expectedException.expect(YAMLException.class); + expectedException.expect( + new DeepThrowableCauseMatcher(instanceOf(InaccessibleObjectException.class))); + } + } + + @Test + public void testJava11OptionalStringLoad() { + loadOptionalString(); + } + + @Test + public void testJava11OptionalDumpLoad() { + dumpLoadOptional(); + } +} diff -Nru snakeyaml-1.21/src/test/java8/org/yaml/snakeyaml/issues/issue310/Java8OptionalTest.java snakeyaml-1.23/src/test/java8/org/yaml/snakeyaml/issues/issue310/Java8OptionalTest.java --- snakeyaml-1.21/src/test/java8/org/yaml/snakeyaml/issues/issue310/Java8OptionalTest.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/test/java8/org/yaml/snakeyaml/issues/issue310/Java8OptionalTest.java 2018-08-27 16:22:08.000000000 +0000 @@ -15,11 +15,27 @@ */ package org.yaml.snakeyaml.issues.issue310; +import java.lang.reflect.Constructor; +import java.util.Optional; +import java.util.logging.Logger; + import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; public class Java8OptionalTest extends OptionalTesting { + @BeforeClass + public static void checkIllegalAccess() { + try { + Constructor privateConstructor = Optional.class.getDeclaredConstructor(Object.class); + privateConstructor.setAccessible(true); + privateConstructor.newInstance("OptionalString"); + } catch (RuntimeException | ReflectiveOperationException e) { + reflectiveAccessDenied = true; + } + } + @Before public void skipIfReflectiveAccessDenied() { org.junit.Assume.assumeFalse(reflectiveAccessDenied); diff -Nru snakeyaml-1.21/src/test/java9/org/yaml/snakeyaml/issues/issue310/DeepThrowableCauseMatcher.java snakeyaml-1.23/src/test/java9/org/yaml/snakeyaml/issues/issue310/DeepThrowableCauseMatcher.java --- snakeyaml-1.21/src/test/java9/org/yaml/snakeyaml/issues/issue310/DeepThrowableCauseMatcher.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/test/java9/org/yaml/snakeyaml/issues/issue310/DeepThrowableCauseMatcher.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -/** - * Copyright (c) 2008, http://www.snakeyaml.org - * - * 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 - * - * http://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.yaml.snakeyaml.issues.issue310; - -import org.hamcrest.Matcher; -import org.junit.internal.matchers.ThrowableCauseMatcher; - -public class DeepThrowableCauseMatcher extends ThrowableCauseMatcher { - - public DeepThrowableCauseMatcher(Matcher causeMatcher) { - super(causeMatcher); - } - - @Override - protected boolean matchesSafely(Throwable item) { - for (Throwable cause = item; cause != null; cause = cause.getCause()) { - if (super.matchesSafely(cause)) { - return true; - } - } - return false; - } -} diff -Nru snakeyaml-1.21/src/test/java9/org/yaml/snakeyaml/issues/issue310/Java9OptionalTest.java snakeyaml-1.23/src/test/java9/org/yaml/snakeyaml/issues/issue310/Java9OptionalTest.java --- snakeyaml-1.21/src/test/java9/org/yaml/snakeyaml/issues/issue310/Java9OptionalTest.java 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/test/java9/org/yaml/snakeyaml/issues/issue310/Java9OptionalTest.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -/** - * Copyright (c) 2008, http://www.snakeyaml.org - * - * 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 - * - * http://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.yaml.snakeyaml.issues.issue310; - -import static org.hamcrest.CoreMatchers.instanceOf; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InaccessibleObjectException; -import java.util.Optional; -import java.util.logging.Logger; - -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.yaml.snakeyaml.error.YAMLException; - -public class Java9OptionalTest extends OptionalTesting { - - private static Logger log = Logger.getLogger(Java9OptionalTest.class.getPackageName()); - - @BeforeClass - public static void checkIllegalAccess() { - try { - Constructor privateConstructor = Optional.class.getDeclaredConstructor(Object.class); - privateConstructor.setAccessible(true); - privateConstructor.newInstance("OptionalString"); - } catch (InaccessibleObjectException | ReflectiveOperationException | SecurityException e) { - log.warning( - "Expecting exceptions in these tests because reflective access has been denied: " - + e.getLocalizedMessage()); - reflectiveAccessDenied = true; - } - } - - @Rule - public final ExpectedException expectedException = ExpectedException.none(); - - @Before - public void configureExpectedExceptions() { - if (reflectiveAccessDenied) { - expectedException.expect(YAMLException.class); - expectedException.expect( - new DeepThrowableCauseMatcher(instanceOf(InaccessibleObjectException.class))); - } - } - - @Test - public void testJava9OptionalStringLoad() { - loadOptionalString(); - } - - @Test - public void testJava9OptionalDumpLoad() { - dumpLoadOptional(); - } -} diff -Nru snakeyaml-1.21/src/test/resources/pyyaml/no-alias-anchor.emitter-error snakeyaml-1.23/src/test/resources/pyyaml/no-alias-anchor.emitter-error --- snakeyaml-1.21/src/test/resources/pyyaml/no-alias-anchor.emitter-error 2018-04-13 06:43:58.000000000 +0000 +++ snakeyaml-1.23/src/test/resources/pyyaml/no-alias-anchor.emitter-error 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -- !StreamStart -- !DocumentStart -- !SequenceStart -- !Scalar { anchor: A, value: data } -- !Alias { } -- !SequenceEnd -- !DocumentEnd -- !StreamEnd