| /* |
| * Copyright (c) 1998, 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: |
| // Oracle - initial API and implementation from Oracle TopLink |
| package org.eclipse.persistence.testing.sdo.helper.xsdhelper.define; |
| |
| import java.io.InputStream; |
| import java.util.List; |
| import org.eclipse.persistence.sdo.SDOConstants; |
| import org.eclipse.persistence.sdo.SDOProperty; |
| import org.eclipse.persistence.sdo.SDOType; |
| import org.eclipse.persistence.testing.sdo.helper.xsdhelper.XSDHelperTestCases; |
| |
| public abstract class XSDHelperDefineTestCases extends XSDHelperTestCases { |
| public XSDHelperDefineTestCases(String name) { |
| super(name); |
| } |
| |
| public void testDefine() { |
| //String xsdSchema = getSchema(getSchemaToDefine()); |
| InputStream is = getSchemaInputStream(getSchemaToDefine()); |
| List types = xsdHelper.define(is, getSchemaLocation()); |
| |
| //List types = xsdHelper.define(xsdSchema, getSchemaLocation()); |
| log("\nExpected:\n"); |
| List controlTypes = getControlTypes(); |
| log(controlTypes); |
| |
| log("\nActual:\n"); |
| log(types); |
| |
| compare(getControlTypes(), types); |
| } |
| |
| protected void compare(List controlTypes, List types) { |
| assertEquals(controlTypes.size(), types.size()); |
| for (int i = 0; i < types.size(); i++) { |
| SDOType control = (SDOType)controlTypes.get(i); |
| SDOType generated = null; |
| for(int j = 0; j < types.size(); j++) { |
| //look for the same type in the generated collection |
| //may be in a different order |
| SDOType next = (SDOType)types.get(j); |
| if(next.getName().equals(control.getName())) { |
| if((next.getURI() == null && control.getURI() == null) || ((next.getURI() != null && control.getURI() != null && next.getURI().equals(control.getURI())))) { |
| generated = next; |
| break; |
| } |
| } |
| } |
| assertNotNull(generated); |
| if (control.getBaseTypes() == null) { |
| assertNull(generated.getBaseTypes()); |
| } |
| assertEquals(control.getBaseTypes().size(), generated.getBaseTypes().size()); |
| String x = control.getInstanceClassName(); |
| String y = generated.getInstanceClassName(); |
| assertEquals(control.getInstanceClassName(), generated.getInstanceClassName()); |
| assertEquals(control.getDeclaredProperties().size(), generated.getDeclaredProperties().size()); |
| assertEquals(control.getAliasNames().size(), generated.getAliasNames().size()); |
| assertEquals(xsdHelper.getLocalName(control), xsdHelper.getLocalName(generated)); |
| assertEquals(xsdHelper.isXSD(control), xsdHelper.isXSD(generated)); |
| |
| // List generatedProps = generated.getDeclaredProperties(); |
| List controlProps = control.getDeclaredProperties(); |
| for (int j = 0; j < controlProps.size(); j++) { |
| SDOProperty controlProp = (SDOProperty)controlProps.get(j); |
| SDOProperty generatedProp = generated.getProperty(controlProp.getName()); |
| |
| assertEquals(controlProp.isMany(), generatedProp.isMany()); |
| //assertEquals(controlProp.isAttribute(), generatedProp.isAttribute()); |
| Object controlXMLElementValue = controlProp.get(SDOConstants.XMLELEMENT_PROPERTY); |
| Object generatedXMLElementValue = controlProp.get(SDOConstants.XMLELEMENT_PROPERTY); |
| if (controlXMLElementValue == null) { |
| assertNull(generatedXMLElementValue); |
| } else { |
| assertTrue(controlXMLElementValue instanceof Boolean); |
| assertTrue(generatedXMLElementValue instanceof Boolean); |
| assertEquals(((Boolean)controlXMLElementValue).booleanValue(), ((Boolean)generatedXMLElementValue).booleanValue()); |
| } |
| |
| assertEquals(xsdHelper.isAttribute(controlProp), xsdHelper.isAttribute(generatedProp)); |
| assertEquals(xsdHelper.isElement(controlProp), xsdHelper.isElement(generatedProp)); |
| assertEquals(xsdHelper.getLocalName(controlProp), xsdHelper.getLocalName(generatedProp)); |
| assertEquals(xsdHelper.getNamespaceURI(controlProp), xsdHelper.getNamespaceURI(generatedProp)); |
| assertEquals(controlProp.isXsd(), generatedProp.isXsd()); |
| assertEquals(controlProp.getXsdLocalName(), generatedProp.getXsdLocalName()); |
| |
| if (controlProp.getContainingType() == null) { |
| assertNull(generatedProp.getContainingType()); |
| } else { |
| assertNotNull(generatedProp.getContainingType()); |
| assertEquals(controlProp.getContainingType().getName(), generatedProp.getContainingType().getName()); |
| } |
| |
| // TODO: 20060906: Bidirectional |
| if (controlProp.getOpposite() == null) { |
| assertNull(generatedProp.getOpposite()); |
| } else { |
| assertNotNull(generatedProp.getOpposite()); |
| assertEquals(controlProp.getOpposite().getName(), generatedProp.getOpposite().getName()); |
| } |
| |
| assertEquals(controlProp.getType().getURI(), generatedProp.getType().getURI()); |
| assertEquals(controlProp.getType().getName(), generatedProp.getType().getName()); |
| |
| assertEquals(controlProp.getAliasNames().size(), generatedProp.getAliasNames().size()); |
| assertEquals(controlProp.isReadOnly(), generatedProp.isReadOnly()); |
| } |
| } |
| } |
| |
| public abstract String getSchemaToDefine(); |
| |
| public abstract List getControlTypes(); |
| |
| protected String getSchemaLocation() { |
| return null; |
| } |
| } |