introduce Tags
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
index 082bede..6c8afc2 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
@@ -27,6 +27,7 @@
 import org.yaml.snakeyaml.nodes.NodeTuple;
 import org.yaml.snakeyaml.nodes.ScalarNode;
 import org.yaml.snakeyaml.nodes.SequenceNode;
+import org.yaml.snakeyaml.nodes.Tags;
 
 /**
  * @see <a href="http://pyyaml.org/wiki/PyYAML">PyYAML</a> for more information
@@ -276,7 +277,7 @@
                     result = new BigInteger(result.toString());
                 }
             } else if (Enum.class.isAssignableFrom(type)) {
-                String tag = "tag:yaml.org,2002:" + type.getName();
+                String tag = Tags.PREFIX + type.getName();
                 node.setTag(tag);
                 result = super.callConstructor(node);
             } else {
@@ -426,10 +427,10 @@
     protected Class<?> getClassForNode(Node node) throws ClassNotFoundException {
         Class<? extends Object> customTag = typeTags.get(node.getTag());
         if (customTag == null) {
-            if (node.getTag().length() < "tag:yaml.org,2002:".length()) {
+            if (node.getTag().length() < Tags.PREFIX.length()) {
                 throw new YAMLException("Unknown tag: " + node.getTag());
             }
-            String name = node.getTag().substring("tag:yaml.org,2002:".length());
+            String name = node.getTag().substring(Tags.PREFIX.length());
             Class<?> cl = Class.forName(name);
             typeTags.put(node.getTag(), cl);
             return cl;
diff --git a/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java b/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
index 773edee..6149b22 100644
--- a/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
+++ b/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
@@ -30,6 +30,7 @@
 import org.yaml.snakeyaml.events.SequenceStartEvent;
 import org.yaml.snakeyaml.events.StreamEndEvent;
 import org.yaml.snakeyaml.events.StreamStartEvent;
+import org.yaml.snakeyaml.nodes.Tags;
 
 /**
  * <pre>
@@ -69,7 +70,7 @@
     private final static Map<String, String> DEFAULT_TAG_PREFIXES = new LinkedHashMap<String, String>();
     static {
         DEFAULT_TAG_PREFIXES.put("!", "!");
-        DEFAULT_TAG_PREFIXES.put("tag:yaml.org,2002:", "!!");
+        DEFAULT_TAG_PREFIXES.put(Tags.PREFIX, "!!");
     }
     // The stream should have the methods `write` and possibly `flush`.
     private final Writer stream;
diff --git a/src/main/java/org/yaml/snakeyaml/nodes/Tags.java b/src/main/java/org/yaml/snakeyaml/nodes/Tags.java
new file mode 100644
index 0000000..92e01e0
--- /dev/null
+++ b/src/main/java/org/yaml/snakeyaml/nodes/Tags.java
@@ -0,0 +1,5 @@
+package org.yaml.snakeyaml.nodes;

+

+public class Tags {

+    public static final String PREFIX = "tag:yaml.org,2002:";

+}

diff --git a/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java b/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
index 865a1d0..f16bdc5 100644
--- a/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
+++ b/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
@@ -22,6 +22,7 @@
 import org.yaml.snakeyaml.events.SequenceStartEvent;
 import org.yaml.snakeyaml.events.StreamEndEvent;
 import org.yaml.snakeyaml.events.StreamStartEvent;
+import org.yaml.snakeyaml.nodes.Tags;
 import org.yaml.snakeyaml.scanner.Scanner;
 import org.yaml.snakeyaml.scanner.ScannerImpl;
 import org.yaml.snakeyaml.tokens.AliasToken;
@@ -115,7 +116,7 @@
     private static final Map<String, String> DEFAULT_TAGS = new HashMap<String, String>();
     static {
         DEFAULT_TAGS.put("!", "!");
-        DEFAULT_TAGS.put("!!", "tag:yaml.org,2002:");
+        DEFAULT_TAGS.put("!!", Tags.PREFIX);
     }
 
     private final Scanner scanner;
diff --git a/src/main/java/org/yaml/snakeyaml/representer/Representer.java b/src/main/java/org/yaml/snakeyaml/representer/Representer.java
index 0e2abdd..2c15b36 100644
--- a/src/main/java/org/yaml/snakeyaml/representer/Representer.java
+++ b/src/main/java/org/yaml/snakeyaml/representer/Representer.java
@@ -23,6 +23,7 @@
 import org.yaml.snakeyaml.nodes.Node;
 import org.yaml.snakeyaml.nodes.NodeTuple;
 import org.yaml.snakeyaml.nodes.ScalarNode;
+import org.yaml.snakeyaml.nodes.Tags;
 
 /**
  * Represent JavaBeans
@@ -83,7 +84,7 @@
         List<NodeTuple> value = new LinkedList<NodeTuple>();
         String tag;
         String customTag = classTags.get(javaBean.getClass());
-        tag = customTag != null ? customTag : "tag:yaml.org,2002:" + javaBean.getClass().getName();
+        tag = customTag != null ? customTag : Tags.PREFIX + javaBean.getClass().getName();
         // flow style will be chosen by BaseRepresenter
         MappingNode node = new MappingNode(tag, value, null);
         representedObjects.put(objectToRepresent, node);
diff --git a/src/main/java/org/yaml/snakeyaml/representer/SafeRepresenter.java b/src/main/java/org/yaml/snakeyaml/representer/SafeRepresenter.java
index b538775..54de31d 100644
--- a/src/main/java/org/yaml/snakeyaml/representer/SafeRepresenter.java
+++ b/src/main/java/org/yaml/snakeyaml/representer/SafeRepresenter.java
@@ -15,6 +15,7 @@
 import java.util.regex.Pattern;

 

 import org.yaml.snakeyaml.nodes.Node;

+import org.yaml.snakeyaml.nodes.Tags;

 import org.yaml.snakeyaml.util.Base64Coder;

 

 /**

@@ -205,7 +206,7 @@
 

     private class RepresentEnum implements Represent {

         public Node representData(Object data) {

-            String tag = "tag:yaml.org,2002:" + data.getClass().getName();

+            String tag = Tags.PREFIX + data.getClass().getName();

             return representScalar(tag, data.toString());

         }

     }

diff --git a/src/test/java/org/pyyaml/CanonicalScanner.java b/src/test/java/org/pyyaml/CanonicalScanner.java
index 5bddce3..3b1e13d 100644
--- a/src/test/java/org/pyyaml/CanonicalScanner.java
+++ b/src/test/java/org/pyyaml/CanonicalScanner.java
@@ -9,6 +9,7 @@
 import java.util.Map;

 

 import org.yaml.snakeyaml.error.Mark;

+import org.yaml.snakeyaml.nodes.Tags;

 import org.yaml.snakeyaml.scanner.Scanner;

 import org.yaml.snakeyaml.scanner.ScannerImpl;

 import org.yaml.snakeyaml.tokens.AliasToken;

@@ -224,7 +225,7 @@
         if (value.length() == 0) {

             value = "!";

         } else if (value.charAt(0) == '!') {

-            value = "tag:yaml.org,2002:" + value.substring(1);

+            value = Tags.PREFIX + value.substring(1);

         } else if (value.charAt(0) == '<' && value.charAt(value.length() - 1) == '>') {

             value = value.substring(1, value.length() - 1);

         } else {

diff --git a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
index a665cc8..dfe1d47 100644
--- a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
+++ b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
@@ -9,6 +9,7 @@
 
 import org.yaml.snakeyaml.emitter.Emitter;
 import org.yaml.snakeyaml.error.YAMLException;
+import org.yaml.snakeyaml.nodes.Tags;
 import org.yaml.snakeyaml.representer.Representer;
 
 public class DumperOptionsTest extends TestCase {
@@ -275,7 +276,7 @@
         assertEquals("%TAG !foo! bar\n--- [1, 2, 3]\n", yaml.dump(list));
         //
         options = new DumperOptions();
-        tags.put("!yaml!", "tag:yaml.org,2002:");
+        tags.put("!yaml!", Tags.PREFIX);
         yaml = new Yaml(options);
         assertEquals("foo\n", yaml.dump("foo"));
     }