Issue 84: implement ImplicitMode.NEVER_IMPLICIT_TYPES
diff --git a/src/main/java/org/yaml/snakeyaml/Yaml.java b/src/main/java/org/yaml/snakeyaml/Yaml.java
index 2a6cc31..252635f 100644
--- a/src/main/java/org/yaml/snakeyaml/Yaml.java
+++ b/src/main/java/org/yaml/snakeyaml/Yaml.java
@@ -41,6 +41,7 @@
import org.yaml.snakeyaml.reader.UnicodeReader;
import org.yaml.snakeyaml.representer.Representer;
import org.yaml.snakeyaml.resolver.Resolver;
+import org.yaml.snakeyaml.resolver.Resolver.Mode;
import org.yaml.snakeyaml.serializer.Serializer;
/**
@@ -65,7 +66,8 @@
public Yaml(LoaderOptions loaderOptions) {
this(new Constructor(), loaderOptions, new Representer(), new DumperOptions(),
- new Resolver());
+ loaderOptions.useImplicitTypes() ? new Resolver(Mode.STANDARD) : new Resolver(
+ Mode.JAVABEAN));
}
/**
diff --git a/src/test/java/org/yaml/snakeyaml/LoaderOptionsTest.java b/src/test/java/org/yaml/snakeyaml/LoaderOptionsTest.java
index 4d902a3..4b3ba3c 100644
--- a/src/test/java/org/yaml/snakeyaml/LoaderOptionsTest.java
+++ b/src/test/java/org/yaml/snakeyaml/LoaderOptionsTest.java
@@ -49,7 +49,7 @@
LoaderOptions options = new LoaderOptions();
options.setImplicitMode(ImplicitMode.NEVER_IMPLICIT_TYPES);
Yaml yaml = new Yaml(options);
- // String number = (String) yaml.load("11");
- // TODO assertEquals("Integer must not be recognised.", "11", number);
+ String number = (String) yaml.load("11");
+ assertEquals("Integer must not be recognised.", "11", number);
}
}
diff --git a/src/test/java/org/yaml/snakeyaml/ParallelTest.java b/src/test/java/org/yaml/snakeyaml/ParallelTest.java
index b6b71ae..a854e55 100644
--- a/src/test/java/org/yaml/snakeyaml/ParallelTest.java
+++ b/src/test/java/org/yaml/snakeyaml/ParallelTest.java
@@ -20,8 +20,6 @@
import junit.framework.TestCase;
-import org.yaml.snakeyaml.constructor.Constructor;
-
/**
* Test that Yaml instances are independent and can be used in multiple threads.
*/
@@ -56,11 +54,11 @@
public void run() {
System.out.println("Started: " + id);
- Yaml yaml = new Yaml(new Constructor(Invoice.class));
+ JavaBeanLoader<Invoice> loader = new JavaBeanLoader<Invoice>(Invoice.class);
long time1 = System.nanoTime();
int cycles = 200;
for (int i = 0; i < cycles; i++) {
- Invoice invoice = (Invoice) yaml.load(doc);
+ Invoice invoice = loader.load(doc);
assertNotNull(invoice);
}
long time2 = System.nanoTime();
diff --git a/src/test/java/org/yaml/snakeyaml/StressTest.java b/src/test/java/org/yaml/snakeyaml/StressTest.java
index ecdcc7d..2fdb8e3 100644
--- a/src/test/java/org/yaml/snakeyaml/StressTest.java
+++ b/src/test/java/org/yaml/snakeyaml/StressTest.java
@@ -36,20 +36,20 @@
float duration = (time2 - time1) / 1000000;
System.out.println("Init was " + duration + " ms.");
- Yaml yaml = new Yaml(new Constructor(Invoice.class));
+ JavaBeanLoader<Invoice> loader = new JavaBeanLoader<Invoice>(Invoice.class);
time1 = System.nanoTime();
- yaml.load(doc);
+ loader.load(doc);
time2 = System.nanoTime();
duration = (time2 - time1) / 1000000;
System.out.println("\nSingle load was " + duration + " ms.");
- yaml = new Yaml(new Constructor(Invoice.class));
+ loader = new JavaBeanLoader<Invoice>(Invoice.class);
int[] range = new int[] { 1000, 2000 };
System.out.println("\nOne instance.");
for (int number : range) {
time1 = System.nanoTime();
for (int i = 0; i < number; i++) {
- yaml.load(doc);
+ loader.load(doc);
}
time2 = System.nanoTime();
duration = ((time2 - time1) / 1000000) / (float) number;
@@ -65,8 +65,8 @@
for (int number : range) {
time1 = System.nanoTime();
for (int i = 0; i < number; i++) {
- yaml = new Yaml(new Constructor(Invoice.class));
- yaml.load(doc);
+ loader = new JavaBeanLoader<Invoice>(Invoice.class);
+ loader.load(doc);
}
time2 = System.nanoTime();
duration = ((time2 - time1) / 1000000) / (float) number;
diff --git a/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java
index d42539d..e129dbb 100644
--- a/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java
+++ b/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java
@@ -22,6 +22,7 @@
import junit.framework.TestCase;
import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.JavaBeanLoader;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.error.YAMLException;
@@ -214,16 +215,16 @@
}
}
- public void testScalarContructorExceptionNoRegExpMode() throws IOException {
- //TODO ???
- Yaml yaml = new Yaml(new Constructor(ExceptionParent.class));
+ public void testScalarContructorExceptionNoImplicitTypesMode() throws IOException {
+ JavaBeanLoader<ExceptionParent> loader = new JavaBeanLoader<ExceptionParent>(
+ ExceptionParent.class);
String document = "id: 123\nchild: 25";
try {
- yaml.load(document);
+ loader.load(document);
fail("ExceptionParent should not be created.");
} catch (Exception e) {
assertTrue(e.getMessage(), e.getMessage().contains(
- "Can't construct a java object for scalar tag:yaml.org,2002:int"));
+ "Can't construct a java object for scalar tag:yaml.org,2002:str"));
}
}