/** * * 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.sdo.test; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.net.URL; import java.util.HashMap; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamWriter; import junit.framework.TestCase; import org.apache.tuscany.sdo.api.SDOHelper; import org.apache.tuscany.sdo.api.SDOUtil; import org.apache.tuscany.sdo.api.XMLStreamHelper; import commonj.sdo.helper.HelperContext; import commonj.sdo.helper.XMLDocument; import commonj.sdo.helper.XMLHelper; import commonj.sdo.helper.XSDHelper; public class XMLSaveOptionsTestCase extends TestCase { HelperContext hc; private XSDHelper xsdHelper; XMLHelper xmlh; XMLStreamHelper xmlStreamHelper; static final String INDENT = " ", MARGIN = " ", LINE_BREAK = "\n"; String formatted1 = MARGIN+ "" +LINE_BREAK+ MARGIN+ "" +LINE_BREAK+ MARGIN+INDENT+ "FBNT" +LINE_BREAK+ MARGIN+INDENT+ "FlyByNightTechnology" +LINE_BREAK+ MARGIN+INDENT+ "999.0" +LINE_BREAK+ MARGIN+INDENT+ "1000.0" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+INDENT+ "1500.0" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+INDENT+ "2500.0" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+INDENT+ "3000.0" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+INDENT+ "4000.0" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+INDENT+INDENT+ "fbnt" +LINE_BREAK+ MARGIN+INDENT+INDENT+INDENT+ "1000.0" +LINE_BREAK+ MARGIN+INDENT+INDENT+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+INDENT+INDENT+ "2000.02000.99" +LINE_BREAK+ MARGIN+INDENT+INDENT+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+INDENT+ "" +LINE_BREAK+ MARGIN+INDENT+ "" +LINE_BREAK+ MARGIN+ ""; String formatted2 = //MARGIN+ "" +LINE_BREAK+ MARGIN+ "" +LINE_BREAK+ MARGIN+INDENT+"fbnt" +LINE_BREAK+ MARGIN+INDENT+"FlyByNightTechnology" +LINE_BREAK+ MARGIN+INDENT+"1000.0" +LINE_BREAK+ MARGIN+INDENT+"1000.0" +LINE_BREAK+ MARGIN+INDENT+"1000.0" +LINE_BREAK+ MARGIN+INDENT+"1000.0" +LINE_BREAK+ MARGIN+INDENT+"1000.0" +LINE_BREAK+ MARGIN+INDENT+"1000.0" +LINE_BREAK+ MARGIN+"" +LINE_BREAK; void define(final String model) throws IOException { // Populate the meta data for the test model final URL url = getClass().getResource(model); xsdHelper.define(url.openStream(), url.toString()); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } //use XMLHelper public void testSaveXMLDocumentXMLHelper() throws IOException { final HashMap options = new HashMap(); options.put(org.apache.tuscany.sdo.api.SDOHelper.XMLOptions.XML_SAVE_INDENT, INDENT); options.put(org.apache.tuscany.sdo.api.SDOHelper.XMLOptions.XML_SAVE_MARGIN, MARGIN); options.put(org.apache.tuscany.sdo.api.SDOHelper.XMLOptions.XML_SAVE_LINE_BREAK, LINE_BREAK); hc = SDOUtil.createHelperContext(false,options); xsdHelper = hc.getXSDHelper(); xmlh = hc.getXMLHelper(); // Populate the meta data for the test (Stock Quote) model define("/simpleWithChangeSummary.xsd"); final XMLDocument doc = xmlh.load(getClass().getResource("/simpleWithChangeSummary.xml").openStream()); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); xmlh.save(xmlh.createDocument(doc.getRootObject(), doc.getRootElementURI(), doc.getRootElementName()), baos, null); assertEquals(formatted1, baos.toString()); } //use XMLStreamHelper public void testSaveXMLDocumentXMLStreamHelper() throws Exception { final HashMap options = new HashMap(); options.put(SDOHelper.XMLOptions.XML_LOAD_SCHEMA, Boolean.FALSE); options.put(org.apache.tuscany.sdo.api.SDOHelper.XMLOptions.XML_SAVE_INDENT, INDENT); options.put(org.apache.tuscany.sdo.api.SDOHelper.XMLOptions.XML_SAVE_MARGIN, MARGIN); options.put(org.apache.tuscany.sdo.api.SDOHelper.XMLOptions.XML_SAVE_LINE_BREAK, LINE_BREAK); final HelperContext hc = SDOUtil.createHelperContext(false, options); xmlStreamHelper = SDOUtil.createXMLStreamHelper(hc); xsdHelper = hc.getXSDHelper(); define("/simple.xsd"); final InputStream inStrm = getClass().getResourceAsStream("/shallowquote.xml"); final XMLDocument document = hc.getXMLHelper().load(inStrm, null, null); final XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); final StringWriter writer = new StringWriter(); final XMLStreamWriter streamWriter = outputFactory.createXMLStreamWriter(writer); xmlStreamHelper.save(document, streamWriter, null); streamWriter.flush(); assertEquals(formatted2, writer.toString()); } }