To do this you would start from a COBOL fragment and use the usual LegStar COBOL to XSD translator and then generate transformers using LegStar COBOL Binding Generator.
Here is a sample JUnit code performing transformation from JSON to COBOL and vice versa:
package json.lsfileae.test;
import java.io.StringWriter;
import org.codehaus.jackson.map.AnnotationIntrospector;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
import com.legstar.coxb.host.HostData;
import com.legstar.test.coxb.lsfileae.Dfhcommarea;
import com.legstar.test.coxb.lsfileae.bind.DfhcommareaTransformers;
import junit.framework.TestCase;
/**
* Unit test JSON/COBOL transformation.
*/
public class JacksonTest
extends TestCase {
/** Hex EBCDIC data orignating from mainframe. */
public static final String HOST_DATA =
/*0 0 0 1 0 0 */
"f0f0f0f1f0f0"
/* S . D . B O R M A N */
+ "e24b40c44b40c2d6d9d4c1d54040404040404040"
/* L A B A S S T R E E T */
+ "e2e4d9d9c5e86b40c5d5c7d3c1d5c44040404040"
/* 3 2 1 5 6 7 7 8 */
+ "f3f2f1f5f6f7f7f8"
/* 2 6 1 1 8 1 */
+ "f2f640f1f140f8f1"
/* $ 0 1 0 0 . 1 1 */
+ "5bf0f1f0f04bf1f1"
/* * * * * * * * * * */
+ "5c5c5c5c5c5c5c5c5c"
;
/** JSON serialization of the host data. */
public static final String JSON_DATA =
"{\"comNumber\":100," +
"\"comPersonal\":{\"comName\":\"S. D. BORMAN\"," +
"\"comAddress\":\"SURREY, ENGLAND\"," +
"\"comPhone\":\"32156778\"}," +
"\"comDate\":\"26 11 81\"," +
"\"comAmount\":\"$0100.11\"," +
"\"comComment\":\"*********\"}";
/** Jackson mapper. */
private ObjectMapper _mapper;
/** LegStar transformer. */
private DfhcommareaTransformers _transformer;
public void setUp() {
_mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
_mapper.getDeserializationConfig().setAnnotationIntrospector(introspector);
_mapper.getSerializationConfig().setAnnotationIntrospector(introspector);
_transformer = new DfhcommareaTransformers();
}
/**
* Transform host data to JSON and check
* @throws Exception if transformation fails
*/
public void testHostToJson() throws Exception {
StringWriter sw = new StringWriter();
_mapper.writeValue( sw, _transformer.toJava(HostData.toByteArray(HOST_DATA)));
assertEquals(JSON_DATA, sw.toString());
}
/**
* Transform JSON to host data and check
* @throws Exception if transformation fails
*/
public void testJsonToHost() throws Exception {
Dfhcommarea dfhcommarea = _mapper.readValue(JSON_DATA, Dfhcommarea.class);
byte[] hostData = _transformer.toHost(dfhcommarea);
assertEquals(HOST_DATA, HostData.toHexString(hostData));
}
}