1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 20 package tests; 21 22 import junit.framework.TestCase; 23 import org.apache.ws.commons.schema.*; 24 25 import javax.xml.namespace.QName; 26 import javax.xml.transform.stream.StreamSource; 27 import java.io.FileInputStream; 28 import java.io.InputStream; 29 import java.util.HashSet; 30 import java.util.Set; 31 32 /* 33 * Copyright 2004,2007 The Apache Software Foundation. 34 * Copyright 2006 International Business Machines Corp. 35 * 36 * Licensed under the Apache License, Version 2.0 (the "License"); 37 * you may not use this file except in compliance with the License. 38 * You may obtain a copy of the License at 39 * 40 * http://www.apache.org/licenses/LICENSE-2.0 41 * 42 * Unless required by applicable law or agreed to in writing, software 43 * distributed under the License is distributed on an "AS IS" BASIS, 44 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 45 * See the License for the specific language governing permissions and 46 * limitations under the License. 47 * 48 */ 49 public class UnionTest extends TestCase { 50 51 /** 52 * This method will test the union. 53 * 54 * @throws Exception Any exception encountered 55 */ 56 public void testUnion() throws Exception { 57 58 /* 59 <schema xmlns="http://www.w3.org/2001/XMLSchema" 60 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 61 xmlns:tns="http://soapinterop.org/types" 62 targetNamespace="http://soapinterop.org/types"> 63 64 <element name="unionTest"> 65 <simpleType> 66 <union memberTypes="float decimal"/> 67 </simpleType> 68 </element> 69 70 </schema> 71 */ 72 73 QName ELEMENT_QNAME = new QName("http://soapinterop.org/types", 74 "unionTest"); 75 InputStream is = new FileInputStream(Resources.asURI("union.xsd")); 76 XmlSchemaCollection schemaCol = new XmlSchemaCollection(); 77 schemaCol.read(new StreamSource(is), null); 78 79 80 XmlSchemaElement elem = schemaCol.getElementByQName(ELEMENT_QNAME); 81 assertNotNull(elem); 82 assertEquals("unionTest", elem.getName()); 83 assertEquals(new QName("http://soapinterop.org/types", "unionTest"), 84 elem.getQName()); 85 86 XmlSchemaSimpleType simpleType = (XmlSchemaSimpleType)elem.getSchemaType(); 87 assertNotNull(simpleType); 88 89 XmlSchemaSimpleTypeUnion xsstu = 90 (XmlSchemaSimpleTypeUnion)simpleType.getContent(); 91 assertNotNull(xsstu); 92 93 QName[] qname = xsstu.getMemberTypesQNames(); 94 Set s = new HashSet(); 95 s.add(new QName("http://www.w3.org/2001/XMLSchema", "float")); 96 s.add(new QName("http://www.w3.org/2001/XMLSchema", "decimal")); 97 for (int i = 0; i < qname.length; i++) { 98 assertTrue(s.remove(qname[i])); 99 } 100 assertTrue("The set should have been empty, but instead contained: " 101 + s + ".", 102 s.isEmpty()); 103 104 assertEquals("float decimal", xsstu.getMemberTypesSource()); 105 106 } 107 108 }