Annotation for ParameterConverter --------------------------------- Key: JBEHAVE-258 URL: http://jira.codehaus.org/browse/JBEHAVE-258 Project: JBehave Issue Type: Improvement Reporter: Bruno Bieth
Simplifying adding ParameterConverter to Steps. Here's an example : {code} public class DateTimeConverter implements ParameterConverter { @Override public boolean accept(Type type) { return type.equals( DateTime.class ); } @Override public Object convertValue(String value, Type type) { return new DateTime( value ); } } {code} {code} @ParameterConverters(DateTimeConverter.class) public class PersonSteps { private Person person; private DateTime currentDate; // ... steps } {code} The ParameterConverters annotation takes an array of TypeConverter : {code} @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface ParameterConverters { Class<? extends ParameterConverter>[] value(); } {code} Here is a steps factory : {code} public class ParameterConverterStepsFactory { public CandidateSteps[] createCandidateSteps(Object... stepsInstances) throws InstantiationException, IllegalAccessException { CandidateSteps[] candidateSteps = new CandidateSteps[stepsInstances.length]; for (int i = 0; i < stepsInstances.length; i++) { Object stepsInstance = stepsInstances[i]; StepsConfiguration configuration; ParameterConverters parameterConverters = stepsInstance.getClass().getAnnotation( ParameterConverters.class ); if( parameterConverters != null ) { configuration = createConfiguration( parameterConverters ); } else { configuration = new StepsConfiguration(); } candidateSteps[i] = new Steps(configuration, stepsInstance); } return candidateSteps; } private StepsConfiguration createConfiguration( ParameterConverters annotation) throws InstantiationException, IllegalAccessException { ParameterConverter[] converters = new ParameterConverter[ annotation.value().length ]; for( int i = 0; i < converters.length; i ++ ) { converters[ i ] = annotation.value()[ i ].newInstance(); } org.jbehave.scenario.steps.ParameterConverters converterAggregate = new org.jbehave.scenario.steps.ParameterConverters( converters ); return new StepsConfiguration( converterAggregate ); } } {code} -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email