Castor (framework)
Castor is a data binding framework for Java with some features like Java to Java-to-XML binding, Java-to-SQL persistence, paths between Java objects, XML documents, relational tables, etc. Castor is one of the oldest data binding projects.
Process flow
Basic process flows include class generation, marshalling, unmarshalling, etc. Marshalling framework includes a set of ClassDescriptors and FieldDescription to describe objects.Class generation
Class generation is similar to Java Architecture for [XML Binding|JAXB] and Zeus. Castor supports XML Schema instead of DTDs.Unmarshalling and marshalling
Unmarshalling and marshalling are dealt with marshall and unmarshall methods respectively. During marshalling, conversion process from Java to XML is carried out, and, during unmarshalling, conversion process from XML to Java is carried out. Mapping files are the equivalent of a binding schema, which allows to transforms names from XML to Java and vice versa.Additional features
Castor offers some additional features which are not present in JAXB. Additional features include:- Database and directory server mappings - mapping between databases and directory servers to Java
- JDO - Caster supports Java Data Objects.
Code samples
Code for marshalling may look like as follows:package org.wikipedia.examples;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.ValidationException;
import org.wikipedia.examples.generated.hr.*;
public class EmployeeLister
Code for unmarshalling may look like as follows:
package org.wikipeda.examples;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.ValidationException;
import org.wikipedia.examples.generated.hr.*;
public class EmployeeLister
Sample mapping file may look like as follows:
PUBLIC "-//EXOLAB/Castor Object Mapping DTD Version 1.0//EN" "http://Castor.exolab.org/mapping.dtd">