Issue 124: Deprecate DumperOptions.explicitRoot
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index de62bd8..bad3c5d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,9 @@
<body>
<release version="1.9-SNAPSHOT" date="in Mercurial" description="Development">
<action dev="py4fun" type="add" issue="124">
+ Deprecate DumperOptions.explicitRoot (2011-07-20)
+ </action>
+ <action dev="py4fun" type="add" issue="124">
Add Yaml.dumpAs(Object, Tag.MAP) method. JavaBeanDumper is marked as deprecated (2011-07-16)
</action>
<action dev="py4fun" type="add" issue="127">
diff --git a/src/main/java/org/yaml/snakeyaml/DumperOptions.java b/src/main/java/org/yaml/snakeyaml/DumperOptions.java
index 74ae92c..733931e 100644
--- a/src/main/java/org/yaml/snakeyaml/DumperOptions.java
+++ b/src/main/java/org/yaml/snakeyaml/DumperOptions.java
@@ -161,6 +161,10 @@
private LineBreak lineBreak = LineBreak.UNIX;
private boolean explicitStart = false;
private boolean explicitEnd = false;
+
+ /**
+ * @deprecated do not use explicit root Tag
+ */
private Tag explicitRoot = null;
private Version version = null;
private Map<String, String> tags = null;
@@ -283,6 +287,9 @@
return defaultFlowStyle;
}
+ /**
+ * @deprecated do not use explicit root Tag
+ */
public Tag getExplicitRoot() {
return explicitRoot;
}
@@ -301,6 +308,7 @@
* @param expRoot
* tag to be used for the root node. (JavaBeans may use
* Tag.MAP="tag:yaml.org,2002:map")
+ * @deprecated do not use explicit root Tag
*/
public void setExplicitRoot(Tag expRoot) {
if (expRoot == null) {
diff --git a/src/main/java/org/yaml/snakeyaml/Yaml.java b/src/main/java/org/yaml/snakeyaml/Yaml.java
index 19437b4..b415b43 100644
--- a/src/main/java/org/yaml/snakeyaml/Yaml.java
+++ b/src/main/java/org/yaml/snakeyaml/Yaml.java
@@ -256,9 +256,14 @@
* @param output
* stream to write to
*/
+ @SuppressWarnings("deprecation")
public void dumpAll(Iterator<? extends Object> data, Writer output) {
+ dumpAll(data, output, dumperOptions.getExplicitRoot());
+ }
+
+ private void dumpAll(Iterator<? extends Object> data, Writer output, Tag rootTag) {
Serializer serializer = new Serializer(new Emitter(output, dumperOptions), resolver,
- dumperOptions);
+ dumperOptions, rootTag);
try {
serializer.open();
while (data.hasNext()) {
@@ -309,9 +314,12 @@
* @return YAML String
*/
public String dumpAs(Object data, Tag rootTag) {
- dumperOptions.setExplicitRoot(rootTag);
representer.setDefaultFlowStyle(FlowStyle.BLOCK);
- return dump(data);
+ List<Object> list = new ArrayList<Object>(1);
+ list.add(data);
+ StringWriter buffer = new StringWriter();
+ dumpAll(list.iterator(), buffer, rootTag);
+ return buffer.toString();
}
/**
@@ -324,7 +332,9 @@
*/
public List<Event> serialize(Node data) {
SilentEmitter emitter = new SilentEmitter();
- Serializer serializer = new Serializer(emitter, resolver, dumperOptions);
+ @SuppressWarnings("deprecation")
+ Serializer serializer = new Serializer(emitter, resolver, dumperOptions,
+ dumperOptions.getExplicitRoot());
try {
serializer.open();
serializer.serialize(data);
diff --git a/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java b/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java
index 98b4620..ef89b51 100644
--- a/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java
+++ b/src/main/java/org/yaml/snakeyaml/serializer/Serializer.java
@@ -61,7 +61,7 @@
private Boolean closed;
private Tag explicitRoot;
- public Serializer(Emitable emitter, Resolver resolver, DumperOptions opts) {
+ public Serializer(Emitable emitter, Resolver resolver, DumperOptions opts, Tag rootTag) {
this.emitter = emitter;
this.resolver = resolver;
this.explicitStart = opts.isExplicitStart();
@@ -74,7 +74,7 @@
this.anchors = new HashMap<Node, String>();
this.lastAnchorId = 0;
this.closed = null;
- this.explicitRoot = opts.getExplicitRoot();
+ this.explicitRoot = rootTag;
}
public void open() throws IOException {
diff --git a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
index 5515df3..10bed8c 100644
--- a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
+++ b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
@@ -322,6 +322,7 @@
assertEquals("\"\\xdcber\"\n", yaml.dump("\u00DCber"));
}
+ @SuppressWarnings("deprecation")
public void testSetRootTag() {
DumperOptions options = new DumperOptions();
try {
diff --git a/src/test/java/org/yaml/snakeyaml/JavaBeanTimeStampTest.java b/src/test/java/org/yaml/snakeyaml/JavaBeanTimeStampTest.java
index 23041e7..47288fb 100644
--- a/src/test/java/org/yaml/snakeyaml/JavaBeanTimeStampTest.java
+++ b/src/test/java/org/yaml/snakeyaml/JavaBeanTimeStampTest.java
@@ -51,11 +51,8 @@
javaBeanToDump.setTimestamp(stamp);
Date date = new Date(1001376000000L);
javaBeanToDump.setDate(date);
- DumperOptions options = new DumperOptions();
- options.setDefaultFlowStyle(FlowStyle.BLOCK);
- options.setExplicitRoot(Tag.MAP);
- Yaml yaml = new Yaml(options);
- String dumpStr = yaml.dump(javaBeanToDump);
+ Yaml yaml = new Yaml();
+ String dumpStr = yaml.dumpAs(javaBeanToDump, Tag.MAP);
assertEquals("date: 2001-09-25T00:00:00Z\ntimestamp: 2001-09-09T01:46:40Z\n", dumpStr);
Yaml loader = new Yaml();
JavaBeanWithSqlTimestamp javaBeanToLoad = loader.loadAs(dumpStr,
diff --git a/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java b/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java
index dc71394..7edcab0 100644
--- a/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java
+++ b/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java
@@ -102,7 +102,6 @@
options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED);
options.setExplicitStart(true);
options.setExplicitEnd(true);
- options.setExplicitRoot(Tag.MAP);
Yaml yaml = new Yaml(new CustomRepresenter(), options);
javaBeanWithNullValues.setBoolean1(null);
javaBeanWithNullValues.setDate(new Date(System.currentTimeMillis()));
@@ -114,7 +113,7 @@
javaBeanWithNullValues.setString(null); // ok
javaBeanWithNullValues.setTimestamp(new Timestamp(System.currentTimeMillis()));
- String dumpStr = yaml.dump(javaBeanWithNullValues);
+ String dumpStr = yaml.dumpAs(javaBeanWithNullValues, Tag.MAP);
// System.out.println(dumpStr);
assertFalse("No explicit root tag must be used.",
dumpStr.contains("JavaBeanWithNullValues"));
diff --git a/src/test/java/org/yaml/snakeyaml/constructor/ImplicitTagsTest.java b/src/test/java/org/yaml/snakeyaml/constructor/ImplicitTagsTest.java
index 343e90c..16cda4f 100644
--- a/src/test/java/org/yaml/snakeyaml/constructor/ImplicitTagsTest.java
+++ b/src/test/java/org/yaml/snakeyaml/constructor/ImplicitTagsTest.java
@@ -23,7 +23,6 @@
import junit.framework.TestCase;
-import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
@@ -60,14 +59,12 @@
map.put("id", 3);
car1.setMap(map);
car1.setYear("2008");
- DumperOptions options = new DumperOptions();
- options.setExplicitRoot(Tag.MAP);
- String carYaml1 = new Yaml(options).dump(car1);
+ String carYaml1 = new Yaml().dumpAs(car1, Tag.MAP);
assertEquals(Util.getLocalResource("constructor/car-without-root-tag.yaml"), carYaml1);
//
Constructor contructor = new Constructor(CarWithWheel.class);
CarWithWheel car2 = (CarWithWheel) new Yaml(contructor).load(carYaml1);
- String carYaml2 = new Yaml(options).dump(car2);
+ String carYaml2 = new Yaml().dumpAs(car2, Tag.MAP);
assertEquals(carYaml1, carYaml2);
}
diff --git a/src/test/java/org/yaml/snakeyaml/generics/BirdTest.java b/src/test/java/org/yaml/snakeyaml/generics/BirdTest.java
index 9fbe65e..4973ab6 100644
--- a/src/test/java/org/yaml/snakeyaml/generics/BirdTest.java
+++ b/src/test/java/org/yaml/snakeyaml/generics/BirdTest.java
@@ -20,7 +20,6 @@
import junit.framework.TestCase;
-import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.nodes.Tag;
@@ -33,10 +32,8 @@
home = new Nest();
home.setHeight(3);
bird.setHome(home);
- DumperOptions options = new DumperOptions();
- options.setExplicitRoot(Tag.MAP);
- Yaml yaml = new Yaml(options);
- String output = yaml.dump(bird);
+ Yaml yaml = new Yaml();
+ String output = yaml.dumpAs(bird, Tag.MAP);
Bird parsed;
String javaVendor = System.getProperty("java.vm.name");
Yaml loader = new Yaml();
@@ -53,7 +50,7 @@
.println("JDK requires global tags for JavaBean properties with Java Generics. java.vm.name: "
+ javaVendor);
assertEquals("global tags are inevitable here.",
- "home: !!org.yaml.snakeyaml.generics.Nest {height: 3}\nname: Eagle\n", output);
+ "home: !!org.yaml.snakeyaml.generics.Nest\n height: 3\nname: Eagle\n", output);
parsed = loader.loadAs(output, Bird.class);
}
assertEquals(bird.getName(), parsed.getName());
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue55/YamlFieldAccessCollectionTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue55/YamlFieldAccessCollectionTest.java
index 89be26f..f17e4fb 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue55/YamlFieldAccessCollectionTest.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue55/YamlFieldAccessCollectionTest.java
@@ -21,8 +21,6 @@
import junit.framework.TestCase;
-import org.yaml.snakeyaml.DumperOptions;
-import org.yaml.snakeyaml.DumperOptions.FlowStyle;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.introspector.BeanAccess;
@@ -34,7 +32,7 @@
public void testYaml() {
Blog original = createTestBlog();
Yaml yamlDumper = constructYamlDumper();
- String serialized = yamlDumper.dump(original);
+ String serialized = yamlDumper.dumpAs(original, Tag.MAP);
// System.out.println(serialized);
assertEquals(Util.getLocalResource("issues/issue55_1.txt"), serialized);
Yaml blogLoader = new Yaml();
@@ -74,10 +72,7 @@
protected Yaml constructYamlDumper() {
Representer representer = new Representer();
representer.getPropertyUtils().setBeanAccess(BeanAccess.FIELD);
- DumperOptions options = new DumperOptions();
- options.setDefaultFlowStyle(FlowStyle.BLOCK);
- options.setExplicitRoot(Tag.MAP);
- Yaml yaml = new Yaml(representer, options);
+ Yaml yaml = new Yaml(representer);
return yaml;
}
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue95/ArrayInGenericCollectionTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue95/ArrayInGenericCollectionTest.java
index 2179a83..f0bc298 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue95/ArrayInGenericCollectionTest.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue95/ArrayInGenericCollectionTest.java
@@ -26,7 +26,6 @@
import junit.framework.TestCase;
import org.junit.Assert;
-import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
@@ -136,12 +135,10 @@
}
public void testNoTags() {
- DumperOptions options = new DumperOptions();
- options.setExplicitRoot(Tag.MAP);
- Yaml yaml2dump = new Yaml(options);
+ Yaml yaml2dump = new Yaml();
yaml2dump.setBeanAccess(BeanAccess.FIELD);
B data = createB();
- String dump = yaml2dump.dump(data);
+ String dump = yaml2dump.dumpAs(data, Tag.MAP);
// System.out.println(dump);
assertEquals("meta:\n- [whatever]\n- [something, something else]\n", dump);
//
diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/HouseTest.java b/src/test/java/org/yaml/snakeyaml/javabeans/HouseTest.java
index 5cc737e..f820bfa 100644
--- a/src/test/java/org/yaml/snakeyaml/javabeans/HouseTest.java
+++ b/src/test/java/org/yaml/snakeyaml/javabeans/HouseTest.java
@@ -60,7 +60,7 @@
assertNotNull(loadedHouse);
assertEquals("Wall Street", loadedHouse.getStreet());
// dump again
- String yaml3 = beanDumper.dump(loadedHouse);
+ String yaml3 = beanDumper.dumpAs(loadedHouse, Tag.MAP);
assertEquals(yaml, yaml3);
}
@@ -106,7 +106,7 @@
List<Room> loadedRooms = loadedHouse.getRooms();
assertEquals(rooms, loadedRooms);
// dump again
- String yaml3 = beanDumper.dump(loadedHouse);
+ String yaml3 = beanDumper.dumpAs(loadedHouse, Tag.MAP);
assertEquals(yaml, yaml3);
}
diff --git a/src/test/java/org/yaml/snakeyaml/recursive/Human_WithArrayOfChildrenTest.java b/src/test/java/org/yaml/snakeyaml/recursive/Human_WithArrayOfChildrenTest.java
index 71abc0c..68a3915 100644
--- a/src/test/java/org/yaml/snakeyaml/recursive/Human_WithArrayOfChildrenTest.java
+++ b/src/test/java/org/yaml/snakeyaml/recursive/Human_WithArrayOfChildrenTest.java
@@ -21,7 +21,6 @@
import junit.framework.TestCase;
-import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
@@ -164,11 +163,9 @@
}
public void testDumpChildrenArrayWithoutRootTag() throws IOException {
- DumperOptions options = new DumperOptions();
- options.setExplicitRoot(Tag.MAP);
- Yaml yaml = new Yaml(options);
+ Yaml yaml = new Yaml();
Human_WithArrayOfChildren son = createSon();
- String output = yaml.dump(son);
+ String output = yaml.dumpAs(son, Tag.MAP);
// System.out.println(output);
String etalon = Util.getLocalResource("recursive/with-childrenArray-no-root-tag.yaml");
assertEquals(etalon, output);
diff --git a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java
index e8ba439..a009007 100644
--- a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java
+++ b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java
@@ -30,7 +30,6 @@
import junit.framework.TestCase;
-import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
@@ -91,10 +90,8 @@
father.setPartner(mother);
mother.setPartner(father);
mother.setBankAccountOwner(father);
- DumperOptions options = new DumperOptions();
- options.setExplicitRoot(Tag.MAP);
- Yaml yaml = new Yaml(options);
- String output = yaml.dump(father);
+ Yaml yaml = new Yaml();
+ String output = yaml.dumpAs(father, Tag.MAP);
String etalon = Util.getLocalResource("recursive/generics/no-children-2.yaml");
assertEquals(etalon, output);
//
diff --git a/src/test/java/org/yaml/snakeyaml/ruby/RubyTest.java b/src/test/java/org/yaml/snakeyaml/ruby/RubyTest.java
index c43e3dd..e137951 100644
--- a/src/test/java/org/yaml/snakeyaml/ruby/RubyTest.java
+++ b/src/test/java/org/yaml/snakeyaml/ruby/RubyTest.java
@@ -41,9 +41,8 @@
TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml"));
DumperOptions options = new DumperOptions();
options.setExplicitStart(true);
- options.setExplicitRoot(Tag.MAP);
Yaml yaml2 = new Yaml(options);
- String output = yaml2.dump(result);
+ String output = yaml2.dumpAs(result, Tag.MAP);
assertFalse("No tags expected.", output.contains("Sub1"));
// System.out.println(output);
// parse back. Without tags it shall still work
diff --git a/src/test/java/org/yaml/snakeyaml/serializer/SerializerTest.java b/src/test/java/org/yaml/snakeyaml/serializer/SerializerTest.java
index 7c6ea94..c01d100 100644
--- a/src/test/java/org/yaml/snakeyaml/serializer/SerializerTest.java
+++ b/src/test/java/org/yaml/snakeyaml/serializer/SerializerTest.java
@@ -35,7 +35,7 @@
protected void setUp() throws Exception {
DumperOptions config = new DumperOptions();
StringWriter writer = new StringWriter();
- serializer = new Serializer(new Emitter(writer, config), new Resolver(), config);
+ serializer = new Serializer(new Emitter(writer, config), new Resolver(), config, null);
}
public void testSerializerIsAlreadyOpened() throws IOException {