Package org.teiid.query.mapping.xml

Source Code of org.teiid.query.mapping.xml.TestMappingOutputter

/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.  Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library 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 library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/

package org.teiid.query.mapping.xml;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;

import javax.xml.bind.JAXBException;

import org.teiid.query.mapping.xml.MappingAttribute;
import org.teiid.query.mapping.xml.MappingChoiceNode;
import org.teiid.query.mapping.xml.MappingCriteriaNode;
import org.teiid.query.mapping.xml.MappingDocument;
import org.teiid.query.mapping.xml.MappingElement;
import org.teiid.query.mapping.xml.MappingException;
import org.teiid.query.mapping.xml.MappingLoader;
import org.teiid.query.mapping.xml.MappingOutputter;
import org.teiid.query.mapping.xml.MappingRecursiveElement;

import junit.framework.TestCase;

/**
* <p>Test cases for {@link MappingOutputter} class. </p>
*/
public class TestMappingOutputter extends TestCase {
   
    private MappingDocument loadMappingDocument(String xml)
        throws MappingException {
        MappingLoader reader = new MappingLoader();
        byte[] bytes = xml.getBytes();
        InputStream istream = new ByteArrayInputStream(bytes);
        return reader.loadDocument(istream);
    }   
   
    private String saveMappingDocument(MappingDocument doc)
        throws IOException {
        StringWriter sw = new StringWriter();
        MappingOutputter out = new MappingOutputter();
        out.write(doc, new PrintWriter(sw));
        return sw.toString();
    }
   
    public void testSourceAtRoot() throws Exception{
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" //$NON-NLS-1$
                "<formattedDocument>true</formattedDocument>" //$NON-NLS-1$                                   
                "<mappingNode>" //$NON-NLS-1$           
                   "<name>license</name>" //$NON-NLS-1$
                   "<minOccurs>0</minOccurs>" //$NON-NLS-1$
                   "<maxOccurs>-1</maxOccurs>" //$NON-NLS-1$
                   "<source>licenseSource</source>" //$NON-NLS-1$
                   "<tempGroup>testTempGroup1</tempGroup>" //$NON-NLS-1$
                   "<tempGroup>testTempGroup2</tempGroup>" //$NON-NLS-1$                                          
                "</mappingNode>" //$NON-NLS-1$           
            "</xmlMapping>"; //$NON-NLS-1$
       
        ArrayList stagingTables = new ArrayList();
        stagingTables.add("testTempGroup1"); //$NON-NLS-1$
        stagingTables.add("testTempGroup2"); //$NON-NLS-1$
       
        MappingDocument doc = new MappingDocument("UTF-8", true); //$NON-NLS-1$
       
        MappingElement element = doc.addChildElement(new MappingElement("license")); //$NON-NLS-1$
        element.setStagingTables(stagingTables);
        element.setSource("licenseSource"); //$NON-NLS-1$
        element.setMinOccurrs(0);
        element.setMaxOccurrs(-1);
       
        String savedXML = saveMappingDocument(doc);
       
        assertEquals(expected, savedXML);
       
    }
   
    public void testSourceBelowRoot() throws Exception{
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" //$NON-NLS-1$
                "<formattedDocument>true</formattedDocument>" //$NON-NLS-1$                                               
                "<mappingNode>" //$NON-NLS-1$
                    "<name>parentNode</name>" //$NON-NLS-1$
                    "<minOccurs>0</minOccurs>" //$NON-NLS-1$
                    "<maxOccurs>-1</maxOccurs>" //$NON-NLS-1$
                    "<tempGroup>testTempGroup1</tempGroup>" //$NON-NLS-1$
                    "<tempGroup>testTempGroup2</tempGroup>" //$NON-NLS-1$                               
                    "<mappingNode>" //$NON-NLS-1$
                        "<name>childNode</name>" //$NON-NLS-1$
                        "<source>childNodeSource</source>" //$NON-NLS-1$
                    "</mappingNode>" //$NON-NLS-1$
                "</mappingNode>" //$NON-NLS-1$
            "</xmlMapping>"; //$NON-NLS-1$
       
        ArrayList stagingTables = new ArrayList();
        stagingTables.add("testTempGroup1"); //$NON-NLS-1$
        stagingTables.add("testTempGroup2"); //$NON-NLS-1$
       
        MappingDocument doc = new MappingDocument("UTF-8", true); //$NON-NLS-1$
       
        MappingElement element = doc.addChildElement(new MappingElement("parentNode")); //$NON-NLS-1$
        element.setMinOccurrs(0);
        element.setMaxOccurrs(-1);
        element.setStagingTables(stagingTables);

        MappingElement child = element.addChildElement(new MappingElement("childNode"));//$NON-NLS-1$
        child.setSource("childNodeSource"); //$NON-NLS-1$
       
        String savedXML = saveMappingDocument(doc);
       
        assertEquals(expected, savedXML);       
    }
   
    public void testCriteria() throws Exception{
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" //$NON-NLS-1$                                                           
                "<mappingNode>" //$NON-NLS-1$
                    "<name>parentNode</name>" //$NON-NLS-1$
                    "<mappingNode>" //$NON-NLS-1$
                        "<nodeType>choice</nodeType>" //$NON-NLS-1$
                        "<exceptionOnDefault>true</exceptionOnDefault>"+ //$NON-NLS-1$
                        "<mappingNode>" //$NON-NLS-1$
                            "<nodeType>criteria</nodeType>" //$NON-NLS-1$           
                            "<criteria>childNodeCriteria</criteria>" //$NON-NLS-1$
                            "<mappingNode>" //$NON-NLS-1$
                                "<name>childNode</name>" //$NON-NLS-1$           
                            "</mappingNode>" //$NON-NLS-1$           
                        "</mappingNode>" //$NON-NLS-1$           
                    "</mappingNode>" //$NON-NLS-1$           
                "</mappingNode>" //$NON-NLS-1$
            "</xmlMapping>"; //$NON-NLS-1$
       
       
        MappingDocument doc = new MappingDocument(false);
        MappingElement element = doc.addChildElement(new MappingElement("parentNode")); //$NON-NLS-1$
        MappingChoiceNode choice = element.addChoiceNode(new MappingChoiceNode(true));
        MappingCriteriaNode criteria = choice.addCriteriaNode(new MappingCriteriaNode("childNodeCriteria", false)); //$NON-NLS-1$
        criteria.addChildElement(new MappingElement("childNode")); //$NON-NLS-1$

        String savedXML = saveMappingDocument(doc);
       
        assertEquals(expected, savedXML);       
    }
   
    public void testElement() throws Exception{
        String expected  =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" //$NON-NLS-1$                                                                       
                "<mappingNode>" //$NON-NLS-1$
                    "<name>parentNode</name>" //$NON-NLS-1$
                    "<default>ddd</default>" //$NON-NLS-1$
                    "<fixed>fff</fixed>" //$NON-NLS-1$
                    "<optional>true</optional>" +             //$NON-NLS-1$
                    "<isNillable>true</isNillable>" //$NON-NLS-1$
                    "<isExcluded>true</isExcluded>" //$NON-NLS-1$           
                    "<textNormalization>replace</textNormalization>" //$NON-NLS-1$
                    "<builtInType>decimal</builtInType>" + //$NON-NLS-1$
               "</mappingNode>" //$NON-NLS-1$
            "</xmlMapping>"; //$NON-NLS-1$
       
        MappingDocument doc = new MappingDocument(false);
        MappingElement element = doc.addChildElement(new MappingElement("parentNode")); //$NON-NLS-1$
        element.setNillable(true);
        element.setExclude(true);
        element.setDefaultValue("ddd"); //$NON-NLS-1$
        element.setValue("fff"); //$NON-NLS-1$
        element.setOptional(true);
        element.setNormalizeText("replace"); //$NON-NLS-1$
        element.setType("decimal"); //$NON-NLS-1$
       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);       
    }
   
    public void testRecursiveNode() throws Exception{
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
            "<documentEncoding>UTF-8</documentEncoding>" //$NON-NLS-1$
            "<formattedDocument>false</formattedDocument>" //$NON-NLS-1$                                                                       
            "<mappingNode>" //$NON-NLS-1$
                "<name>parentNode</name>" //$NON-NLS-1$
                "<source>parentNodeSource</source>" //$NON-NLS-1$
                "<mappingNode>" //$NON-NLS-1$
                    "<name>childNode</name>" //$NON-NLS-1$                   
                    "<mappingNode>" //$NON-NLS-1$           
                        "<name>attributename</name>" //$NON-NLS-1$
                        "<nodeType>attribute</nodeType>" //$NON-NLS-1$                           
                        "<default>ddd</default>" //$NON-NLS-1$
                        "<fixed>fff</fixed>" //$NON-NLS-1$           
                    "</mappingNode>" //$NON-NLS-1$
                    "<mappingNode>" //$NON-NLS-1$           
                        "<name>recursivenodename</name>" //$NON-NLS-1$
                        "<isRecursive>true</isRecursive>" //$NON-NLS-1$
                        "<recursionCriteria>rrr</recursionCriteria>" //$NON-NLS-1$
                        "<recursionLimit>8</recursionLimit>" //$NON-NLS-1$
                        "<recursionRootMappingClass>parentNodeSource</recursionRootMappingClass>" //$NON-NLS-1$           
                    "</mappingNode>" //$NON-NLS-1$
                "</mappingNode>" //$NON-NLS-1$           
            "</mappingNode>" //$NON-NLS-1$               
            "</xmlMapping>"; //$NON-NLS-1$
       
       
        MappingDocument doc = new MappingDocument(false);
        MappingElement parentNode = doc.addChildElement(new MappingElement("parentNode")); //$NON-NLS-1$
        parentNode.setSource("parentNodeSource"); //$NON-NLS-1$
        MappingElement childNode = parentNode.addChildElement(new MappingElement("childNode"));//$NON-NLS-1$
        MappingAttribute attribute = new MappingAttribute("attributename"); //$NON-NLS-1$
        childNode.addAttribute(attribute);
        attribute.setDefaultValue("ddd"); //$NON-NLS-1$
        attribute.setValue("fff"); //$NON-NLS-1$
        MappingRecursiveElement recursiveElement = (MappingRecursiveElement)childNode.addChildElement(new MappingRecursiveElement("recursivenodename", "parentNodeSource"));//$NON-NLS-1$ //$NON-NLS-2$
        recursiveElement.setRecursionLimit(8, false);
        recursiveElement.setCriteria("rrr"); //$NON-NLS-1$
       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);        
    }
       
    public void testMoveNamespaceDeclaration() throws Exception {
        String actual =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" //$NON-NLS-1$
            "<xmlMapping>\r\n" + //$NON-NLS-1$
            "    <mappingNode>\r\n" //$NON-NLS-1$
            "        <name>parentNode</name>\r\n" //$NON-NLS-1$
            "        <mappingNode>\r\n" //$NON-NLS-1$
            "            <name>xsi</name>\r\n" //$NON-NLS-1$
            "            <nodeType>attribute</nodeType>\r\n" //$NON-NLS-1$
            "            <namespace>xmlns</namespace>\r\n" //$NON-NLS-1$
            "            <fixed>http://some.uri/</fixed>\r\n" //$NON-NLS-1$
            "        </mappingNode>\r\n" //$NON-NLS-1$
            "    </mappingNode>\r\n" //$NON-NLS-1$
            "</xmlMapping>\r\n\r\n"; //$NON-NLS-1$
       

        String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + //$NON-NLS-1$
                "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" + //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" + //$NON-NLS-1$
                "<mappingNode>" + //$NON-NLS-1$
                    "<namespaceDeclaration><prefix>xsi</prefix><uri>http://some.uri/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<name>parentNode</name>" + //$NON-NLS-1$
                    "<includeAlways>false</includeAlways>" + //$NON-NLS-1$
                "</mappingNode>" + //$NON-NLS-1$
                "</xmlMapping>"//$NON-NLS-1$
       
        MappingDocument doc = loadMappingDocument(actual);       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);        
    }
   
    public void testMoveNamespaceDeclaration2() throws Exception {
        String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + //$NON-NLS-1$
                "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" + //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" + //$NON-NLS-1$
                "<mappingNode>" + //$NON-NLS-1$
                    "<namespaceDeclaration><prefix>xsi</prefix><uri>http://some.uri/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<name>parentNode</name>" + //$NON-NLS-1$
                    "<includeAlways>false</includeAlways>" + //$NON-NLS-1$
                "</mappingNode>" + //$NON-NLS-1$
                "</xmlMapping>"//$NON-NLS-1$
       
        MappingDocument doc = loadMappingDocument(expected);       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);        
    }   
   
    public void testMoveDefaultNamespaceDeclaration() throws Exception {
        String actual =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" //$NON-NLS-1$
            "<xmlMapping>\r\n" + //$NON-NLS-1$
            "    <mappingNode>\r\n" //$NON-NLS-1$
            "        <name>license</name>\r\n" //$NON-NLS-1$
            "        <mappingNode>\r\n" //$NON-NLS-1$
            "            <name>xmlns</name>\r\n" //$NON-NLS-1$
            "            <nodeType>attribute</nodeType>\r\n" //$NON-NLS-1$
            "            <fixed>http://some.uri/</fixed>\r\n" //$NON-NLS-1$
            "        </mappingNode>\r\n" //$NON-NLS-1$
            "    </mappingNode>\r\n" //$NON-NLS-1$
            "</xmlMapping>\r\n\r\n"; //$NON-NLS-1$

        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" + //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" + //$NON-NLS-1$
                "<mappingNode>" + //$NON-NLS-1$
                    "<namespaceDeclaration><uri>http://some.uri/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<name>license</name>" + //$NON-NLS-1$
                    "<includeAlways>false</includeAlways>" + //$NON-NLS-1$
                "</mappingNode>" + //$NON-NLS-1$
            "</xmlMapping>"; //$NON-NLS-1$
        MappingDocument doc = loadMappingDocument(actual);       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);                
    }

    public void testMoveDefaultNamespaceDeclaration2() throws Exception {
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" + //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" + //$NON-NLS-1$
                "<mappingNode>" + //$NON-NLS-1$
                    "<namespaceDeclaration><uri>http://some.uri/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<name>license</name>" + //$NON-NLS-1$
                    "<includeAlways>false</includeAlways>" + //$NON-NLS-1$
                "</mappingNode>" + //$NON-NLS-1$
            "</xmlMapping>"; //$NON-NLS-1$
        MappingDocument doc = loadMappingDocument(expected);       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);                
    }
   
    public void testMoveNamespaceDeclarations() throws Exception {
        String actual =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" //$NON-NLS-1$
            "<xmlMapping>\r\n" + //$NON-NLS-1$
            "    <mappingNode>\r\n" //$NON-NLS-1$
            "        <name>license</name>\r\n" //$NON-NLS-1$
            "        <mappingNode>\r\n" //$NON-NLS-1$
            "            <name>xsi</name>\r\n" //$NON-NLS-1$
            "            <nodeType>attribute</nodeType>\r\n" //$NON-NLS-1$
            "            <namespace>xmlns</namespace>\r\n" //$NON-NLS-1$
            "            <fixed>http://some.uri/</fixed>\r\n" //$NON-NLS-1$
            "        </mappingNode>\r\n" //$NON-NLS-1$
            "        <mappingNode>\r\n" //$NON-NLS-1$
            "            <name>xmlns</name>\r\n" //$NON-NLS-1$
            "            <nodeType>attribute</nodeType>\r\n" //$NON-NLS-1$
            "            <fixed>http://some.uri2/</fixed>\r\n" //$NON-NLS-1$
            "        </mappingNode>\r\n" //$NON-NLS-1$
            "    </mappingNode>\r\n" //$NON-NLS-1$
            "</xmlMapping>\r\n\r\n"; //$NON-NLS-1$
       
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" + //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" + //$NON-NLS-1$
                "<mappingNode>" + //$NON-NLS-1$
                    "<namespaceDeclaration><prefix>xsi</prefix><uri>http://some.uri/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<namespaceDeclaration><uri>http://some.uri2/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<name>license</name>" + //$NON-NLS-1$
                    "<includeAlways>false</includeAlways>" + //$NON-NLS-1$
                "</mappingNode>" + //$NON-NLS-1$
            "</xmlMapping>"; //$NON-NLS-1$
        MappingDocument doc = loadMappingDocument(actual);       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);       
    }
   
    public void testMoveNamespaceDeclarations2() throws Exception {     
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" + //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" + //$NON-NLS-1$
                "<mappingNode>" + //$NON-NLS-1$
                    "<namespaceDeclaration><prefix>xsi</prefix><uri>http://some.uri/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<namespaceDeclaration><uri>http://some.uri2/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<name>license</name>" + //$NON-NLS-1$
                    "<includeAlways>false</includeAlways>" + //$NON-NLS-1$
                "</mappingNode>" + //$NON-NLS-1$
            "</xmlMapping>"; //$NON-NLS-1$
        MappingDocument doc = loadMappingDocument(expected);       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);       
    }   
   
    // Sometimes a namespace may be used before its declaration;
    public void testUseNamespaceBeforeDeclaration() throws Exception {
        String actual =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" //$NON-NLS-1$
            "<xmlMapping>\r\n" + //$NON-NLS-1$
            "    <mappingNode>\r\n" //$NON-NLS-1$
            "        <name>license</name>\r\n" //$NON-NLS-1$
            "        <mappingNode>\r\n" //$NON-NLS-1$
            "            <name>usenamespace</name>\r\n" //$NON-NLS-1$
            "            <nodeType>attribute</nodeType>\r\n" //$NON-NLS-1$
            "            <namespace>foo</namespace>\r\n" //$NON-NLS-1$                 
            "        </mappingNode>\r\n" //$NON-NLS-1$           
            "        <mappingNode>\r\n" //$NON-NLS-1$
            "            <name>foo</name>\r\n" //$NON-NLS-1$
            "            <nodeType>attribute</nodeType>\r\n" //$NON-NLS-1$
            "            <namespace>xmlns</namespace>\r\n" //$NON-NLS-1$
            "            <fixed>http://some.uri/</fixed>\r\n" //$NON-NLS-1$
            "        </mappingNode>\r\n" //$NON-NLS-1$
            "        <mappingNode>\r\n" //$NON-NLS-1$
            "            <name>xmlns</name>\r\n" //$NON-NLS-1$
            "            <nodeType>attribute</nodeType>\r\n" //$NON-NLS-1$
            "            <fixed>http://some.uri2/</fixed>\r\n" //$NON-NLS-1$
            "        </mappingNode>\r\n" //$NON-NLS-1$
            "    </mappingNode>\r\n" //$NON-NLS-1$
            "</xmlMapping>\r\n\r\n"; //$NON-NLS-1$
       
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" + //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" + //$NON-NLS-1$
                "<mappingNode>" + //$NON-NLS-1$
                    "<namespaceDeclaration><prefix>foo</prefix><uri>http://some.uri/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<namespaceDeclaration><uri>http://some.uri2/</uri></namespaceDeclaration>" + //$NON-NLS-1$
                    "<name>license</name>" + //$NON-NLS-1$
                    "<includeAlways>false</includeAlways>" + //$NON-NLS-1$
                    "<mappingNode>" + //$NON-NLS-1$
                        "<name>usenamespace</name>" + //$NON-NLS-1$
                        "<nodeType>attribute</nodeType>" + //$NON-NLS-1$
                        "<namespace>foo</namespace>" + //$NON-NLS-1$
                        "<includeAlways>false</includeAlways>"+ //$NON-NLS-1$                       
                    "</mappingNode>" + //$NON-NLS-1$
                "</mappingNode>" + //$NON-NLS-1$
            "</xmlMapping>"; //$NON-NLS-1$
        MappingDocument doc = loadMappingDocument(actual);       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);       
    }   
   
    public void testRecursive() throws Exception {
        String expected =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" //$NON-NLS-1$
            "<xmlMapping>" + //$NON-NLS-1$
                "<documentEncoding>UTF-8</documentEncoding>" + //$NON-NLS-1$
                "<formattedDocument>false</formattedDocument>" + //$NON-NLS-1$           
                "<mappingNode>" //$NON-NLS-1$               
                    "<name>parentNode</name>" //$NON-NLS-1$
                    "<source>parentSource</source>" //$NON-NLS-1$                   
                    "<includeAlways>false</includeAlways>"+ //$NON-NLS-1$
                    "<mappingNode>"+ //$NON-NLS-1$
                        "<name>childNode</name>" //$NON-NLS-1$
                        "<source>childSource</source>" //$NON-NLS-1$
                        "<isRecursive>true</isRecursive>"+ //$NON-NLS-1$
                        "<recursionCriteria>foo</recursionCriteria>" + //$NON-NLS-1$
                        "<recursionLimit>6</recursionLimit>" + //$NON-NLS-1$                               
                        "<recursionRootMappingClass>parentSource</recursionRootMappingClass>" + //$NON-NLS-1$
                        "<includeAlways>false</includeAlways>"+ //$NON-NLS-1$
                    "</mappingNode>"+ //$NON-NLS-1$
                "</mappingNode>"+ //$NON-NLS-1$               
            "</xmlMapping>"; //$NON-NLS-1$       
       
        MappingDocument doc = loadMappingDocument(expected);       
        String savedXML = saveMappingDocument(doc);
        assertEquals(expected, savedXML);       
       
    }
TOP

Related Classes of org.teiid.query.mapping.xml.TestMappingOutputter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.