context.add(cache.createReset());
Expression inputObject = context.getInput();
Expression outputObject = cache.get();
for (DataClass.Property sourceProperty : sourceType.getProperties()) {
Property sinkProperty = sinkType.findProperty(sourceProperty.getName());
if (sinkProperty == null) {
getEnvironment().error(
"{0}において、{2}.{3}に対応するプロパティが{1}に定義されていません",
context.getOperatorDescription().getName(),
sinkType,
sourceType,
sourceProperty.getName());
} else if (sourceProperty.getType().equals(sinkProperty.getType()) == false) {
getEnvironment().error(
"{0}において、{1}.{2}と{3}.{4}のプロパティ型が一致しません",
context.getOperatorDescription().getName(),
sourceType,
sourceProperty.getName(),
sinkType,
sinkProperty.getName());
} else {
context.add(sinkProperty.createSetter(outputObject,
sourceProperty.createGetter(inputObject)));
}
}
}