| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package schema.annotations; |
| |
| import org.apache.xerces.xs.XSAnnotation; |
| import org.apache.xerces.xs.XSAttributeUse; |
| import org.apache.xerces.xs.XSComplexTypeDefinition; |
| import org.apache.xerces.xs.XSImplementation; |
| import org.apache.xerces.xs.XSLoader; |
| import org.apache.xerces.xs.XSModel; |
| import org.apache.xerces.xs.XSObjectList; |
| import org.w3c.dom.DOMConfiguration; |
| import org.w3c.dom.bootstrap.DOMImplementationRegistry; |
| |
| /** |
| * Tests methods getAnnotations on XSAttributeUse XSModel components. |
| * |
| * @author Neil Delima, IBM |
| * @version $Id$ |
| */ |
| public class XSAttributeUseAnnotationsTest extends TestCase { |
| |
| /** |
| * Members that are initialized by setUp() and cleaned up by tearDown(). |
| * <p> |
| * |
| * Note that setUp() and tearDown() are called for <em>each</em> test. |
| * Different tests do <em>not</em> share the same instance member. |
| */ |
| private XSLoader fSchemaLoader; |
| |
| private DOMConfiguration fConfig; |
| |
| /** |
| * This method is called before every test case method, to set up the test |
| * fixture. |
| */ |
| protected void setUp() { |
| try { |
| // get DOM Implementation using DOM Registry |
| System.setProperty(DOMImplementationRegistry.PROPERTY, |
| "org.apache.xerces.dom.DOMXSImplementationSourceImpl"); |
| DOMImplementationRegistry registry = DOMImplementationRegistry |
| .newInstance(); |
| |
| XSImplementation impl = (XSImplementation) registry |
| .getDOMImplementation("XS-Loader"); |
| |
| fSchemaLoader = impl.createXSLoader(null); |
| |
| fConfig = fSchemaLoader.getConfig(); |
| |
| // set validation feature |
| fConfig.setParameter("validate", Boolean.TRUE); |
| |
| } catch (Exception e) { |
| fail("Expecting a NullPointerException"); |
| System.err.println("SETUP FAILED: XSAttributeUseAnnotationsTest"); |
| } |
| } |
| |
| /** |
| * This method is called before every test case method, to tears down the |
| * test fixture. |
| */ |
| protected void tearDown() { |
| fConfig |
| .setParameter( |
| "http://apache.org/xml/features/generate-synthetic-annotations", |
| Boolean.FALSE); |
| } |
| |
| /** |
| * Test #1. |
| */ |
| public void testAttrUseNoAnnotations() { |
| XSModel model = fSchemaLoader |
| .loadURI(getResourceURL("XSAttributeUseAnnotationsTest01.xsd")); |
| |
| XSComplexTypeDefinition ct = (XSComplexTypeDefinition) model |
| .getTypeDefinition("CT", "XSAttributeUseAnnotationsTest"); |
| |
| XSObjectList attrUses = ct.getAttributeUses(); |
| |
| // Attr ref |
| XSAttributeUse attr = (XSAttributeUse) attrUses.item(0); |
| XSObjectList annotations = attr.getAnnotations(); |
| assertEquals("REF", 0, annotations.getLength()); |
| |
| // local attr |
| attr = (XSAttributeUse) attrUses.item(1); |
| annotations = attr.getAnnotations(); |
| assertEquals("LOCAL", 0, annotations.getLength()); |
| |
| // attr grp ref |
| attr = (XSAttributeUse) attrUses.item(2); |
| annotations = attr.getAnnotations(); |
| assertEquals("GROUP", 0, annotations.getLength()); |
| } |
| |
| /** |
| * Test #2. |
| */ |
| public void testAttrUseNoSynthAnnotations() { |
| fConfig |
| .setParameter( |
| "http://apache.org/xml/features/generate-synthetic-annotations", |
| Boolean.FALSE); |
| |
| XSModel model = fSchemaLoader |
| .loadURI(getResourceURL("XSAttributeUseAnnotationsTest01.xsd")); |
| |
| XSComplexTypeDefinition ct = (XSComplexTypeDefinition) model |
| .getTypeDefinition("CT", "XSAttributeUseAnnotationsTest"); |
| |
| XSObjectList attrUses = ct.getAttributeUses(); |
| |
| // Attr ref |
| XSAttributeUse attr = (XSAttributeUse) attrUses.item(0); |
| XSObjectList annotations = attr.getAnnotations(); |
| assertEquals("REF", 0, annotations.getLength()); |
| |
| // local attr |
| attr = (XSAttributeUse) attrUses.item(1); |
| annotations = attr.getAnnotations(); |
| assertEquals("LOCAL", 0, annotations.getLength()); |
| |
| // attr grp ref |
| attr = (XSAttributeUse) attrUses.item(2); |
| annotations = attr.getAnnotations(); |
| assertEquals("GROUP", 0, annotations.getLength()); |
| } |
| |
| /** |
| * Test #3 |
| */ |
| public void testAttrUseSynthAnnotations() { |
| fConfig |
| .setParameter( |
| "http://apache.org/xml/features/generate-synthetic-annotations", |
| Boolean.TRUE); |
| |
| XSModel model = fSchemaLoader |
| .loadURI(getResourceURL("XSAttributeUseAnnotationsTest01.xsd")); |
| |
| XSComplexTypeDefinition ct = (XSComplexTypeDefinition) model |
| .getTypeDefinition("CT", "XSAttributeUseAnnotationsTest"); |
| |
| XSObjectList attrUses = ct.getAttributeUses(); |
| |
| // Attr ref |
| XSAttributeUse attr = (XSAttributeUse) attrUses.item(0); |
| XSObjectList annotations = attr.getAnnotations(); |
| assertEquals("REF", 1, annotations.getLength()); |
| |
| // local attr |
| attr = (XSAttributeUse) attrUses.item(1); |
| annotations = attr.getAnnotations(); |
| assertEquals("LOCAL", 1, annotations.getLength()); |
| |
| // attr grp ref |
| attr = (XSAttributeUse) attrUses.item(2); |
| annotations = attr.getAnnotations(); |
| assertEquals("GROUP", 0, annotations.getLength()); |
| |
| } |
| |
| /** |
| * Test #4. |
| */ |
| public void testAttrUseAnnotations() { |
| fConfig |
| .setParameter( |
| "http://apache.org/xml/features/generate-synthetic-annotations", |
| Boolean.FALSE); |
| |
| XSModel model = fSchemaLoader |
| .loadURI(getResourceURL("XSAttributeUseAnnotationsTest02.xsd")); |
| |
| XSComplexTypeDefinition ct = (XSComplexTypeDefinition) model |
| .getTypeDefinition("CT", "XSAttributeUseAnnotationsTest"); |
| |
| XSObjectList attrUses = ct.getAttributeUses(); |
| |
| // Attr ref |
| XSAttributeUse attr = (XSAttributeUse) attrUses.item(0); |
| XSObjectList annotations = attr.getAnnotations(); |
| assertEquals("REF", 1, annotations.getLength()); |
| |
| // local attr |
| attr = (XSAttributeUse) attrUses.item(1); |
| annotations = attr.getAnnotations(); |
| assertEquals("LOCAL", 1, annotations.getLength()); |
| |
| // attr grp ref |
| // The attribute in the group has an annotation element |
| attr = (XSAttributeUse) attrUses.item(2); |
| annotations = attr.getAnnotations(); |
| assertEquals("GROUP", 1, annotations.getLength()); |
| } |
| |
| /** |
| * Test #5. |
| */ |
| public void testAttrUseAnnotationsSynthetic() { |
| fConfig |
| .setParameter( |
| "http://apache.org/xml/features/generate-synthetic-annotations", |
| Boolean.TRUE); |
| |
| XSModel model = fSchemaLoader |
| .loadURI(getResourceURL("XSAttributeUseAnnotationsTest02.xsd")); |
| |
| XSComplexTypeDefinition ct = (XSComplexTypeDefinition) model |
| .getTypeDefinition("CT", "XSAttributeUseAnnotationsTest"); |
| |
| XSObjectList attrUses = ct.getAttributeUses(); |
| |
| // Attr ref |
| XSAttributeUse attr = (XSAttributeUse) attrUses.item(0); |
| XSObjectList annotations = attr.getAnnotations(); |
| assertEquals("REF", 1, annotations.getLength()); |
| |
| // local attr |
| attr = (XSAttributeUse) attrUses.item(1); |
| annotations = attr.getAnnotations(); |
| assertEquals("LOCAL", 1, annotations.getLength()); |
| |
| // attr grp ref |
| // The attribute in the group has an annotation element |
| attr = (XSAttributeUse) attrUses.item(2); |
| annotations = attr.getAnnotations(); |
| assertEquals("GROUP", 1, annotations.getLength()); |
| } |
| |
| /** |
| * Test #6. |
| */ |
| public void testWildAttrUseAnnotationsSynthetic() { |
| fConfig |
| .setParameter( |
| "http://apache.org/xml/features/generate-synthetic-annotations", |
| Boolean.TRUE); |
| |
| XSModel model = fSchemaLoader |
| .loadURI(getResourceURL("XSAttributeUseAnnotationsTest03.xsd")); |
| |
| XSComplexTypeDefinition ct = (XSComplexTypeDefinition) model |
| .getTypeDefinition("CT", "XSAttributeUseAnnotationsTest"); |
| |
| XSObjectList attrUses = ct.getAttributeUses(); |
| |
| // Attr ref |
| XSAttributeUse attr = (XSAttributeUse) attrUses.item(0); |
| XSObjectList annotations = attr.getAnnotations(); |
| assertEquals("REF", 1, annotations.getLength()); |
| |
| XSAnnotation annotation = attr.getAttrDeclaration().getAnnotation(); |
| String expected = "<annotation sn:att=\"ATT1\" id=\"ANNOT1\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sv=\"XSAttributeUseAnnotationsTest\" xmlns:sn=\"SyntheticAnnotationNS\" > " |
| + "<appinfo>APPINFO1</appinfo>" + "</annotation>"; |
| assertEquals("REF_STRING", trim(expected), trim(annotation |
| .getAnnotationString())); |
| |
| annotations = attr.getAttrDeclaration().getAnnotations(); |
| assertEquals( |
| "REF_STRING_ANNOTATIONS", |
| trim(expected), |
| trim(((XSAnnotation) annotations.item(0)).getAnnotationString())); |
| |
| // local attr |
| attr = (XSAttributeUse) attrUses.item(1); |
| annotations = attr.getAnnotations(); |
| assertEquals("LOCAL", 1, annotations.getLength()); |
| |
| annotation = attr.getAttrDeclaration().getAnnotation(); |
| expected = "<annotation sn:att=\"ATT11\" id=\"ANNOT6\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sv=\"XSAttributeUseAnnotationsTest\" xmlns:sn=\"SyntheticAnnotationNS\" > " |
| + "<appinfo>APPINFO6</appinfo>" + "</annotation>"; |
| assertEquals("LOCAL_STRING", trim(expected), trim(annotation |
| .getAnnotationString())); |
| |
| annotations = attr.getAttrDeclaration().getAnnotations(); |
| assertEquals( |
| "LOCAL_STRING_ANNOTATIONS", |
| trim(expected), |
| trim(((XSAnnotation) annotations.item(0)).getAnnotationString())); |
| |
| // attr grp ref |
| // The attribute in the group has an annotation element |
| attr = (XSAttributeUse) attrUses.item(2); |
| annotations = attr.getAnnotations(); |
| assertEquals("GROUP", 1, annotations.getLength()); |
| |
| annotation = attr.getAttrDeclaration().getAnnotation(); |
| expected = "<annotation id=\"ANNOT3\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sv=\"XSAttributeUseAnnotationsTest\" xmlns:sn=\"SyntheticAnnotationNS\" > " |
| + "<appinfo>APPINFO3</appinfo>" + "</annotation>"; |
| assertEquals("GROUP_STRING", trim(expected), trim(annotation |
| .getAnnotationString())); |
| |
| annotations = attr.getAttrDeclaration().getAnnotations(); |
| assertEquals( |
| "GROUP_STRING_ANNOTATIONS", |
| trim(expected), |
| trim(((XSAnnotation) annotations.item(0)).getAnnotationString())); |
| |
| } |
| |
| public static void main(String args[]) { |
| junit.textui.TestRunner.run(XSAttributeUseAnnotationsTest.class); |
| } |
| } |