com.flextrade.jfixture.jodatime.customisation.BaseIntervalRelay Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jfixture-jodatime Show documentation
Show all versions of jfixture-jodatime Show documentation
A joda time customisation for handling Joda Time classes in JFixture.
package com.flextrade.jfixture.jodatime.customisation;
import com.flextrade.jfixture.NoSpecimen;
import com.flextrade.jfixture.SpecimenBuilder;
import com.flextrade.jfixture.SpecimenContext;
import com.flextrade.jfixture.utility.SpecimenType;
import org.joda.time.DateTime;
import org.joda.time.ReadableInstant;
import org.joda.time.base.BaseInterval;
import java.lang.reflect.Constructor;
public class BaseIntervalRelay implements SpecimenBuilder {
@Override
public Object create(Object request, SpecimenContext context) {
if (!(request instanceof SpecimenType)) {
return new NoSpecimen();
}
SpecimenType type = (SpecimenType) request;
if (!BaseInterval.class.isAssignableFrom(type.getRawType())) {
return new NoSpecimen();
}
DateTime dateA = (DateTime) context.resolve(DateTime.class);
DateTime dateB = (DateTime) context.resolve(DateTime.class);
try {
Constructor constructor = type.getRawType().getDeclaredConstructor(ReadableInstant.class, ReadableInstant.class);
Object specimen;
if (dateA.isBefore(dateB))
specimen = constructor.newInstance(dateA, dateB);
else
specimen = constructor.newInstance(dateB, dateA);
return specimen;
} catch (Exception e) {
e.printStackTrace();
return new NoSpecimen();
}
}
}