/** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.tuscany.samples.sdo.specExampleSection; import commonj.sdo.DataObject; import commonj.sdo.helper.XMLHelper; import commonj.sdo.helper.XSDHelper; import org.apache.tuscany.samples.sdo.SdoSampleConstants; /** * Demonstrates creating a DataObject from an XML String. *
* The following sample is from the Apache Tuscany project. It was written to help users * understand and experiement with SDO. It is based upon example code contained * within, and is meant for use with, and reference to the SDO Specification. In general this sample attempts to use the * code and comments contained within the specification, exceptions to this are noted * in comments.
*
* Specifically this sample is based upon the 'Creating DataObject Trees from XML * documents' example from the Examples section of the SDO Specification. It is * possible to convert to and from XML documents to build DataObject trees, which is * useful when assembling DataObjects from serval data sources. This sample uses the * XMLHelper to convert xml Strings to DataObjects.
*
* Uses previously defined model * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} to * define types then generates a purchase order DataObject and persists to * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_GENERATED} *

* Usage:
* This sample can easily be run from within Eclipse as a Java Application if tuscany or * the sample-sdo project is imported into Eclipse as an existing project. *

* If executing as a standalone application please do the following: *
* * * @author Robbie Minshall * @see {@link org.apache.tuscany.samples.sdo.otherSources.CreatePurchaseOrder} */ public class CreatingDataObjectTreesFromXMLDocuments { /** * Drives sample * * @param args. * none required. */ public static void main(String[] args) { try { System.out.println("***************************************"); System.out.println("SDO Sample CreatingDataObjectTreesFromXMLDocuments"); System.out.println("***************************************"); // use xsd to define purchase order types System.out.println("Definging purchase order types using " + SdoSampleConstants.PO_XSD_RESOURCE); XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE), null); System.out.println("Defined Types using xsd"); System.out.println("Creating purchase order DataObject using previously created " + SdoSampleConstants.PO_XML_RESOURCE); DataObject purchaseOrder = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XML_RESOURCE)) .getRootObject(); // To create the shipTo DataObject from XML: String shipToXML = "" + " Alice Smith" + " 123 Maple Street" + " Mill Valley" + " PA" + " 90952" + ""; DataObject shipTo = XMLHelper.INSTANCE.load(shipToXML).getRootObject(); // Modify shipTo DataObject on purchaseOrder to value created from a // String System.out.println("Modifying shipTo DataObject on purchaseOrder to value created from a String"); purchaseOrder.set("shipTo", shipTo); // Obtain and convert the billTo DataObject to XML System.out.println("Obtaining billTo dataObject from purchase order and converting to XML"); DataObject billTo = purchaseOrder.getDataObject("billTo"); String billToXML = XMLHelper.INSTANCE.save(billTo, null, "billTo"); System.out.println("billTo DataObject:"); System.out.println(billToXML); } catch (Exception e) { System.out.println("Sorry an error occured " + e.toString()); e.printStackTrace(); } System.out.println("GoodBye"); } }