/** * Copyright 2004-2017 the original author or authors. * * Licensed 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 com.ibatis.sqlmap; import com.ibatis.common.beans.Probe; import com.ibatis.common.beans.ProbeFactory; import org.w3c.dom.Document; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.sql.SQLException; public class DomStatementTest extends BaseSqlMapTest { // SETUP & TEARDOWN @Override protected void setUp() throws Exception { initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null); initScript("scripts/account-init.sql"); initScript("scripts/order-init.sql"); initScript("scripts/line_item-init.sql"); } @Override protected void tearDown() throws Exception { } public void testExecuteQueryForDom() throws SQLException { Document account = (Document) sqlMap.queryForObject("getAccountDom", newParameter("1")); assertNotNull(account); Probe dom = ProbeFactory.getProbe(account); assertEquals("1", dom.getObject(account, "ID")); assertEquals("Clinton", dom.getObject(account, "FIRSTNAME")); assertEquals("Begin", dom.getObject(account, "LASTNAME")); assertEquals("clinton.begin@ibatis.com", dom.getObject(account, "EMAILADDRESS")); } public void testExecuteQueryForDomSpecialChars() throws SQLException { Document account = (Document) sqlMap.queryForObject("getAccountDom", newParameter("5")); assertNotNull(account); Probe dom = ProbeFactory.getProbe(account); assertEquals("5", dom.getObject(account, "ID")); assertEquals("&manda", dom.getObject(account, "FIRSTNAME")); } public void testExecuteQueryForDomExternalMaps() throws SQLException { Document account = (Document) sqlMap.queryForObject("getAccountDomExternalMaps", newParameter("1")); assertNotNull(account); Probe dom = ProbeFactory.getProbe(account); assertEquals("1", dom.getObject(account, "id")); assertEquals("Clinton", dom.getObject(account, "firstName")); assertEquals("Begin", dom.getObject(account, "lastName")); assertEquals("clinton.begin@ibatis.com", dom.getObject(account, "emailAddress")); assertEquals("1", dom.getObject(account, "account.ID")); assertEquals("Clinton", dom.getObject(account, "account.FIRSTNAME")); assertEquals("Begin", dom.getObject(account, "account.LASTNAME")); assertEquals("clinton.begin@ibatis.com", dom.getObject(account, "account.EMAILADDRESS")); } public void testExecuteQueryForOrderDom() throws SQLException { Document order = (Document) sqlMap.queryForObject("getOrderDom", newParameter("1")); assertNotNull(order); Probe dom = ProbeFactory.getProbe(order); assertEquals("1", dom.getObject(order, "id")); assertEquals("2", dom.getObject(order, "lineItems.lineItem[1].ID")); } private Document newParameter(String val) { Document param = newDocument("parameter"); Probe dom = ProbeFactory.getProbe(param); dom.setObject(param, "id", val); return param; } private Document newDocument(String root) { try { Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); doc.appendChild(doc.createElement(root)); return doc; } catch (ParserConfigurationException e) { throw new RuntimeException("Error creating XML document. Cause: " + e); } } }