Table of Contents
The COBOL Transformers Generator produces a set of java classes that you can easily use to turn mainframe payloads to java data objects.
This is sample code showing how you would use a generated mainframe to java transformer assuming you just generated a transformer class called com.legstar.test.coxb.lsfileae.DfhcommareaTransformers.
/**
* Transform host data and test java data object result.
*
* @param hostBytes a byte array holding the mainframe payload
* @throws HostTransformException if transforming fails
*/
public void hostToJavaTransform(final byte[] hostBytes)
throws HostTransformException {
DfhcommareaTransformers transformers = new DfhcommareaTransformers();
Dfhcommarea dfhcommarea = transformers.toJava(hostBytes);
assertEquals(100, dfhcommarea.getComNumber());
assertEquals("TOTO", dfhcommarea.getComPersonal().getComName().trim());
assertEquals("LABAS STREET", dfhcommarea.getComPersonal()
.getComAddress().trim());
assertEquals("88993314", dfhcommarea.getComPersonal().getComPhone()
.trim());
assertEquals("100458", dfhcommarea.getComDate().trim());
assertEquals("00100.35", dfhcommarea.getComAmount().trim());
assertEquals("A VOIR", dfhcommarea.getComComment().trim());
}
Conversely, you would produce a byte array with mainframe data from a java data object with code similar to this:
/**
* Creates a java data object and returns the host data result.
*
* @return a byte array holding the mainframe payload
* @throws HostTransformException if transforming fails
*/
public byte[] javaToHostTransform() throws HostTransformException {
Dfhcommarea dfhcommarea = new Dfhcommarea();
dfhcommarea.setComNumber(100L);
ComPersonal comPersonal = new ComPersonal();
comPersonal.setComName("TOTO");
comPersonal.setComAddress("LABAS STREET");
comPersonal.setComPhone("88993314");
dfhcommarea.setComPersonal(comPersonal);
dfhcommarea.setComDate("100458");
dfhcommarea.setComAmount("00100.35");
dfhcommarea.setComComment("A VOIR");
DfhcommareaTransformers transformers = new DfhcommareaTransformers();
return transformers.toHost(dfhcommarea);
}
Generated transformers use the default IBM01140 US EBCDIC character set for conversions.
Methods toHost and toJava also accept a character set name as a second parameter if you need to use a different one (just make sure your JRE charsets.jar supports your character set).
In addition to Host/Java transformers, you can generate Host/XML transformers by turning the xmlTransformers generation option on.
Using these transformers, this is sample code to turn host data to XML:
/**
* Transform host data and test XML result.
*
* @param hostBytes a byte array holding the mainframe payload
* @throws HostTransformException if transforming fails
*/
public void hostToXmlTransform(final byte[] hostBytes)
throws HostTransformException {
DfhcommareaXmlTransformers transformers =
new DfhcommareaXmlTransformers();
StringWriter writer = new StringWriter();
transformers.toXml(hostBytes, writer);
assertEquals(
"<?xml version=\"1.0\" encoding=\"UTF-8\" "
+ "standalone=\"yes\"?>"
+ "<Dfhcommarea xmlns="
+ "\"http://legstar.com/test/coxb/lsfileae\">"
+ "<ComNumber>100</ComNumber>"
+ "<ComPersonal>"
+ "<ComName>TOTO</ComName>"
+ "<ComAddress>LABAS STREET</ComAddress>"
+ "<ComPhone>88993314</ComPhone>"
+ "</ComPersonal>"
+ "<ComDate>100458</ComDate>"
+ "<ComAmount>00100.35</ComAmount>"
+ "<ComComment>A VOIR</ComComment>"
+ "</Dfhcommarea>", writer.toString());
}
This is code to turn XML into host data:
/**
* Turns an XML into host data.
*
* @return a byte array holding the mainframe payload
* @throws HostTransformException if transforming fails
*/
public byte[] xmlToHostTransform() throws HostTransformException {
StringReader reader = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\" "
+ "standalone=\"yes\"?>"
+ "<Dfhcommarea xmlns="
+ "\"http://legstar.com/test/coxb/lsfileae\">"
+ "<ComNumber>100</ComNumber>"
+ "<ComPersonal>"
+ "<ComName>TOTO</ComName>"
+ "<ComAddress>LABAS STREET</ComAddress>"
+ "<ComPhone>88993314</ComPhone>"
+ "</ComPersonal>"
+ "<ComDate>100458</ComDate>"
+ "<ComAmount>00100.35</ComAmount>"
+ "<ComComment>A VOIR</ComComment>"
+ "</Dfhcommarea>");
DfhcommareaXmlTransformers transformers =
new DfhcommareaXmlTransformers();
return transformers.toHost(new StreamSource(reader));
}
In addition to Host/Java transformers, you can generate Host/JSON transformers by turning the jsonTransformers generation option on.
Using these transformers, this is sample code to turn host data to JSON:
/**
* Transform host data and test JSON result.
*
* @param hostBytes a byte array holding the mainframe payload
* @throws HostTransformException if transforming fails
*/
public void hostToJsonTransform(final byte[] hostBytes)
throws HostTransformException {
DfhcommareaJsonTransformers transformers =
new DfhcommareaJsonTransformers();
StringWriter writer = new StringWriter();
transformers.toJson(hostBytes, writer);
assertEquals("{\"ComNumber\":100,"
+ "\"ComPersonal\":"
+ "{\"ComName\":\"TOTO\","
+ "\"ComAddress\":\"LABAS STREET\","
+ "\"ComPhone\":\"88993314\"},"
+ "\"ComDate\":\"100458\","
+ "\"ComAmount\":\"00100.35\","
+ "\"ComComment\":\"A VOIR\"}",
writer.toString());
}
This is code to turn JSON into host data:
/**
* Turns JSON into host data.
*
* @return a byte array holding the mainframe payload
* @throws HostTransformException if transforming fails
*/
public byte[] jsonToHostTransform() throws HostTransformException {
StringReader reader = new StringReader(
"{\"ComNumber\":100,"
+ "\"ComPersonal\":"
+ "{\"ComName\":\"TOTO\","
+ "\"ComAddress\":\"LABAS STREET\","
+ "\"ComPhone\":\"88993314\"},"
+ "\"ComDate\":\"100458\","
+ "\"ComAmount\":\"00100.35\","
+ "\"ComComment\":\"A VOIR\"}");
DfhcommareaJsonTransformers transformers =
new DfhcommareaJsonTransformers();
return transformers.toHost(reader);
}