JiBX: BindGen Examples

# JiBX: BindGen Examples |

JiBX Basics Overview Getting Started Binding Compiler Binding on Load Runtime Extras Building JiBX Maven Contributing License News and Status Support FAQ Mailing Lists Bugs User Comments Sponsors Start from Code Start from Code BindGen Example Code Example 1 Example 2 Example 3 Example 4 Customizations Reference SchemaGen Jibx2Wsdl Examples Customizations Start from Schema Start from Schema CodeGen Schema Datatype Handling Example Code Default Generation Simple Customizations More Customizations Modular Generation Customizations Reference Extensions Reference Binding Definition Binding Tutorial A basic binding Binding extras Structure mapping Collections and arrays Using mappings Advanced binding Method hooks Custom code Precompiled Bindings Definition details Definition contexts Conversions Date/time conversions XML summary <binding> element <include> element <format> element <namespace> element <mapping> element <value> element <structure> element <collection> element Attribute groups Usage API Runtime JavaDocs Subprojects Eclipse Plug-in Introduction Install Usage JiBX/WS Axis2 Usage JiBX/OTA Schema Library | ### BindGen example code The /examples/bindgen directory of the JiBX distribution contains some samples for demonstrating the use of BindGen. The samples use two versions of the same code, the first (in the package `org.jibx.starter1`) using Java 5 typed collections and an `enum` type, and the second (in the package `org.jibx.starter2`) using untyped collections and a custom type-safe enumeration type. Both versions of the code model the data which would be used for order processing by an online store. Here's a sample from the Java 5 version, with only a few of the classes shown and most of the get/set access methods left out:
    /**
     * Order information.
     */
    public class Order
    {
        private long orderNumber;

        private Customer customer;

        /** Billing address information. */
        private Address billTo;

        private Shipping shipping;

        /** Shipping address information. If missing, the billing address is also used as the
         shipping address. */
        private Address shipTo;

        private List items;

        /** Date order was placed with server. */
        private Date orderDate;

        /** Date order was shipped. This will be <code>null</code> if the order has not
         yet shipped. */
        private Date shipDate;

        public long getOrderNumber() {
            return orderNumber;
        }

        public void setOrderNumber(long orderId) {
            this.orderNumber = orderId;
        }
        ...
    }

    /**
     * Address information.
     */
    public class Address
    {
        /** First line of street information (required). */
        private String street1;

        /** Second line of street information (optional). */
        private String street2;

        private String city;

        /** State abbreviation (required for the U.S. and Canada, optional otherwise). */
        private String state;

        /** Postal code (required for the U.S. and Canada, optional otherwise). */
        private String postCode;

        /** Country name (optional, U.S. assumed if not supplied). */
        private String country;

        public String getStreet1() {
            return street1;
        }

        public void setStreet1(String street1) {
            this.street1 = street1;
        }
        ...
    }

    /**
     * Supported shipment methods. The "INTERNATIONAL" shipment methods can only be used for
     * orders with shipping addresses outside the U.S., and one of these methods is required
     * in this case.
     */
    public enum Shipping
    {
        STANDARD_MAIL, PRIORITY_MAIL, INTERNATIONAL_MAIL, DOMESTIC_EXPRESS, INTERNATIONAL_EXPRESS
    }
### Generation examples The Ant build.xml file in the /examples/bindgen defines build targets for four different ways of generating a binding and schema from the example code. These are discussed in more detail in the other pages of this section: 'bindgen' target - default generation 'custgen1' target - controlling value usage and required status 'custgen2' target - controlling namespaces and element vs attribute 'custgen3' target - property vs field access, customizing individual values (including non-Java 5 usage)