/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.sdo.helper.xmlhelper.loadandsave.withoutxsd; | |
import commonj.sdo.helper.XMLDocument; | |
import java.io.FileInputStream; | |
import java.io.StringReader; | |
import java.io.StringWriter; | |
import java.util.List; | |
import org.eclipse.persistence.testing.sdo.SDOTestCase; | |
import org.w3c.dom.Document; | |
import org.xml.sax.InputSource; | |
public abstract class LoadAndSaveUnknownTestCases extends SDOTestCase { | |
abstract String getControlFileName(); | |
abstract String getSchemaName(); | |
public LoadAndSaveUnknownTestCases(String name) { | |
super(name); | |
} | |
protected String getControlWriteFileName() { | |
return getControlFileName(); | |
} | |
protected List defineTypes() { | |
if (getSchemaName() == null) { | |
return null; | |
} | |
return xsdHelper.define(getSchema(getSchemaName())); | |
} | |
public void testLoadFromStringSaveDocumentToWriter() throws Exception { | |
List types = defineTypes(); | |
FileInputStream inputStream = new FileInputStream(getControlFileName()); | |
byte[] bytes = new byte[inputStream.available()]; | |
inputStream.read(bytes); | |
XMLDocument document = xmlHelper.load(new String(bytes)); | |
verifyAfterLoad(document); | |
StringWriter writer = new StringWriter(); | |
xmlHelper.save(document, writer, null); | |
compareXML(getControlWriteFileName(), writer.toString()); | |
} | |
protected void compareXML(String controlFileName, String testString) throws Exception { | |
compareXML(controlFileName, testString, true); | |
} | |
protected void compareXML(String controlFileName, String testString, boolean compareNodes) throws Exception { | |
String controlString = getControlString(controlFileName); | |
log("Expected:" + controlString); | |
log("Actual :" + testString); | |
StringReader reader = new StringReader(testString); | |
InputSource inputSource = new InputSource(reader); | |
Document testDocument = parser.parse(inputSource); | |
reader.close(); | |
if (compareNodes) { | |
assertXMLIdentical(getDocument(controlFileName), testDocument); | |
} | |
} | |
protected String getControlString(String fileName) { | |
try { | |
FileInputStream inputStream = new FileInputStream(fileName); | |
byte[] bytes = new byte[inputStream.available()]; | |
inputStream.read(bytes); | |
return new String(bytes); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
fail("An error occurred loading the control document"); | |
return null; | |
} | |
} | |
protected void verifyAfterLoad(XMLDocument document) { | |
assertNull(document.getRootObject().getContainer()); | |
} | |
} |