}
if (to == null) {
throw TransformMessages.MESSAGES.invalidSmooksConfigurationModelNullTo();
}
SmooksTransformType transformationType = SmooksTransformType.valueOf(transformType);
Smooks smooks = null;
try {
SmooksProducer producer = ProviderRegistry.getProvider(SmooksProducer.class);
if (producer != null) {
smooks = producer.createSmooks(domain, config);
}
if (smooks == null) {
smooks = new Smooks(config);
}
smooks.createExecutionContext();
} catch (Exception e) {
throw TransformMessages.MESSAGES.failedToCreateSmooksInstance(config, e);
}
Transformer transformer;
if (transformationType == SmooksTransformType.JAVA2XML) {
transformer = newXMLBindingTransformer(from, to, smooks, XMLBindingTransformer.BindingDirection.JAVA2XML);
} else if (transformationType == SmooksTransformType.XML2JAVA) {
transformer = newXMLBindingTransformer(from, to, smooks, XMLBindingTransformer.BindingDirection.XML2JAVA);
} else if (transformationType == SmooksTransformType.SMOOKS) {
transformer = new SmooksTransformer(from, to, smooks, model);
} else {
throw TransformMessages.MESSAGES.unhandledSmooksTransformationType(transformationType.toString());
}
transformer.setFrom(model.getFrom());
transformer.setTo(model.getTo());