diff --git a/History.md b/History.md index 42f4a234ba..20ba7b9f33 100644 --- a/History.md +++ b/History.md @@ -1,5 +1,6 @@ ## [Git master](https://github.com/cucumber/cucumber-jvm/compare/v1.1.3...master) (not released) +* [Core] Fixed a bug where `@XStreamConverter` annotations were ignored (Aslak Hellesøy) * [Android] New Cucumber-Android module ([#525](https://github.com/cucumber/cucumber-jvm/pull/525) Maximilian Fellner). * [Build] Deploy maven SNAPSHOT versions from Travis ([#517](https://github.com/cucumber/cucumber-jvm/issues/517), [#528](https://github.com/cucumber/cucumber-jvm/pull/528) Tom Dunstan) * [Core] JUnitFormatter to mark skipped tests as failures in strict mode ([#543](https://github.com/cucumber/cucumber-jvm/pull/543) brasmusson) diff --git a/core/src/main/java/cucumber/runtime/ParameterInfo.java b/core/src/main/java/cucumber/runtime/ParameterInfo.java index 5f8b13995f..1e8d57db25 100644 --- a/core/src/main/java/cucumber/runtime/ParameterInfo.java +++ b/core/src/main/java/cucumber/runtime/ParameterInfo.java @@ -89,6 +89,7 @@ public Object convert(String value, LocalizedXStreams.LocalizedXStream xStream) xStream.setParameterType(this); SingleValueConverter converter; xStream.processAnnotations(getRawType()); + xStream.autodetectAnnotations(true); // Needed to unlock annotation processing if (transformer != null) { transformer.setParameterInfoAndLocale(this, xStream.getLocale()); diff --git a/examples/java-calculator/src/test/java/cucumber/examples/java/calculator/ShoppingStepdefs.java b/examples/java-calculator/src/test/java/cucumber/examples/java/calculator/ShoppingStepdefs.java index be06809f02..3ef31c2908 100644 --- a/examples/java-calculator/src/test/java/cucumber/examples/java/calculator/ShoppingStepdefs.java +++ b/examples/java-calculator/src/test/java/cucumber/examples/java/calculator/ShoppingStepdefs.java @@ -1,8 +1,10 @@ package cucumber.examples.java.calculator; +import cucumber.api.Transformer; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; +import cucumber.deps.com.thoughtworks.xstream.annotations.XStreamConverter; import java.util.List; @@ -32,6 +34,26 @@ public void my_change_should_be_(int change) { public static class Grocery { public String name; - public int price; + public Price price; + + public Grocery() { + super(); + } + } + + @XStreamConverter(Price.Converter.class) + public static class Price { + public int value; + + public Price(int value) { + this.value = value; + } + + public static class Converter extends Transformer { + @Override + public Price transform(String value) { + return new Price(Integer.parseInt(value)); + } + } } }