use Tag in Representer
diff --git a/src/main/java/org/yaml/snakeyaml/DumperOptions.java b/src/main/java/org/yaml/snakeyaml/DumperOptions.java
index 2a7acfd..b58d284 100644
--- a/src/main/java/org/yaml/snakeyaml/DumperOptions.java
+++ b/src/main/java/org/yaml/snakeyaml/DumperOptions.java
@@ -20,6 +20,7 @@
import org.yaml.snakeyaml.emitter.Emitter;
import org.yaml.snakeyaml.emitter.ScalarAnalysis;
import org.yaml.snakeyaml.error.YAMLException;
+import org.yaml.snakeyaml.nodes.Tag;
/**
* @see <a href="http://pyyaml.org/wiki/PyYAML">PyYAML</a> for more information
@@ -161,7 +162,7 @@
private LineBreak lineBreak = LineBreak.UNIX;
private boolean explicitStart = false;
private boolean explicitEnd = false;
- private String explicitRoot = null;
+ private Tag explicitRoot = null;
private Version version = null;
private Map<String, String> tags = null;
@@ -267,16 +268,26 @@
return defaultFlowStyle;
}
- public String getExplicitRoot() {
+ public Tag getExplicitRoot() {
return explicitRoot;
}
/**
* @param expRoot
* tag to be used for the root node. (JavaBeans may use
- * Tags.MAP="tag:yaml.org,2002:map")
+ * Tag.MAP="tag:yaml.org,2002:map")
+ * @deprecated use Tag instead of String
*/
public void setExplicitRoot(String expRoot) {
+ setExplicitRoot(Tag.createTag(expRoot));
+ }
+
+ /**
+ * @param expRoot
+ * tag to be used for the root node. (JavaBeans may use
+ * Tag.MAP="tag:yaml.org,2002:map")
+ */
+ public void setExplicitRoot(Tag expRoot) {
if (expRoot == null) {
throw new NullPointerException("Root tag must be specified.");
}
@@ -315,6 +326,7 @@
return tags;
}
+ // TODO should use Tag ???
public void setTags(Map<String, String> tags) {
this.tags = tags;
}
diff --git a/src/main/java/org/yaml/snakeyaml/Yaml.java b/src/main/java/org/yaml/snakeyaml/Yaml.java
index c3b842b..49ce288 100644
--- a/src/main/java/org/yaml/snakeyaml/Yaml.java
+++ b/src/main/java/org/yaml/snakeyaml/Yaml.java
@@ -26,6 +26,7 @@
import org.yaml.snakeyaml.events.Event;
import org.yaml.snakeyaml.nodes.Node;
+import org.yaml.snakeyaml.nodes.Tag;
import org.yaml.snakeyaml.reader.UnicodeReader;
import org.yaml.snakeyaml.resolver.Resolver;
@@ -243,6 +244,24 @@
* Add an implicit scalar detector. If an implicit scalar value matches the
* given regexp, the corresponding tag is assigned to the scalar.
*
+ * @deprecated use Tag instead of String
+ * @param tag
+ * tag to assign to the node
+ * @param regexp
+ * regular expression to match against
+ * @param first
+ * a sequence of possible initial characters or null (which means
+ * any).
+ *
+ */
+ public void addImplicitResolver(String tag, Pattern regexp, String first) {
+ addImplicitResolver(Tag.createTag(tag), regexp, first);
+ }
+
+ /**
+ * Add an implicit scalar detector. If an implicit scalar value matches the
+ * given regexp, the corresponding tag is assigned to the scalar.
+ *
* @param tag
* tag to assign to the node
* @param regexp
@@ -251,7 +270,7 @@
* a sequence of possible initial characters or null (which means
* any).
*/
- public void addImplicitResolver(String tag, Pattern regexp, String first) {
+ public void addImplicitResolver(Tag tag, Pattern regexp, String first) {
resolver.addImplicitResolver(tag, regexp, first);
}
diff --git a/src/main/java/org/yaml/snakeyaml/composer/Composer.java b/src/main/java/org/yaml/snakeyaml/composer/Composer.java
index d7bc469..379235d 100644
--- a/src/main/java/org/yaml/snakeyaml/composer/Composer.java
+++ b/src/main/java/org/yaml/snakeyaml/composer/Composer.java
@@ -171,12 +171,13 @@
ScalarEvent ev = (ScalarEvent) parser.getEvent();
String tag = ev.getTag();
boolean resolved = false;
+ Tag nodeTag = Tag.createTag(tag);
if (tag == null || tag.equals("!")) {
- tag = resolver.resolve(NodeId.scalar, ev.getValue(), ev.getImplicit().isFirst());
+ nodeTag = resolver.resolve(NodeId.scalar, ev.getValue(), ev.getImplicit().isFirst());
resolved = true;
}
- Node node = new ScalarNode(Tag.createTag(tag), resolved, ev.getValue(), ev.getStartMark(),
- ev.getEndMark(), ev.getStyle());
+ Node node = new ScalarNode(nodeTag, resolved, ev.getValue(), ev.getStartMark(), ev
+ .getEndMark(), ev.getStyle());
if (anchor != null) {
anchors.put(anchor, node);
}
@@ -186,13 +187,14 @@
private Node composeSequenceNode(String anchor) {
SequenceStartEvent startEvent = (SequenceStartEvent) parser.getEvent();
String tag = startEvent.getTag();
+ Tag nodeTag = Tag.createTag(tag);
boolean resolved = false;
if (tag == null || tag.equals("!")) {
- tag = resolver.resolve(NodeId.sequence, null, startEvent.getImplicit());
+ nodeTag = resolver.resolve(NodeId.sequence, null, startEvent.getImplicit());
resolved = true;
}
- SequenceNode node = new SequenceNode(Tag.createTag(tag), resolved, new ArrayList<Node>(),
- startEvent.getStartMark(), null, startEvent.getFlowStyle());
+ SequenceNode node = new SequenceNode(nodeTag, resolved, new ArrayList<Node>(), startEvent
+ .getStartMark(), null, startEvent.getFlowStyle());
if (anchor != null) {
anchors.put(anchor, node);
}
@@ -209,14 +211,14 @@
private Node composeMappingNode(String anchor) {
MappingStartEvent startEvent = (MappingStartEvent) parser.getEvent();
String tag = startEvent.getTag();
+ Tag nodeTag = Tag.createTag(tag);
boolean resolved = false;
if (tag == null || tag.equals("!")) {
- tag = resolver.resolve(NodeId.mapping, null, startEvent.getImplicit());
+ nodeTag = resolver.resolve(NodeId.mapping, null, startEvent.getImplicit());
resolved = true;
}
- MappingNode node = new MappingNode(Tag.createTag(tag), resolved,
- new ArrayList<NodeTuple>(), startEvent.getStartMark(), null, startEvent
- .getFlowStyle());
+ MappingNode node = new MappingNode(nodeTag, resolved, new ArrayList<NodeTuple>(),
+ startEvent.getStartMark(), null, startEvent.getFlowStyle());
if (anchor != null) {
anchors.put(anchor, node);
}
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/BaseConstructor.java b/src/main/java/org/yaml/snakeyaml/constructor/BaseConstructor.java
index 057c8b5..cb2d904 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/BaseConstructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/BaseConstructor.java
@@ -34,6 +34,7 @@
import org.yaml.snakeyaml.nodes.NodeTuple;
import org.yaml.snakeyaml.nodes.ScalarNode;
import org.yaml.snakeyaml.nodes.SequenceNode;
+import org.yaml.snakeyaml.nodes.Tag;
/**
* @see <a href="http://pyyaml.org/wiki/PyYAML">PyYAML</a> for more information
@@ -52,7 +53,7 @@
* 2) implicit tag - when the runtime class of the instance is unknown (the
* node has the Object.class)
*/
- protected final Map<String, Construct> yamlConstructors = new HashMap<String, Construct>();
+ protected final Map<Tag, Construct> yamlConstructors = new HashMap<Tag, Construct>();
/**
* It maps the (explicit or implicit) tag to the Construct implementation.
* It is used when no exact match found.
@@ -65,7 +66,7 @@
private final ArrayList<RecursiveTuple<Map<Object, Object>, RecursiveTuple<Object, Object>>> maps2fill;
private final ArrayList<RecursiveTuple<Set<Object>, Object>> sets2fill;
- protected String rootTag;
+ protected Tag rootTag;
public BaseConstructor() {
constructedObjects = new HashMap<Node, Object>();
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
index 747cb6d..86efa52 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
@@ -72,7 +72,7 @@
}
this.yamlConstructors.put(null, new ConstructYamlObject());
if (!Object.class.equals(theRoot)) {
- rootTag = Tag.getGlobalTagForClass(theRoot);
+ rootTag = new Tag(theRoot);
}
typeTags = new HashMap<String, Class<? extends Object>>();
typeDefinitions = new HashMap<Class<? extends Object>, TypeDescription>();
@@ -119,7 +119,7 @@
throw new NullPointerException("TypeDescription is required.");
}
if (rootTag == null && definition.isRoot()) {
- rootTag = Tag.getGlobalTagForClass(definition.getType());
+ rootTag = new Tag(definition.getType());
}
String tag = definition.getTag();
typeTags.put(tag, definition.getType());
diff --git a/src/main/java/org/yaml/snakeyaml/nodes/Tag.java b/src/main/java/org/yaml/snakeyaml/nodes/Tag.java
index 9060d3c..a3d86ee 100644
--- a/src/main/java/org/yaml/snakeyaml/nodes/Tag.java
+++ b/src/main/java/org/yaml/snakeyaml/nodes/Tag.java
@@ -28,24 +28,24 @@
public final class Tag {
public static final String PREFIX = "tag:yaml.org,2002:";
- public static final String YAML = PREFIX + "yaml";
- public static final String VALUE = PREFIX + "value";
- public static final String MERGE = PREFIX + "merge";
- public static final String SET = PREFIX + "set";
- public static final String PAIRS = PREFIX + "pairs";
- public static final String OMAP = PREFIX + "omap";
- public static final String BINARY = PREFIX + "binary";
- public static final String INT = PREFIX + "int";
- public static final String FLOAT = PREFIX + "float";
- public static final String TIMESTAMP = PREFIX + "timestamp";
- public static final String BOOL = PREFIX + "bool";
- public static final String NULL = PREFIX + "null";
- public static final String STR = PREFIX + "str";
- public static final String SEQ = PREFIX + "seq";
- public static final String MAP = PREFIX + "map";
- public static final Map<String, Set<Class<?>>> COMPATIBILITY_MAP;
+ public static final Tag YAML = new Tag(PREFIX + "yaml");
+ public static final Tag VALUE = new Tag(PREFIX + "value");
+ public static final Tag MERGE = new Tag(PREFIX + "merge");
+ public static final Tag SET = new Tag(PREFIX + "set");
+ public static final Tag PAIRS = new Tag(PREFIX + "pairs");
+ public static final Tag OMAP = new Tag(PREFIX + "omap");
+ public static final Tag BINARY = new Tag(PREFIX + "binary");
+ public static final Tag INT = new Tag(PREFIX + "int");
+ public static final Tag FLOAT = new Tag(PREFIX + "float");
+ public static final Tag TIMESTAMP = new Tag(PREFIX + "timestamp");
+ public static final Tag BOOL = new Tag(PREFIX + "bool");
+ public static final Tag NULL = new Tag(PREFIX + "null");
+ public static final Tag STR = new Tag(PREFIX + "str");
+ public static final Tag SEQ = new Tag(PREFIX + "seq");
+ public static final Tag MAP = new Tag(PREFIX + "map");
+ public static final Map<Tag, Set<Class<?>>> COMPATIBILITY_MAP;
static {
- COMPATIBILITY_MAP = new HashMap<String, Set<Class<?>>>();
+ COMPATIBILITY_MAP = new HashMap<Tag, Set<Class<?>>>();
Set<Class<?>> floatSet = new HashSet<Class<?>>();
floatSet.add(Double.class);
floatSet.add(Float.class);
@@ -80,7 +80,10 @@
}
public Tag(Class<? extends Object> clazz) {
- this(Tag.PREFIX + clazz.getName());
+ if (clazz == null) {
+ throw new NullPointerException("Class for tag must be provided.");
+ }
+ this.value = Tag.PREFIX + clazz.getName();
}
public String getValue() {
@@ -136,7 +139,7 @@
* language-independent tag
*/
public boolean isCompatible(Class<?> clazz) {
- Set<Class<?>> set = COMPATIBILITY_MAP.get(value);
+ Set<Class<?>> set = COMPATIBILITY_MAP.get(Tag.createTag(value));
if (set != null) {
return set.contains(clazz);
} else {
@@ -155,7 +158,4 @@
return value.equals(Tag.PREFIX + clazz.getName());
}
- public static String getGlobalTagForClass(Class<? extends Object> clazz) {
- return PREFIX + clazz.getName();
- }
}
diff --git a/src/main/java/org/yaml/snakeyaml/representer/BaseRepresenter.java b/src/main/java/org/yaml/snakeyaml/representer/BaseRepresenter.java
index f12c35f..1dcc245 100644
--- a/src/main/java/org/yaml/snakeyaml/representer/BaseRepresenter.java
+++ b/src/main/java/org/yaml/snakeyaml/representer/BaseRepresenter.java
@@ -111,22 +111,22 @@
return node;
}
- protected Node representScalar(String tag, String value, Character style) {
+ protected Node representScalar(Tag tag, String value, Character style) {
if (style == null) {
style = this.defaultStyle;
}
- Node node = new ScalarNode(Tag.createTag(tag), value, null, null, style);
+ Node node = new ScalarNode(tag, value, null, null, style);
representedObjects.put(objectToRepresent, node);
return node;
}
- protected Node representScalar(String tag, String value) {
+ protected Node representScalar(Tag tag, String value) {
return representScalar(tag, value, null);
}
- protected Node representSequence(String tag, List<? extends Object> sequence, Boolean flowStyle) {
+ protected Node representSequence(Tag tag, List<? extends Object> sequence, Boolean flowStyle) {
List<Node> value = new ArrayList<Node>(sequence.size());
- SequenceNode node = new SequenceNode(Tag.createTag(tag), value, flowStyle);
+ SequenceNode node = new SequenceNode(tag, value, flowStyle);
representedObjects.put(objectToRepresent, node);
boolean bestStyle = true;
for (Object item : sequence) {
@@ -146,10 +146,10 @@
return node;
}
- protected Node representMapping(String tag, Map<? extends Object, Object> mapping,
+ protected Node representMapping(Tag tag, Map<? extends Object, Object> mapping,
Boolean flowStyle) {
List<NodeTuple> value = new ArrayList<NodeTuple>(mapping.size());
- MappingNode node = new MappingNode(Tag.createTag(tag), value, flowStyle);
+ MappingNode node = new MappingNode(tag, value, flowStyle);
representedObjects.put(objectToRepresent, node);
boolean bestStyle = true;
for (Object itemKey : mapping.keySet()) {
diff --git a/src/main/java/org/yaml/snakeyaml/representer/Representer.java b/src/main/java/org/yaml/snakeyaml/representer/Representer.java
index 1c9dcc8..28ff5a9 100644
--- a/src/main/java/org/yaml/snakeyaml/representer/Representer.java
+++ b/src/main/java/org/yaml/snakeyaml/representer/Representer.java
@@ -85,11 +85,11 @@
*/
protected Node representJavaBean(Set<Property> properties, Object javaBean) {
List<NodeTuple> value = new ArrayList<NodeTuple>(properties.size());
- String tag;
- String customTag = classTags.get(javaBean.getClass());
- tag = customTag != null ? customTag : Tag.getGlobalTagForClass(javaBean.getClass());
+ Tag tag;
+ Tag customTag = classTags.get(javaBean.getClass());
+ tag = customTag != null ? customTag : new Tag(javaBean.getClass());
// flow style will be chosen by BaseRepresenter
- MappingNode node = new MappingNode(Tag.createTag(tag), value, null);
+ MappingNode node = new MappingNode(tag, value, null);
representedObjects.put(objectToRepresent, node);
boolean bestStyle = true;
for (Property property : properties) {
@@ -111,12 +111,12 @@
if (property.getType() == memberValue.getClass()) {
// we do not need global tag because the property
// Class is the same as the runtime class
- nodeValue.setTag(Tag.createTag(Tag.MAP));
+ nodeValue.setTag(Tag.MAP);
}
}
}
} else if (memberValue != null && Enum.class.isAssignableFrom(memberValue.getClass())) {
- nodeValue.setTag(Tag.createTag(Tag.STR));
+ nodeValue.setTag(Tag.STR);
}
if (nodeValue.getNodeId() != NodeId.scalar && !hasAlias) {
// generic collections
@@ -162,7 +162,7 @@
for (Node childNode : snode.getValue()) {
Object member = iter.next();
if (t.equals(member.getClass()) && childNode.getNodeId() == NodeId.mapping) {
- childNode.setTag(Tag.createTag(Tag.MAP));
+ childNode.setTag(Tag.MAP);
}
}
} else if (object instanceof Set) {
@@ -174,7 +174,7 @@
NodeTuple tuple = iter.next();
if (t.equals(member.getClass())
&& tuple.getKeyNode().getNodeId() == NodeId.mapping) {
- tuple.getKeyNode().setTag(Tag.createTag(Tag.MAP));
+ tuple.getKeyNode().setTag(Tag.MAP);
}
}
} else if (node.getNodeId() == NodeId.mapping) {
@@ -193,9 +193,9 @@
Tag tag = node.getTag();
if (tag.matches(type)) {
if (Enum.class.isAssignableFrom(type)) {
- node.setTag(Tag.createTag(Tag.STR));
+ node.setTag(Tag.STR);
} else {
- node.setTag(Tag.createTag(Tag.MAP));
+ node.setTag(Tag.MAP);
}
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/representer/SafeRepresenter.java b/src/main/java/org/yaml/snakeyaml/representer/SafeRepresenter.java
index e69037c..1050696 100644
--- a/src/main/java/org/yaml/snakeyaml/representer/SafeRepresenter.java
+++ b/src/main/java/org/yaml/snakeyaml/representer/SafeRepresenter.java
@@ -38,7 +38,7 @@
*/
class SafeRepresenter extends BaseRepresenter {
- protected Map<Class<? extends Object>, String> classTags;
+ protected Map<Class<? extends Object>, Tag> classTags;
public SafeRepresenter() {
this.nullRepresenter = new RepresentNull();
@@ -53,10 +53,10 @@
this.multiRepresenters.put(new Object[0].getClass(), new RepresentArray());
this.multiRepresenters.put(Date.class, new RepresentDate());
this.multiRepresenters.put(Enum.class, new RepresentEnum());
- classTags = new HashMap<Class<? extends Object>, String>();
+ classTags = new HashMap<Class<? extends Object>, Tag>();
}
- private String getTag(Class<?> clazz, String defaultTag) {
+ private Tag getTag(Class<?> clazz, Tag defaultTag) {
if (classTags.containsKey(clazz)) {
return classTags.get(clazz);
} else {
@@ -83,6 +83,7 @@
/**
* Define a tag for the <code>Class</code> to serialize
*
+ * @deprecated use Tag instead of String
* @param clazz
* <code>Class</code> which tag is changed
* @param tag
@@ -90,7 +91,11 @@
* <code>Class</code>
* @return the previous tag associated with the <code>Class</code>
*/
- public String addClassTag(Class<? extends Object> clazz, String tag) {
+ public Tag addClassTag(Class<? extends Object> clazz, String tag) {
+ return addClassTag(clazz, Tag.createTag(tag));
+ }
+
+ public Tag addClassTag(Class<? extends Object> clazz, Tag tag) {
if (tag == null) {
throw new NullPointerException("Tag must be provided.");
}
@@ -107,7 +112,7 @@
private class RepresentString implements Represent {
public Node representData(Object data) {
- String tag = Tag.STR;
+ Tag tag = Tag.STR;
Character style = null;
String value = data.toString();
if (BINARY_PATTERN.matcher(value).find()) {
@@ -135,7 +140,7 @@
private class RepresentNumber implements Represent {
public Node representData(Object data) {
- String tag;
+ Tag tag;
String value;
if (data instanceof Byte || data instanceof Short || data instanceof Integer
|| data instanceof Long || data instanceof BigInteger) {
@@ -248,7 +253,7 @@
private class RepresentEnum implements Represent {
public Node representData(Object data) {
- String tag = Tag.getGlobalTagForClass(data.getClass());
+ Tag tag = new Tag(data.getClass());
return representScalar(getTag(data.getClass(), tag), data.toString());
}
}
diff --git a/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java b/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java
index b534824..434b5dc 100644
--- a/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java
+++ b/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java
@@ -80,7 +80,7 @@
this(true);
}
- public void addImplicitResolver(String tag, Pattern regexp, String first) {
+ public void addImplicitResolver(Tag tag, Pattern regexp, String first) {
if (first == null) {
List<ResolverTuple> curr = yamlImplicitResolvers.get(null);
if (curr == null) {
@@ -106,7 +106,7 @@
}
}
- public String resolve(NodeId kind, String value, boolean implicit) {
+ public Tag resolve(NodeId kind, String value, boolean implicit) {
if (kind == NodeId.scalar && implicit) {
List<ResolverTuple> resolvers = null;
if ("".equals(value)) {
@@ -116,7 +116,7 @@
}
if (resolvers != null) {
for (ResolverTuple v : resolvers) {
- String tag = v.getTag();
+ Tag tag = v.getTag();
Pattern regexp = v.getRegexp();
if (regexp.matcher(value).matches()) {
return tag;
@@ -125,7 +125,7 @@
}
if (yamlImplicitResolvers.containsKey(null)) {
for (ResolverTuple v : yamlImplicitResolvers.get(null)) {
- String tag = v.getTag();
+ Tag tag = v.getTag();
Pattern regexp = v.getRegexp();
if (regexp.matcher(value).matches()) {
return tag;
diff --git a/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java b/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java
index d3c89cb..11ee46f 100644
--- a/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java
+++ b/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java
@@ -17,16 +17,18 @@
import java.util.regex.Pattern;
+import org.yaml.snakeyaml.nodes.Tag;
+
final class ResolverTuple {
- private final String tag;
+ private final Tag tag;
private final Pattern regexp;
- public ResolverTuple(String tag, Pattern regexp) {
+ public ResolverTuple(Tag tag, Pattern regexp) {
this.tag = tag;
this.regexp = regexp;
}
- public String getTag() {
+ public Tag getTag() {
return tag;
}
diff --git a/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java b/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java
index d162a83..911c4b7 100644
--- a/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java
+++ b/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java
@@ -60,7 +60,7 @@
private Map<Node, String> anchors;
private int lastAnchorId;
private Boolean closed;
- private String explicitRoot;
+ private Tag explicitRoot;
public Serializer(Emitter emitter, Resolver resolver, DumperOptions opts) {
this.emitter = emitter;
@@ -108,7 +108,7 @@
useTags));
anchorNode(node);
if (explicitRoot != null) {
- node.setTag(Tag.createTag(explicitRoot));
+ node.setTag(explicitRoot);
}
serializeNode(node, null, null);
this.emitter.emit(new DocumentEndEvent(null, null, this.explicitEnd));
@@ -167,10 +167,8 @@
switch (node.getNodeId()) {
case scalar:
ScalarNode scalarNode = (ScalarNode) node;
- String detectedTag = this.resolver.resolve(NodeId.scalar, scalarNode.getValue(),
- true);
- String defaultTag = this.resolver.resolve(NodeId.scalar, scalarNode.getValue(),
- false);
+ Tag detectedTag = this.resolver.resolve(NodeId.scalar, scalarNode.getValue(), true);
+ Tag defaultTag = this.resolver.resolve(NodeId.scalar, scalarNode.getValue(), false);
ImplicitTuple tuple = new ImplicitTuple(node.getTag().equals(detectedTag), node
.getTag().equals(defaultTag));
ScalarEvent event = new ScalarEvent(tAlias, node.getTag().getValue(), tuple,
@@ -192,7 +190,7 @@
this.emitter.emit(new SequenceEndEvent(null, null));
break;
default:// instance of MappingNode
- String implicitTag = this.resolver.resolve(NodeId.mapping, null, true);
+ Tag implicitTag = this.resolver.resolve(NodeId.mapping, null, true);
boolean implicitM = (node.getTag().equals(implicitTag));
this.emitter.emit(new MappingStartEvent(tAlias, node.getTag().getValue(),
implicitM, null, null, ((CollectionNode) node).getFlowStyle()));
diff --git a/src/test/java/examples/DiceExampleTest.java b/src/test/java/examples/DiceExampleTest.java
index 55042b7..97e2e39 100644
--- a/src/test/java/examples/DiceExampleTest.java
+++ b/src/test/java/examples/DiceExampleTest.java
@@ -30,6 +30,7 @@
import org.yaml.snakeyaml.constructor.SafeConstructor;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.ScalarNode;
+import org.yaml.snakeyaml.nodes.Tag;
import org.yaml.snakeyaml.representer.Represent;
import org.yaml.snakeyaml.representer.Representer;
@@ -59,14 +60,14 @@
public Node representData(Object data) {
Dice dice = (Dice) data;
String value = dice.getA() + "d" + dice.getB();
- return representScalar("!dice", value);
+ return representScalar(Tag.createTag("!dice"), value);
}
}
}
class DiceConstructor extends SafeConstructor {
public DiceConstructor() {
- this.yamlConstructors.put("!dice", new ConstructDice());
+ this.yamlConstructors.put(Tag.createTag("!dice"), new ConstructDice());
}
private class ConstructDice extends AbstractConstruct {
diff --git a/src/test/java/org/yaml/snakeyaml/Chapter2_4Test.java b/src/test/java/org/yaml/snakeyaml/Chapter2_4Test.java
index f35ebce..1b1f425 100644
--- a/src/test/java/org/yaml/snakeyaml/Chapter2_4Test.java
+++ b/src/test/java/org/yaml/snakeyaml/Chapter2_4Test.java
@@ -31,6 +31,7 @@
import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.ScalarNode;
+import org.yaml.snakeyaml.nodes.Tag;
/**
* Test Chapter 2.4 from the YAML specification
@@ -130,7 +131,7 @@
class SomethingConstructor extends Constructor {
public SomethingConstructor() {
- this.yamlConstructors.put("!something", new ConstructSomething());
+ this.yamlConstructors.put(Tag.createTag("!something"), new ConstructSomething());
}
private class ConstructSomething extends AbstractConstruct {
diff --git a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
index 1a563ce..f485ffa 100644
--- a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
+++ b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
@@ -310,7 +310,7 @@
public void testSetRootTag() {
DumperOptions options = new DumperOptions();
try {
- options.setExplicitRoot(null);
+ options.setExplicitRoot((Tag) null);
fail("Root tag is required.");
} catch (NullPointerException e) {
assertEquals("Root tag must be specified.", e.getMessage());
diff --git a/src/test/java/org/yaml/snakeyaml/Example2_24Test.java b/src/test/java/org/yaml/snakeyaml/Example2_24Test.java
index f68ba08..396456a 100644
--- a/src/test/java/org/yaml/snakeyaml/Example2_24Test.java
+++ b/src/test/java/org/yaml/snakeyaml/Example2_24Test.java
@@ -40,10 +40,14 @@
public class Example2_24Test extends TestCase {
class MyConstructor extends Constructor {
public MyConstructor() {
- this.yamlConstructors.put("tag:clarkevans.com,2002:shape", new ConstructShape());
- this.yamlConstructors.put("tag:clarkevans.com,2002:circle", new ConstructCircle());
- this.yamlConstructors.put("tag:clarkevans.com,2002:line", new ConstructLine());
- this.yamlConstructors.put("tag:clarkevans.com,2002:label", new ConstructLabel());
+ this.yamlConstructors.put(Tag.createTag("tag:clarkevans.com,2002:shape"),
+ new ConstructShape());
+ this.yamlConstructors.put(Tag.createTag("tag:clarkevans.com,2002:circle"),
+ new ConstructCircle());
+ this.yamlConstructors.put(Tag.createTag("tag:clarkevans.com,2002:line"),
+ new ConstructLine());
+ this.yamlConstructors.put(Tag.createTag("tag:clarkevans.com,2002:label"),
+ new ConstructLabel());
}
private class ConstructShape extends AbstractConstruct {
@@ -102,7 +106,7 @@
public Node representData(Object data) {
Shape shape = (Shape) data;
List<Entity> value = shape.getEntities();
- return representSequence("!shape", value, Boolean.FALSE);
+ return representSequence(Tag.createTag("!shape"), value, Boolean.FALSE);
}
}
@@ -112,7 +116,7 @@
Map<String, Object> map = new TreeMap<String, Object>();
map.put("center", circle.getCenter());
map.put("radius", circle.getRadius());
- return representMapping("!circle", map, Boolean.FALSE);
+ return representMapping(Tag.createTag("!circle"), map, Boolean.FALSE);
}
}
@@ -122,7 +126,7 @@
Map<String, Object> map = new TreeMap<String, Object>();
map.put("start", line.getStart());
map.put("finish", line.getFinish());
- return representMapping("!line", map, Boolean.FALSE);
+ return representMapping(Tag.createTag("!line"), map, Boolean.FALSE);
}
}
@@ -133,7 +137,7 @@
map.put("start", label.getStart());
map.put("color", new HexInteger(label.getColor()));
map.put("text", label.getText());
- return representMapping("!label", map, Boolean.FALSE);
+ return representMapping(Tag.createTag("!label"), map, Boolean.FALSE);
}
}
diff --git a/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java b/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java
index ca04420..6a91217 100644
--- a/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java
+++ b/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java
@@ -159,26 +159,28 @@
private class RepresentFloat implements Represent {
public Node representData(Object data) {
- return representScalar(Tag.PREFIX + "java.lang.Float", ((Float) data).toString());
+ return representScalar(Tag.createTag(Tag.PREFIX + "java.lang.Float"),
+ ((Float) data).toString());
}
}
private class RepresentLong implements Represent {
public Node representData(Object data) {
- return representScalar(Tag.PREFIX + "java.lang.Long", ((Long) data).toString());
+ return representScalar(Tag.createTag(Tag.PREFIX + "java.lang.Long"), ((Long) data)
+ .toString());
}
}
private class RepresentDate implements Represent {
public Node representData(Object data) {
- return representScalar(Tag.PREFIX + "java.sql.Date", ((java.sql.Date) data)
- .toString());
+ return representScalar(Tag.createTag(Tag.PREFIX + "java.sql.Date"),
+ ((java.sql.Date) data).toString());
}
}
private class RepresentTime implements Represent {
public Node representData(Object data) {
- return representScalar(Tag.PREFIX + "java.sql.Timestamp",
+ return representScalar(Tag.createTag(Tag.PREFIX + "java.sql.Timestamp"),
((java.sql.Timestamp) data).toString());
}
}
diff --git a/src/test/java/org/yaml/snakeyaml/constructor/PrefixConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/PrefixConstructorTest.java
index 90b4f6d..7a93a7f 100644
--- a/src/test/java/org/yaml/snakeyaml/constructor/PrefixConstructorTest.java
+++ b/src/test/java/org/yaml/snakeyaml/constructor/PrefixConstructorTest.java
@@ -24,6 +24,7 @@
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.ScalarNode;
import org.yaml.snakeyaml.nodes.SequenceNode;
+import org.yaml.snakeyaml.nodes.Tag;
/**
* Example to process a family of tags with the same prefix with one constructor
@@ -61,8 +62,8 @@
this.yamlMultiConstructors.put(prefix, new PrefixConstruct(prefix,
CustomConstructor.this));
this.yamlConstructors.put(null, new ConstructUnknown(CustomConstructor.this));
- this.yamlConstructors
- .put("!org.yaml.Exact", new ExactConstruct(CustomConstructor.this));
+ this.yamlConstructors.put(Tag.createTag("!org.yaml.Exact"), new ExactConstruct(
+ CustomConstructor.this));
}
}
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue11/YamlMapTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue11/YamlMapTest.java
index 9eb556a..828fa17 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue11/YamlMapTest.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue11/YamlMapTest.java
@@ -29,6 +29,7 @@
import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.ScalarNode;
+import org.yaml.snakeyaml.nodes.Tag;
import org.yaml.snakeyaml.representer.Represent;
import org.yaml.snakeyaml.representer.Representer;
@@ -130,14 +131,14 @@
private class RepresentCustom implements Represent {
public Node representData(Object data) {
- return representScalar("!Custom", ((Custom) data).toString());
+ return representScalar(Tag.createTag("!Custom"), ((Custom) data).toString());
}
}
}
public static class ExtendedConstructor extends Constructor {
public ExtendedConstructor() {
- this.yamlConstructors.put("!Custom", new ConstructCustom());
+ this.yamlConstructors.put(Tag.createTag("!Custom"), new ConstructCustom());
}
private class ConstructCustom extends AbstractConstruct {
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue9/BeanConstructor.java b/src/test/java/org/yaml/snakeyaml/issues/issue9/BeanConstructor.java
index 7e2ba7f..1e73958 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue9/BeanConstructor.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue9/BeanConstructor.java
@@ -25,9 +25,8 @@
public BeanConstructor() {
super(BeanHolder.class);
- yamlConstructors.put(Tag.getGlobalTagForClass(Bean1.class), new Bean1ScalarConstructor());
- yamlConstructors.put(Tag.getGlobalTagForClass(BeanHolder.class),
- new BeanHolderScalarConstructor());
+ yamlConstructors.put(new Tag(Bean1.class), new Bean1ScalarConstructor());
+ yamlConstructors.put(new Tag(BeanHolder.class), new BeanHolderScalarConstructor());
}
private class Bean1ScalarConstructor extends ConstructScalar {
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue9/BeanConstructor3.java b/src/test/java/org/yaml/snakeyaml/issues/issue9/BeanConstructor3.java
index e5289d0..05722e0 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue9/BeanConstructor3.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue9/BeanConstructor3.java
@@ -22,8 +22,7 @@
public class BeanConstructor3 extends Constructor {
public BeanConstructor3() {
- yamlConstructors.put(Tag.getGlobalTagForClass(BeanHolder.class),
- new BeanHolderScalarConstructor());
+ yamlConstructors.put(new Tag(BeanHolder.class), new BeanHolderScalarConstructor());
}
private class BeanHolderScalarConstructor extends ConstructScalar {
diff --git a/src/test/java/org/yaml/snakeyaml/nodes/NodeTupleTest.java b/src/test/java/org/yaml/snakeyaml/nodes/NodeTupleTest.java
index b423129..a2d6a79 100644
--- a/src/test/java/org/yaml/snakeyaml/nodes/NodeTupleTest.java
+++ b/src/test/java/org/yaml/snakeyaml/nodes/NodeTupleTest.java
@@ -40,8 +40,8 @@
}
public void testToString() {
- Node key = new ScalarNode(Tag.createTag(Tag.STR), "key1", null, null, null);
- Node value = new ScalarNode(Tag.createTag(Tag.STR), "value1", null, null, null);
+ Node key = new ScalarNode(Tag.STR, "key1", null, null, null);
+ Node value = new ScalarNode(Tag.STR, "value1", null, null, null);
NodeTuple tuple = new NodeTuple(key, value);
assertEquals(
"<NodeTuple keyNode=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=key1)>; valueNode=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=value1)>>",
diff --git a/src/test/java/org/yaml/snakeyaml/nodes/TagsTest.java b/src/test/java/org/yaml/snakeyaml/nodes/TagsTest.java
index fe7da84..13ad758 100644
--- a/src/test/java/org/yaml/snakeyaml/nodes/TagsTest.java
+++ b/src/test/java/org/yaml/snakeyaml/nodes/TagsTest.java
@@ -23,9 +23,9 @@
public class TagsTest extends TestCase {
public void testGetGlobalTagForClass() {
- assertEquals("tag:yaml.org,2002:java.lang.String", Tag.getGlobalTagForClass(String.class));
- assertEquals("tag:yaml.org,2002:org.yaml.snakeyaml.nodes.TagsTest", Tag
- .getGlobalTagForClass(TagsTest.class));
+ assertEquals(Tag.createTag("tag:yaml.org,2002:java.lang.String"), new Tag(String.class));
+ assertEquals(Tag.createTag("tag:yaml.org,2002:org.yaml.snakeyaml.nodes.TagsTest"), new Tag(
+ TagsTest.class));
}
/**
diff --git a/src/test/java/org/yaml/snakeyaml/representer/RepresentTest.java b/src/test/java/org/yaml/snakeyaml/representer/RepresentTest.java
index e6d137f..75d9bea 100644
--- a/src/test/java/org/yaml/snakeyaml/representer/RepresentTest.java
+++ b/src/test/java/org/yaml/snakeyaml/representer/RepresentTest.java
@@ -75,14 +75,14 @@
public Node representData(Object data) {
CustomBean coin = (CustomBean) data;
String value = coin.getPrefix() + "d" + coin.getSuffix();
- return representScalar("!!Dice", value);
+ return representScalar(Tag.createTag("!!Dice"), value);
}
}
}
class MyConstructor extends Constructor {
public MyConstructor() {
- this.yamlConstructors.put(Tag.PREFIX + "Dice", new ConstructDice());
+ this.yamlConstructors.put(Tag.createTag(Tag.PREFIX + "Dice"), new ConstructDice());
}
private class ConstructDice extends AbstractConstruct {
diff --git a/src/test/java/org/yaml/snakeyaml/representer/RepresenterTest.java b/src/test/java/org/yaml/snakeyaml/representer/RepresenterTest.java
index e2bc853..279590f 100644
--- a/src/test/java/org/yaml/snakeyaml/representer/RepresenterTest.java
+++ b/src/test/java/org/yaml/snakeyaml/representer/RepresenterTest.java
@@ -18,6 +18,7 @@
import junit.framework.TestCase;
import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.nodes.Tag;
public class RepresenterTest extends TestCase {
@@ -134,7 +135,7 @@
public void testRepresenterAddNull() {
Representer representer = new Representer();
try {
- representer.addClassTag(EmptyBean.class, null);
+ representer.addClassTag(EmptyBean.class, (Tag) null);
fail("Tag must be provided.");
} catch (Exception e) {
assertEquals("Tag must be provided.", e.getMessage());
diff --git a/src/test/java/org/yaml/snakeyaml/resolver/ResolverTest.java b/src/test/java/org/yaml/snakeyaml/resolver/ResolverTest.java
index 19a177e..30f646f 100644
--- a/src/test/java/org/yaml/snakeyaml/resolver/ResolverTest.java
+++ b/src/test/java/org/yaml/snakeyaml/resolver/ResolverTest.java
@@ -111,14 +111,14 @@
public Node representData(Object data) {
Phone phone = (Phone) data;
String value = phone.getNumber();
- return representScalar(Tag.PREFIX + "Phone", value);
+ return representScalar(Tag.createTag(Tag.PREFIX + "Phone"), value);
}
}
}
class MyConstructor extends Constructor {
public MyConstructor() {
- this.yamlConstructors.put(Tag.PREFIX + "Phone", new ConstructPhone());
+ this.yamlConstructors.put(Tag.createTag(Tag.PREFIX + "Phone"), new ConstructPhone());
}
private class ConstructPhone extends AbstractConstruct {
@@ -139,7 +139,7 @@
public Node representData(Object data) {
Point phone = (Point) data;
String value = "x" + (int) phone.getX() + "_y" + (int) phone.getY();
- return representScalar(Tag.PREFIX + "Point", value);
+ return representScalar(Tag.createTag(Tag.PREFIX + "Point"), value);
}
}
@@ -147,7 +147,7 @@
public Node representData(Object data) {
Phone phone = (Phone) data;
String value = phone.getNumber();
- return representScalar(Tag.PREFIX + "Phone", value);
+ return representScalar(Tag.createTag(Tag.PREFIX + "Phone"), value);
}
}
}
diff --git a/src/test/java/org/yaml/snakeyaml/resolver/ResolverTupleTest.java b/src/test/java/org/yaml/snakeyaml/resolver/ResolverTupleTest.java
index bdeb2ae..0688ae3 100644
--- a/src/test/java/org/yaml/snakeyaml/resolver/ResolverTupleTest.java
+++ b/src/test/java/org/yaml/snakeyaml/resolver/ResolverTupleTest.java
@@ -19,10 +19,12 @@
import junit.framework.TestCase;
+import org.yaml.snakeyaml.nodes.Tag;
+
public class ResolverTupleTest extends TestCase {
public void testToString() {
- ResolverTuple tuple = new ResolverTuple("dice", Pattern.compile("\\d+"));
+ ResolverTuple tuple = new ResolverTuple(Tag.createTag("dice"), Pattern.compile("\\d+"));
assertEquals("Tuple tag=dice regexp=\\d+", tuple.toString());
}
}