/* * Copyright 2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package biz.c24.io.spring.integration.transformer; import static biz.c24.io.spring.integration.test.TestUtils.*; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; import org.springframework.messaging.Message; import org.springframework.integration.support.MessageBuilder; import biz.c24.io.examples.models.basic.Email; import biz.c24.io.examples.models.basic.Employee; import biz.c24.io.examples.models.basic.InputDocumentRootElement; import biz.c24.io.examples.models.basic.OutputDocumentRoot; import biz.c24.io.examples.transforms.basic.ExampleTransform; import biz.c24.io.examples.transforms.basic.EmployeeToEmailTransform; import biz.c24.io.spring.core.C24Model; public class IoTransformerIUTests { C24Model model = new C24Model(InputDocumentRootElement.getInstance()); @Test public void canTransform() throws Exception { C24Transformer transformer = new C24Transformer(); transformer.setTransformClass(ExampleTransform.class); Message<?> message = MessageBuilder.withPayload(loadObject()).build(); Message<?> outputMessage = transformer.transform(message); assertThat(outputMessage.getPayload(), notNullValue()); assertThat(outputMessage.getPayload(), instanceOf(OutputDocumentRoot.class)); } public static class MyEmail { private String firstNameInitial; private String surname; private String domainName; public String getFirstNameInitial() { return firstNameInitial; } public void setFirstNameInitial(String firstNameInitial) { this.firstNameInitial = firstNameInitial; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public String getDomainName() { return domainName; } public void setDomainName(String domainName) { this.domainName = domainName; } } @Test public void canTransformToPojo() throws Exception { Employee employee = new Employee(); employee.setFirstName("Tom"); employee.setLastName("Smith"); employee.setJobTitle("Porter"); C24Transformer transformer = new C24Transformer(); transformer.setTransformClass(EmployeeToEmailTransform.class); Message<?> message = MessageBuilder.withPayload(employee).build(); Message<?> result = transformer.transform(message); assertNotNull(result); assertThat(result.getPayload(), instanceOf(Email.class)); transformer.setTargetClass(MyEmail.class); result = transformer.transform(message); assertNotNull(result); assertThat(result.getPayload(), instanceOf(MyEmail.class)); MyEmail email = (MyEmail) result.getPayload(); assertThat(email.getFirstNameInitial(), is("T.")); assertThat(email.getSurname(), is("Smith")); assertThat(email.getDomainName(), is("@company.com")); } }