/*
* JBoss, Home of Professional Open Source
* Copyright 2005, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.ws.tools.java2xsd;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.xml.namespace.QName;
import org.jboss.test.ws.common.jbossxb.complex.Derived;
import org.jboss.test.ws.common.jbossxb.simple.SimpleUserType;
import org.jboss.ws.Constants;
import org.jboss.ws.metadata.wsdl.xmlschema.JBossXSModel;
import org.jboss.ws.tools.JavaToXSD;
import org.jboss.wsf.test.JBossWSTest;
import org.jboss.wsf.common.DOMUtils;
import org.w3c.dom.Element;
/**
* Test the JBossXS Model
* @author <mailto:Anil.Saldhana@jboss.org>Anil Saldhana
* @since Jul 2, 2005
*/
public class SchemaModelTestCase extends JBossWSTest
{
public void testJBossXSSchemaModel() throws IOException
{
String exp = "<schema targetNamespace='http://org/jboss/test/ws/jaxb/simple' " +
"xmlns:tns='http://org/jboss/test/ws/jaxb/simple' " +
"xmlns='http://www.w3.org/2001/XMLSchema' " +
"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
"xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/'>" +
"<complexType name='SimpleUserType'>" +
"<sequence>" +
"<element name='a' type='int'/>" +
"<element name='b' type='int'/>" +
"<element name='d' nillable='true' type='dateTime'/>" +
"</sequence>" +
"</complexType>" +
"</schema>";
String targetNS = "http://org/jboss/test/ws/jaxb/simple";
QName qn = new QName(targetNS,"SimpleUserType", Constants.PREFIX_TNS);
JavaToXSD jxsd = new JavaToXSD();
//String act = jxsd.generateSchemaAsString(qn,SimpleUserType.class) ;
String act = jxsd.generateForSingleType(qn,SimpleUserType.class).serialize() ;
Element expEl = DOMUtils.parse(exp);
Element actEl = DOMUtils.parse(act);
assertEquals(expEl,actEl);
//assertEquals(exp,act);
}
/**
* Test serialization of complex types with inheritance
* @throws Exception
*/
public void testComplexTypesInheritance() throws Exception
{
String exp = "<schema targetNamespace='http://org.jboss.ws/types' " +
"xmlns:tns='http://org.jboss.ws/types' " +
"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "+
"xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/' " +
"xmlns='http://www.w3.org/2001/XMLSchema'>"+
"<complexType name='Base'>" +
"<sequence> "+
"<element name='a' type='int'/>" +
"<element name='b' type='int'/>"+
"</sequence>"+
"</complexType>"+
"<complexType name='Derived'>" +
"<complexContent>"+
"<extension base='tns:Base'> " +
"<sequence>"+
"<element name='x' type='int'/>"+
"</sequence>"+
"</extension>"+
"</complexContent>"+
"</complexType>"+
"</schema>";
String TARGET_NAMESPACE = "http://org.jboss.ws/types";
QName xmlType = new QName(TARGET_NAMESPACE, "Derived", "ns1");
String nsuri = xmlType.getNamespaceURI();
JavaToXSD javaToXSD = new JavaToXSD();
Map packageNamespace = new HashMap();
packageNamespace.put(Derived.class.getPackage().getName(), nsuri);
javaToXSD.setPackageNamespaceMap(packageNamespace);
JBossXSModel xsmodel = javaToXSD.generateForSingleType(xmlType, Derived.class);
Element expEl = DOMUtils.parse(exp);
Element actEl = DOMUtils.parse(xsmodel.serialize());
assertEquals(expEl,actEl);
}
}