Refactor Events: expose Event.ID via a getter
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5023427..3e73909 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -7,6 +7,9 @@
<body>
<release version="1.26" date="in Mercurial" description="Maintenance">
<action dev="asomov" type="update">
+ Refactor Events: expose Event.ID via a getter (2019-10-05)
+ </action>
+ <action dev="asomov" type="update">
Refactor ScalarAnalysis: make it immutable (2019-09-28)
</action>
<action dev="asomov" type="add" issue="454">
diff --git a/src/main/java/org/yaml/snakeyaml/events/AliasEvent.java b/src/main/java/org/yaml/snakeyaml/events/AliasEvent.java
index ebffb7d..80bf556 100644
--- a/src/main/java/org/yaml/snakeyaml/events/AliasEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/AliasEvent.java
@@ -27,7 +27,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.Alias == id;
+ public Event.ID getEventId() {
+ return ID.Alias;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/events/DocumentEndEvent.java b/src/main/java/org/yaml/snakeyaml/events/DocumentEndEvent.java
index 30fe439..cdbce17 100644
--- a/src/main/java/org/yaml/snakeyaml/events/DocumentEndEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/DocumentEndEvent.java
@@ -36,7 +36,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.DocumentEnd == id;
+ public Event.ID getEventId() {
+ return ID.DocumentEnd;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/events/DocumentStartEvent.java b/src/main/java/org/yaml/snakeyaml/events/DocumentStartEvent.java
index dfc139a..af70254 100644
--- a/src/main/java/org/yaml/snakeyaml/events/DocumentStartEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/DocumentStartEvent.java
@@ -66,7 +66,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.DocumentStart == id;
+ public Event.ID getEventId() {
+ return ID.DocumentStart;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/events/Event.java b/src/main/java/org/yaml/snakeyaml/events/Event.java
index b0157bf..7d12d3f 100644
--- a/src/main/java/org/yaml/snakeyaml/events/Event.java
+++ b/src/main/java/org/yaml/snakeyaml/events/Event.java
@@ -55,7 +55,20 @@
return "";
}
- public abstract boolean is(Event.ID id);
+ /**
+ * Check if the Event is of the provided kind
+ * @param id - the Event.ID enum
+ * @return true then this Event of the provided type
+ */
+ public boolean is(Event.ID id) {
+ return getEventId() == id;
+ }
+
+ /**
+ * Get the type (kind) if this Event
+ * @return the ID of this Event
+ */
+ public abstract Event.ID getEventId();
/*
* for tests only
diff --git a/src/main/java/org/yaml/snakeyaml/events/MappingEndEvent.java b/src/main/java/org/yaml/snakeyaml/events/MappingEndEvent.java
index 618c916..a7d69e4 100644
--- a/src/main/java/org/yaml/snakeyaml/events/MappingEndEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/MappingEndEvent.java
@@ -29,7 +29,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.MappingEnd == id;
+ public Event.ID getEventId() {
+ return ID.MappingEnd;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/events/MappingStartEvent.java b/src/main/java/org/yaml/snakeyaml/events/MappingStartEvent.java
index ee0c620..6fe46f5 100644
--- a/src/main/java/org/yaml/snakeyaml/events/MappingStartEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/MappingStartEvent.java
@@ -50,7 +50,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.MappingStart == id;
+ public Event.ID getEventId() {
+ return ID.MappingStart;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/events/ScalarEvent.java b/src/main/java/org/yaml/snakeyaml/events/ScalarEvent.java
index c277b7c..6d5b270 100644
--- a/src/main/java/org/yaml/snakeyaml/events/ScalarEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/ScalarEvent.java
@@ -118,8 +118,8 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.Scalar == id;
+ public Event.ID getEventId() {
+ return ID.Scalar;
}
public boolean isPlain() {
diff --git a/src/main/java/org/yaml/snakeyaml/events/SequenceEndEvent.java b/src/main/java/org/yaml/snakeyaml/events/SequenceEndEvent.java
index a6a6127..204de47 100644
--- a/src/main/java/org/yaml/snakeyaml/events/SequenceEndEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/SequenceEndEvent.java
@@ -29,7 +29,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.SequenceEnd == id;
+ public Event.ID getEventId() {
+ return ID.SequenceEnd;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/events/SequenceStartEvent.java b/src/main/java/org/yaml/snakeyaml/events/SequenceStartEvent.java
index 4f157b3..68533f5 100644
--- a/src/main/java/org/yaml/snakeyaml/events/SequenceStartEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/SequenceStartEvent.java
@@ -45,7 +45,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.SequenceStart == id;
+ public Event.ID getEventId() {
+ return ID.SequenceStart;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/events/StreamEndEvent.java b/src/main/java/org/yaml/snakeyaml/events/StreamEndEvent.java
index 1389c6b..74d77ad 100644
--- a/src/main/java/org/yaml/snakeyaml/events/StreamEndEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/StreamEndEvent.java
@@ -34,7 +34,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.StreamEnd == id;
+ public Event.ID getEventId() {
+ return ID.StreamEnd;
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/events/StreamStartEvent.java b/src/main/java/org/yaml/snakeyaml/events/StreamStartEvent.java
index 42e6c76..6973207 100644
--- a/src/main/java/org/yaml/snakeyaml/events/StreamStartEvent.java
+++ b/src/main/java/org/yaml/snakeyaml/events/StreamStartEvent.java
@@ -35,7 +35,7 @@
}
@Override
- public boolean is(Event.ID id) {
- return ID.StreamStart == id;
+ public Event.ID getEventId() {
+ return ID.StreamStart;
}
}
diff --git a/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java b/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java
index 2c60151..9089767 100644
--- a/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java
+++ b/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java
@@ -15,10 +15,7 @@
*/
package org.yaml.snakeyaml.parser;
-import java.util.LinkedList;
-
import junit.framework.TestCase;
-
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.error.Mark;
import org.yaml.snakeyaml.events.DocumentEndEvent;
@@ -34,17 +31,34 @@
import org.yaml.snakeyaml.events.StreamStartEvent;
import org.yaml.snakeyaml.reader.StreamReader;
+import java.util.LinkedList;
+
public class ParserImplTest extends TestCase {
private void check(LinkedList<Event> etalonEvents, Parser parser) {
- while (parser.checkEvent(null)) {
+ for (Event etalonEvent : etalonEvents) {
+ parser.checkEvent(etalonEvent.getEventId());
Event event = parser.getEvent();
- if (etalonEvents.isEmpty()) {
- fail("unexpected event: " + event);
+ if (event == null) {
+ fail("Missing event: " + etalonEvent);
}
- assertEquals(etalonEvents.removeFirst(), event);
+ assertEquals(etalonEvent, event);
}
- assertFalse("Must contain no more events: " + parser.getEvent(), parser.checkEvent(null));
+ }
+
+ public void testGetEventWithTag() {
+ String data = "! 12";
+ StreamReader reader = new StreamReader(data);
+ Parser parser = new ParserImpl(reader);
+ Mark dummyMark = new Mark("dummy", 0, 0, 0, "".toCharArray(), 0);
+ LinkedList<Event> etalonEvents = new LinkedList<Event>();
+ etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark));
+ etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null));
+ etalonEvents.add(new ScalarEvent(null, "!", new ImplicitTuple(true, false), "12",
+ dummyMark, dummyMark, DumperOptions.ScalarStyle.PLAIN));
+ etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false));
+ etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark));
+ check(etalonEvents, parser);
}
public void testGetEvent() {