⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdbcexternalvariableenginetest.java

📁 bpel执行引擎用来执行bpel业务流程
💻 JAVA
字号:
/* * 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 org.apache.ode.bpel.extvar.jdbc;import java.sql.Connection;import java.sql.Statement;import java.util.ArrayList;import javax.xml.namespace.QName;import junit.framework.TestCase;import org.apache.ode.bpel.engine.extvar.ExternalVariableConf;import org.apache.ode.bpel.engine.extvar.ExternalVariableConf.Variable;import org.apache.ode.utils.DOMUtils;import org.apache.ode.utils.GUID;import org.apache.ode.bpel.evar.ExternalVariableModule.Locator;import org.apache.ode.bpel.evar.ExternalVariableModule.Value;import org.hsqldb.jdbc.jdbcDataSource;import org.junit.Test;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;/** * Test for the JDBC external variable engine. *  * @author Maciej Szefler <mszefler at gmail dot com> * */public class JdbcExternalVariableEngineTest extends TestCase {        final Long _iid = 123L;    final QName _pid = new QName("foo", "pid");    final QName _varType = new QName("foo", "foobar");        ExternalVariableConf _econf;    jdbcDataSource _ds;    JdbcExternalVariableModule _engine;    Element _el1;    public void setUp() throws Exception {        _ds = new org.hsqldb.jdbc.jdbcDataSource();        _ds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());        _ds.setUser("sa");               Connection conn = _ds.getConnection();        Statement s = conn.createStatement();        s.execute("create table extvartable1 (" +                "id1 VARCHAR PRIMARY KEY," +                "_id2_ VARCHAR," +                "pid VARCHAR, " +                "iid INT," +                "cts DATETIME," +                "uts DATETIME," +                "foo VARCHAR," +                "bar VARCHAR );");                _engine = new JdbcExternalVariableModule();        _engine.registerDataSource("testds",_ds);                _el1=DOMUtils.stringToDOM("<foobar><id2>ignored</id2><foo>foo</foo><bar>bar</bar></foobar>");    }        @Test    public void testConfigurationParsing() throws Exception {        Document deploydoc = DOMUtils.parse(getClass().getResourceAsStream("evardeploy.xml"));        NodeList nl = deploydoc.getElementsByTagNameNS(ExternalVariableConf.EXTVARCONF_ELEMENT.getNamespaceURI(),                 ExternalVariableConf.EXTVARCONF_ELEMENT.getLocalPart());        ArrayList<Element> al = new ArrayList<Element>();        for (int i = 0; i < nl.getLength(); ++i) {            al.add((Element)nl.item(i));        }                assertTrue(al.size() >= 1);        _econf = new ExternalVariableConf(al);        assertEquals(al.size(), _econf.getVariables().size());    }        @Test    public void testConfigure() throws Exception {        testConfigurationParsing();        for (Variable v :_econf.getVariables())            _engine.configure(_pid, v.extVariableId, v.configuration);    }            @Test    public void testInitWriteValue() throws Exception {        testConfigure();                Locator locator = new Locator("evar1",_pid,_iid);        Value value = new Value(locator, _el1, null);        value = _engine.writeValue(_varType, value);        assertNotNull(value);        assertNotNull(value.locator);        System.out.println(DOMUtils.domToString(value.locator.reference));        assertTrue(DOMUtils.domToString((Element)value.locator.reference).indexOf("id1")!=-1);        assertTrue(DOMUtils.domToString((Element)value.locator.reference).indexOf("id2")!=-1);    }    @Test    public void testWriteUpdate() throws Exception {        testConfigure();                Locator locator = new Locator("evar1",_pid,_iid);        Value value = new Value(locator, _el1, null);        value = _engine.writeValue(_varType, value);        String domstr = DOMUtils.domToStringLevel2(value.value);        Value newvalue = new Value(value.locator,DOMUtils.stringToDOM(domstr.replaceAll("<bar>bar</bar>", "<bar>boohoo</bar>")),null);        _engine.writeValue(_varType, newvalue);        QName qname = new QName("http://example.com", "bar");        Value reread = _engine.readValue(qname, newvalue.locator);        domstr = DOMUtils.domToString(reread.value);        assertTrue(domstr.contains("boohoo"));        assertFalse(domstr.contains(">bar<"));    }        @Test    public void testRead() throws Exception {        testConfigure();        Locator locator = new Locator("evar1",_pid,_iid);        Value value = new Value(locator, _el1, null);        value = _engine.writeValue(_varType, value);                Value readVal = _engine.readValue(_varType, value.locator);                assertEquals(_iid,readVal.locator.iid);        assertEquals(_pid,readVal.locator.pid);        assertEquals(2, DOMUtils.countKids((Element)readVal.locator.reference, Node.ELEMENT_NODE));        assertEquals(DOMUtils.domToString(value.locator.reference), DOMUtils.domToString(readVal.locator.reference));            }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -