package org.jboss.narayana.blacktie.jatmibroker.xatmi.services; import java.util.Arrays; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.jboss.narayana.blacktie.jatmibroker.core.conf.ConfigurationException; import org.jboss.narayana.blacktie.jatmibroker.xatmi.Connection; import org.jboss.narayana.blacktie.jatmibroker.xatmi.ConnectionException; import org.jboss.narayana.blacktie.jatmibroker.xatmi.Response; import org.jboss.narayana.blacktie.jatmibroker.xatmi.Service; import org.jboss.narayana.blacktie.jatmibroker.xatmi.TPSVCINFO; import org.jboss.narayana.blacktie.jatmibroker.xatmi.X_C_TYPE; import org.jboss.narayana.blacktie.jatmibroker.xatmi.X_OCTET; public class TPCallXCTypeService implements Service { private static final Logger log = LogManager.getLogger(TPCallXCTypeService.class); public Response tpservice(TPSVCINFO svcinfo) throws ConnectionException, ConfigurationException { log.info("test_tpcall_x_c_type_service"); boolean ok = false; X_C_TYPE aptr = (X_C_TYPE) svcinfo.getBuffer(); byte[] receivedName = new byte[3]; byte[] charArray = aptr.getByteArray("name"); System.arraycopy(charArray, 0, receivedName, 0, 3); byte[] expectedName = "TOM".getBytes(); long accountNumber = aptr.getLong("acct_no"); float fooOne = aptr.getFloatArray("foo")[0]; float fooTwo = aptr.getFloatArray("foo")[1]; double balanceOne = aptr.getDoubleArray("balances")[0]; double balanceTwo = aptr.getDoubleArray("balances")[1]; if (accountNumber == 12345678 && Arrays.equals(receivedName, expectedName) && fooOne == 1.1F && fooTwo == 2.2F && balanceOne == 1.1 && balanceTwo == 2.2) { ok = true; } int len = 60; X_OCTET toReturn = (X_OCTET) svcinfo.getConnection().tpalloc("X_OCTET", null); if (ok) { toReturn.setByteArray("tpcall_x_c_type".getBytes()); } else { toReturn.setByteArray("fail".getBytes()); } return new Response(Connection.TPSUCCESS, 23, toReturn, 0); } }