blob: 9e4ec8c6da11f62821aeec08ff27ad0cb36f96c5 [file] [log] [blame]
/*
* Copyright (c) 2011, 2021 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// mmacivor - April 23/2010 - 2.1 - Initial implementation
package org.eclipse.persistence.testing.sdo.helper.xsdhelper.define;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamSource;
import org.eclipse.persistence.platform.xml.XMLParser;
import org.eclipse.persistence.platform.xml.XMLPlatformFactory;
import org.eclipse.persistence.sdo.helper.DefaultSchemaResolver;
import org.eclipse.persistence.sdo.helper.SDOXSDHelper;
import org.eclipse.persistence.sdo.helper.SchemaResolver;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import junit.textui.TestRunner;
public class SchemaResolverSystemIdTestCases extends XSDHelperDefineTestCases {
public SchemaResolverSystemIdTestCases(String name) {
super(name);
}
public static void main(String[] args) {
TestRunner.run(SchemaResolverSystemIdTestCases.class);
}
@Override
public String getSchemaToDefine() {
return "";
}
@Override
public void testDefine() {
StreamSource source = new StreamSource("xyz:zxy");
List types = ((SDOXSDHelper)xsdHelper).define(source, new MySchemaResolver());
assertEquals(1, types.size());
}
public void testSAXSourceDefine() {
InputSource inputSource = new InputSource("xyz:zxy");
SAXSource source = new SAXSource(inputSource);
List types = ((SDOXSDHelper)xsdHelper).define(source, new MySchemaResolver());
assertEquals(1, types.size());
}
public void testCustomSourceDefine() {
MySource source = new MySource();
source.setSystemId("xyz:zxy");
List types = ((SDOXSDHelper)xsdHelper).define(source, new MySchemaResolver());
assertEquals(1, types.size());
}
public void testDOMSourceDefine() {
DOMSource source = new DOMSource();
source.setSystemId("xyz:zxy");
List types = ((SDOXSDHelper)xsdHelper).define(source, new MySchemaResolver());
assertEquals(1, types.size());
}
public void testDefineWithIDAndStream() {
String schema = "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
"<xsd:complexType name=\"employee-type\">" +
"<xsd:sequence>" +
"<xsd:element name=\"name\" type=\"xsd:string\"/>" +
"</xsd:sequence>" +
"</xsd:complexType>" +
"<xsd:element name=\"employee\" type=\"employee-type\"/>" +
"</xsd:schema>";
StreamSource source = new StreamSource();
source.setSystemId("some-id");
source.setInputStream(new ByteArrayInputStream(schema.getBytes()));
List types = ((SDOXSDHelper)xsdHelper).define(source, new DefaultSchemaResolver());
assertEquals(1, types.size());
}
public void testDOMSourceWithNodeDefine() {
String schema = "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
"<xsd:complexType name=\"employee-type\">" +
"<xsd:sequence>" +
"<xsd:element name=\"name\" type=\"xsd:string\"/>" +
"</xsd:sequence>" +
"</xsd:complexType>" +
"<xsd:element name=\"employee\" type=\"employee-type\"/>" +
"</xsd:schema>";
XMLParser parser = XMLPlatformFactory.getInstance().getXMLPlatform().newXMLParser();
Node node = parser.parse(new StringReader(schema));
DOMSource source = new DOMSource(node, "some-id");
List types = ((SDOXSDHelper)xsdHelper).define(source, new DefaultSchemaResolver());
assertEquals(1, types.size());
}
public static class MySchemaResolver implements SchemaResolver {
@Override
public Source resolveSchema(Source sourceXSD, String namespace, String schemaLocation) {
return null;
}
@Override
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
String schema = "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
"<xsd:complexType name=\"employee-type\">" +
"<xsd:sequence>" +
"<xsd:element name=\"name\" type=\"xsd:string\"/>" +
"</xsd:sequence>" +
"</xsd:complexType>" +
"<xsd:element name=\"employee\" type=\"employee-type\"/>" +
"</xsd:schema>";
return new InputSource(new StringReader(schema));
}
}
private static class MySource implements Source {
private String systemId;
@Override
public String getSystemId() {
return systemId;
}
@Override
public void setSystemId(String systemId) {
this.systemId = systemId;
}
}
@Override
public List getControlTypes()
{
return new ArrayList();
}
}