Refactor: use Event.ID instead of classes
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a04c2ca..e221af1 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,9 @@
 	<body>

 	    <release version="1.6-SNAPSHOT" date="in Mercurial" description="development">

 	    	<action dev="py4fun" type="update">

+                Refactor: use Event.ID instead of classes (2010-01-15)

+            </action>

+            <action dev="py4fun" type="update">

                 Refactor: use Token.ID instead of classes (2010-01-15)

             </action>

             <action dev="py4fun" type="update">

diff --git a/src/main/java/org/yaml/snakeyaml/composer/Composer.java b/src/main/java/org/yaml/snakeyaml/composer/Composer.java
index 5888a0d..c46ba6c 100644
--- a/src/main/java/org/yaml/snakeyaml/composer/Composer.java
+++ b/src/main/java/org/yaml/snakeyaml/composer/Composer.java
@@ -23,14 +23,10 @@
 
 import org.yaml.snakeyaml.events.AliasEvent;
 import org.yaml.snakeyaml.events.Event;
-import org.yaml.snakeyaml.events.MappingEndEvent;
 import org.yaml.snakeyaml.events.MappingStartEvent;
 import org.yaml.snakeyaml.events.NodeEvent;
 import org.yaml.snakeyaml.events.ScalarEvent;
-import org.yaml.snakeyaml.events.SequenceEndEvent;
 import org.yaml.snakeyaml.events.SequenceStartEvent;
-import org.yaml.snakeyaml.events.StreamEndEvent;
-import org.yaml.snakeyaml.events.StreamStartEvent;
 import org.yaml.snakeyaml.nodes.MappingNode;
 import org.yaml.snakeyaml.nodes.Node;
 import org.yaml.snakeyaml.nodes.NodeId;
@@ -68,11 +64,11 @@
      */
     public boolean checkNode() {
         // Drop the STREAM-START event.
-        if (parser.checkEvent(StreamStartEvent.class)) {
+        if (parser.checkEvent(Event.ID.StreamStart)) {
             parser.getEvent();
         }
         // If there are more documents available?
-        return !parser.checkEvent(StreamEndEvent.class);
+        return !parser.checkEvent(Event.ID.StreamEnd);
     }
 
     /**
@@ -83,7 +79,7 @@
      */
     public Node getNode() {
         // Get the root node of the next document.
-        if (!parser.checkEvent(StreamEndEvent.class)) {
+        if (!parser.checkEvent(Event.ID.StreamEnd)) {
             return composeDocument();
         } else {
             return (Node) null;
@@ -104,11 +100,11 @@
         parser.getEvent();
         // Compose a document if the stream is not empty.
         Node document = null;
-        if (!parser.checkEvent(StreamEndEvent.class)) {
+        if (!parser.checkEvent(Event.ID.StreamEnd)) {
             document = composeDocument();
         }
         // Ensure that the stream contains no more documents.
-        if (!parser.checkEvent(StreamEndEvent.class)) {
+        if (!parser.checkEvent(Event.ID.StreamEnd)) {
             Event event = parser.getEvent();
             throw new ComposerException("expected a single document in the stream", document
                     .getStartMark(), "but found another document", event.getStartMark());
@@ -132,7 +128,7 @@
 
     private Node composeNode(Node parent, Object index) {
         recursiveNodes.add(parent);
-        if (parser.checkEvent(AliasEvent.class)) {
+        if (parser.checkEvent(Event.ID.Alias)) {
             AliasEvent event = (AliasEvent) parser.getEvent();
             String anchor = event.getAnchor();
             if (!anchors.containsKey(anchor)) {
@@ -155,9 +151,9 @@
         }
         // resolver.descendResolver(parent, index);
         Node node = null;
-        if (parser.checkEvent(ScalarEvent.class)) {
+        if (parser.checkEvent(Event.ID.Scalar)) {
             node = composeScalarNode(anchor);
-        } else if (parser.checkEvent(SequenceStartEvent.class)) {
+        } else if (parser.checkEvent(Event.ID.SequenceStart)) {
             node = composeSequenceNode(anchor);
         } else {
             node = composeMappingNode(anchor);
@@ -203,7 +199,7 @@
             anchors.put(anchor, node);
         }
         int index = 0;
-        while (!parser.checkEvent(SequenceEndEvent.class)) {
+        while (!parser.checkEvent(Event.ID.SequenceEnd)) {
             (node.getValue()).add(composeNode(node, new Integer(index)));
             index++;
         }
@@ -228,7 +224,7 @@
         if (anchor != null) {
             anchors.put(anchor, node);
         }
-        while (!parser.checkEvent(MappingEndEvent.class)) {
+        while (!parser.checkEvent(Event.ID.MappingEnd)) {
             Node itemKey = composeNode(node, null);
             Node itemValue = composeNode(node, itemKey);
             node.getValue().add(new NodeTuple(itemKey, itemValue));
diff --git a/src/main/java/org/yaml/snakeyaml/parser/Parser.java b/src/main/java/org/yaml/snakeyaml/parser/Parser.java
index 6bee3c6..e0f888d 100644
--- a/src/main/java/org/yaml/snakeyaml/parser/Parser.java
+++ b/src/main/java/org/yaml/snakeyaml/parser/Parser.java
@@ -15,8 +15,6 @@
  */
 package org.yaml.snakeyaml.parser;
 
-import java.util.List;
-
 import org.yaml.snakeyaml.events.Event;
 
 /**
@@ -34,31 +32,15 @@
     /**
      * Check if the next event is one of the given types.
      * 
-     * @param choices
-     *            List of event types.
+     * @param choice
+     *            Event ID.
      * @return <code>true</code> if the next event can be assigned to a variable
      *         of at least one of the given types. Returns <code>false</code> if
      *         no more events are available.
      * @throws ParserException
      *             Thrown in case of malformed input.
      */
-    public boolean checkEvent(List<Class<? extends Event>> choices);
-
-    /**
-     * Check if the next event is assignable to the given type.
-     * <p>
-     * This is a convenience method to avoid <code>List</code> creation if
-     * calling {@link #checkEvent(List)} for a single type.
-     * </p>
-     * 
-     * @param choice
-     *            Event type.
-     * @return True if the next event is an instance of <code>type</code>. False
-     *         if no more events are available.
-     * @throws ParserException
-     *             Thrown in case of malformed input.
-     */
-    public boolean checkEvent(Class<? extends Event> choice);
+    public boolean checkEvent(Event.ID choices);
 
     /**
      * Return the next event, but do not delete it from the stream.
diff --git a/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java b/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
index 224f525..253d662 100644
--- a/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
+++ b/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
@@ -143,30 +143,16 @@
     /**
      * Check the type of the next event.
      */
-    public boolean checkEvent(List<Class<? extends Event>> choices) {
+    public boolean checkEvent(Event.ID choices) {
         peekEvent();
         if (currentEvent != null) {
-            if (choices.size() == 0) {
+            if (currentEvent.is(choices)) {
                 return true;
             }
-            for (Class<? extends Event> class1 : choices) {
-                if (class1.isInstance(currentEvent)) {
-                    return true;
-                }
-            }
         }
         return false;
     }
 
-    /**
-     * Check the type of the next event.
-     */
-    public boolean checkEvent(Class<? extends Event> cls) {
-        List<Class<? extends Event>> list = new ArrayList<Class<? extends Event>>(1);
-        list.add(cls);
-        return checkEvent(list);
-    }
-
     /*
      * Get the next event.
      */
diff --git a/src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java b/src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java
index 1d88f41..22632ab 100644
--- a/src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java
+++ b/src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java
@@ -175,16 +175,16 @@
     /**
      * Check if the next token is one of the given types.
      */
-    public boolean checkToken(Token.ID... ids) {
+    public boolean checkToken(Token.ID... choices) {
         while (needMoreTokens()) {
             fetchMoreTokens();
         }
         if (!this.tokens.isEmpty()) {
-            if (ids.length == 0) {
+            if (choices.length == 0) {
                 return true;
             }
             Token first = this.tokens.get(0);
-            for (Token.ID id : ids) {
+            for (Token.ID id : choices) {
                 if (first.getTokenId() == id) {
                     return true;
                 }
diff --git a/src/test/java/org/pyyaml/CanonicalParser.java b/src/test/java/org/pyyaml/CanonicalParser.java
index 55bdf2d..7896b4b 100644
--- a/src/test/java/org/pyyaml/CanonicalParser.java
+++ b/src/test/java/org/pyyaml/CanonicalParser.java
@@ -16,7 +16,6 @@
 package org.pyyaml;

 

 import java.util.ArrayList;

-import java.util.List;

 

 import org.yaml.snakeyaml.events.AliasEvent;

 import org.yaml.snakeyaml.events.DocumentEndEvent;

@@ -159,29 +158,18 @@
         return events.remove(0);

     }

 

-    public boolean checkEvent(List<Class<? extends Event>> choices) {

+    public boolean checkEvent(Event.ID choice) {

         if (!parsed) {

             parse();

         }

         if (!events.isEmpty()) {

-            if (choices.isEmpty()) {

+            if (events.get(0).is(choice)) {

                 return true;

             }

-            for (Class<? extends Event> class1 : choices) {

-                if (class1.isInstance(events.get(0))) {

-                    return true;

-                }

-            }

         }

         return false;

     }

 

-    public boolean checkEvent(Class<? extends Event> choice) {

-        List<Class<? extends Event>> list = new ArrayList<Class<? extends Event>>(1);

-        list.add(choice);

-        return checkEvent(list);

-    }

-

     public Event peekEvent() {

         if (!parsed) {

             parse();

diff --git a/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java b/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java
index f18a6a3..8226d67 100644
--- a/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java
+++ b/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java
@@ -15,7 +15,6 @@
  */

 package org.yaml.snakeyaml.parser;

 

-import java.util.ArrayList;

 import java.util.LinkedList;

 

 import junit.framework.TestCase;

@@ -53,15 +52,14 @@
         etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark));

         etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false));

         etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark));

-        while (parser.checkEvent(new ArrayList<Class<? extends Event>>())) {

+        while (parser.checkEvent(null)) {

             Event event = parser.getEvent();

             if (etalonEvents.isEmpty()) {

                 fail("unexpected event: " + event);

             }

             assertEquals(etalonEvents.removeFirst(), event);

         }

-        assertFalse("Must contain no more events: " + parser.getEvent(), parser

-                .checkEvent(new ArrayList<Class<? extends Event>>()));

+        assertFalse("Must contain no more events: " + parser.getEvent(), parser.checkEvent(null));

     }

 

     public void testGetEvent2() {

@@ -84,14 +82,13 @@
         etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark));

         etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false));

         etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark));

-        while (parser.checkEvent(new ArrayList<Class<? extends Event>>())) {

+        while (parser.checkEvent(null)) {

             Event event = parser.getEvent();

             if (etalonEvents.isEmpty()) {

                 fail("unexpected event: " + event);

             }

             assertEquals(etalonEvents.removeFirst(), event);

         }

-        assertFalse("Must contain no more events: " + parser.getEvent(), parser

-                .checkEvent(new ArrayList<Class<? extends Event>>()));

+        assertFalse("Must contain no more events: " + parser.getEvent(), parser.checkEvent(null));

     }

 }