blob: fbc7c018ff719b357a45c9292334ae4f25a3d657 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.camel.quarkus.component.bindy.it;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.quarkus.component.bindy.it.model.CsvOrder;
import org.apache.camel.quarkus.component.bindy.it.model.FixedLengthOrder;
import org.apache.camel.quarkus.component.bindy.it.model.FixedLengthWithLocale;
import org.apache.camel.quarkus.component.bindy.it.model.Header;
import org.apache.camel.quarkus.component.bindy.it.model.MessageOrder;
import org.apache.camel.quarkus.component.bindy.it.model.NameWithLengthSuffix;
import org.apache.camel.quarkus.component.bindy.it.model.Security;
import org.apache.camel.quarkus.component.bindy.it.model.Trailer;
import org.jboss.logging.Logger;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@Path("/bindy")
@ApplicationScoped
public class BindyResource {
private static final Logger LOG = Logger.getLogger(BindyResource.class);
private static final String CSV = "bindy-order-name-16,BINDY-COUNTRY,fr,A1B2C3";
private static final String FIXED_LENGTH_ORDER = "BobSpa\r\n";
private static final String MESSAGE_ORDER = "1=BE.CHM.0018=BEGIN9=2010=22022=458=camel - quarkus - bindy test\r\n";
@Inject
ProducerTemplate template;
@Path("/marshalCsvRecordShouldSucceed")
@GET
public void marshalCsvRecordShouldSucceed() {
LOG.debugf("Invoking marshalCsvRecordShouldSucceed()");
CsvOrder order = new CsvOrder();
order.setNameWithLengthSuffix(NameWithLengthSuffix.ofString("bindy-order-name"));
order.setCountry("bindy-country");
order.setLanguage("fr");
order.setClientReference("A1B2C3");
String marshalled = template.requestBody("direct:marshal-csv-record", order, String.class);
assertEquals(CSV, marshalled);
}
@Path("/unMarshalCsvRecordShouldSucceed")
@GET
public void unMarshalCsvRecordShouldSucceed() {
LOG.debugf("Invoking unMarshalCsvRecordShouldSucceed()");
CsvOrder order = template.requestBody("direct:unmarshal-csv-record", CSV, CsvOrder.class);
assertNotNull(order);
assertNotNull(order.getNameWithLengthSuffix());
assertEquals("bindy-order-name-16-19", order.getNameWithLengthSuffix().toString());
assertEquals("B_ND_-C__NTR_", order.getCountry());
assertEquals("FR", order.getLanguage());
assertEquals("A_B_C_", order.getClientReference());
}
@Path("/marshalFixedLengthRecordShouldSucceed")
@GET
public void marshalFixedLengthRecordShouldSucceed() {
LOG.debugf("Invoking marshalFixedLengthRecordShouldSucceed()");
FixedLengthOrder order = new FixedLengthOrder();
order.setName("Bob");
order.setCountry("Spa");
String marshalled = template.requestBody("direct:marshal-fixed-length-record", order, String.class);
assertEquals(FIXED_LENGTH_ORDER, marshalled);
}
@Path("/unMarshalFixedLengthRecordShouldSucceed")
@GET
public void unMarshalFixedLengthRecordShouldSucceed() {
LOG.debugf("Invoking unMarshalFixedLengthRecordShouldSucceed()");
String uri = "direct:unmarshal-fixed-length-record";
FixedLengthOrder order = template.requestBody(uri, FIXED_LENGTH_ORDER, FixedLengthOrder.class);
assertNotNull(order);
assertEquals("Bob", order.getName());
assertEquals("Spa", order.getCountry());
}
@Path("/marshalFixedLengthWithLocaleShouldSucceed")
@GET
public void marshalFixedLengthWithLocaleShouldSucceed() {
LOG.debugf("Invoking marshalFixedLengthWithLocaleShouldSucceed()");
FixedLengthWithLocale object = new FixedLengthWithLocale();
object.setNumber(3.2);
String marshalled = template.requestBody("direct:marshal-fixed-length-with-locale", object, String.class);
assertEquals("3,200\r\n", marshalled);
}
@Path("/marshalMessageShouldSucceed")
@GET
public void marshalMessageShouldSucceed() {
LOG.debugf("Invoking marshalMessageShouldSucceed()");
MessageOrder order = new MessageOrder();
order.setAccount("BE.CHM.001");
order.setHeader(new Header());
order.getHeader().setBeginString("BEGIN");
order.getHeader().setBodyLength(20);
order.setSecurities(new ArrayList<>());
order.getSecurities().add(new Security());
order.getSecurities().get(0).setIdSource("4");
order.setText("camel - quarkus - bindy test");
order.setTrailer(new Trailer());
order.getTrailer().setCheckSum(220);
Map<String, Object> model = new HashMap<>();
model.put(MessageOrder.class.getName(), order);
model.put(Header.class.getName(), order.getHeader());
model.put(Trailer.class.getName(), order.getTrailer());
model.put(Security.class.getName(), order.getSecurities().get(0));
String marshalled = template.requestBody("direct:marshal-message", Arrays.asList(model), String.class);
assertEquals(MESSAGE_ORDER, marshalled);
}
@Path("/unMarshalMessageShouldSucceed")
@GET
public void unMarshalMessageShouldSucceed() {
LOG.debugf("Invoking unMarshalMessageShouldSucceed()");
MessageOrder order = template.requestBody("direct:unmarshal-message", MESSAGE_ORDER, MessageOrder.class);
assertNotNull(order);
assertEquals("BE.CHM.001", order.getAccount());
assertNotNull(order.getHeader());
assertEquals("BEGIN", order.getHeader().getBeginString());
assertEquals(20, order.getHeader().getBodyLength());
assertNotNull(order.getSecurities());
assertEquals(1, order.getSecurities().size());
assertEquals("4", order.getSecurities().get(0).getIdSource());
assertEquals("camel - quarkus - bindy test", order.getText());
assertNotNull(order.getTrailer());
assertEquals(220, order.getTrailer().getCheckSum());
}
}