/* * * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistribution in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or * intended for use in the design, construction, operation or * maintenance of any nuclear facility. * */ import java.io.FileInputStream; import java.io.IOException; import java.math.BigDecimal; import java.util.*; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; // import java content classes generated by binding compiler import primer.myPo.*; /* * $Id: Main.java,v 1.3 2002/09/24 18:07:13 ryans Exp $ * * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ public class Main { // This sample application demonstrates how to modify a java content // tree and marshal it back to a xml data. This example demonstrates // customiation within the schema file, po.xsd, and the impact that these // customizations have on the schema derived Java representation. public static void main( String[] args ) { try { // create a JAXBContext capable of handling classes generated into // the primer.po package JAXBContext jc = JAXBContext.newInstance( "primer.myPo" ); // create an Unmarshaller Unmarshaller u = jc.createUnmarshaller(); // unmarshal a po instance document into a tree of Java content // objects composed of classes from the primer.myPo package. PurchaseOrderElement po = (PurchaseOrderElement)u.unmarshal( new FileInputStream( "po.xml" ) ); // change the billto address USAddress address = po.getBillTo(); address.setToName( "John Bob" ); address.setStreet( "242 Main Street" ); address.setCity( "Beverly Hills" ); address.setState(USState.CA); address.setZipCode( 90210); USState purchaseState = address.getState(); ListIterator iter = po.getItems().getItem().listIterator(); while( iter.hasNext()) { // update to 20% off sale price Items.ItemType item = (Items.ItemType)iter.next(); item.setPrice(item.getPrice().multiply(new BigDecimal("0.80"))); //Calculate sales tax for specific states if (purchaseState == USState.MA) { item.setPrice(item.getPrice().multiply(new BigDecimal("1.05"))); } else if (purchaseState == USState.CA) { item.setPrice(item.getPrice().multiply(new BigDecimal("1.06"))); } item.setPrice(item.getPrice().setScale(2, BigDecimal.ROUND_DOWN)); } // create a Marshaller and marshal to a file Marshaller m = jc.createMarshaller(); m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ); m.marshal( po, System.out ); } catch( JAXBException je ) { je.printStackTrace(); } catch( IOException ioe ) { ioe.printStackTrace(); } } }