Package org.apache.ode.dao.jpa.test

Source Code of org.apache.ode.dao.jpa.test.InsertObjectTest

/*
* 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.dao.jpa.test;

import junit.framework.TestCase;
import org.apache.ode.bpel.common.CorrelationKey;
import org.apache.ode.bpel.dao.BpelDAOConnection;
import org.apache.ode.bpel.dao.CorrelationSetDAO;
import org.apache.ode.bpel.dao.CorrelatorDAO;
import org.apache.ode.bpel.dao.MessageDAO;
import org.apache.ode.bpel.dao.MessageExchangeDAO;
import org.apache.ode.bpel.dao.PartnerLinkDAO;
import org.apache.ode.bpel.dao.ProcessDAO;
import org.apache.ode.bpel.dao.ProcessInstanceDAO;
import org.apache.ode.bpel.dao.ScopeDAO;
import org.apache.ode.bpel.dao.ScopeStateEnum;
import org.apache.ode.bpel.dao.XmlDataDAO;
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
import org.apache.ode.il.EmbeddedGeronimoFactory;
import org.apache.ode.utils.DOMUtils;
import org.apache.ode.utils.GUID;
import org.hsqldb.jdbc.jdbcDataSource;
import org.xml.sax.SAXException;

import javax.sql.DataSource;
import javax.transaction.TransactionManager;
import javax.xml.namespace.QName;
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Properties;

public class InsertObjectTest extends TestCase {
 
  private static final String TEST_NS = "http://org.apache.ode.jpa.test";
  private static final String CORRELATOR_ID1 = "testCorrelator1";
  private static final String CORRELATOR_ID2 = "testCorrelator2";
  private static final Calendar cal = new GregorianCalendar();

    TransactionManager _txm;
    DataSource _ds;
    BPELDAOConnectionFactoryImpl factory;
    ProcessDAO _process;

    @Override
  protected void setUp() throws Exception {
        jdbcDataSource hsqlds = new jdbcDataSource();
        hsqlds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
        hsqlds.setUser("sa");
        hsqlds.setPassword("");
        _ds = hsqlds;

        _txm = new EmbeddedGeronimoFactory().getTransactionManager();

        factory = new BPELDAOConnectionFactoryImpl();
        factory.setDataSource(_ds);
        factory.setTransactionManager(_txm);
        Properties props = new Properties();
        props.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
        factory.init(props);

        _txm.begin();
    }
 
  public void testStart() throws Exception {
        createStuff(factory);
    }

    void createStuff(BPELDAOConnectionFactoryImpl factory) throws Exception {
        BpelDAOConnection conn = factory.getConnection();

        CorrelatorDAO corr = createProcess(conn,"testPID1","testType");
    ProcessInstanceDAO pi1 = createProcessInstance(_process, corr);
    }

    @Override
  protected void tearDown() throws Exception {
        _txm.commit();
    _ds = null;
        _txm = null;
    }
 
  private MessageExchangeDAO createMessageExchange(ProcessDAO p, ProcessInstanceDAO pi, PartnerLinkDAO pl ) throws SAXException, IOException {
    MessageExchangeDAO me = pi.getConnection().createMessageExchange("testId", MessageExchangeDAO.DIR_BPEL_INVOKES_PARTNERROLE);
   
    me.setCallee(new QName(TEST_NS,"testCallee"));
    me.setChannel("testChannel");
    //me.setCorrelationId("testCorrelationId");
    me.setCorrelationStatus("testCorrelationStatus");
    me.setEPR(DOMUtils.stringToDOM("<testEPR>EPR</testEPR>"));
    me.setFault(new QName("testFault"));
    me.setFaultExplanation("testFaultExplanation");
    me.setInstance(pi);
    me.setOperation("testOperation");
    me.setPartnerLink(pl);
    me.setPartnerLinkModelId(1);
    me.setPattern(MessageExchangePattern.UNKNOWN);
    me.setPortType(new QName(TEST_NS,"testPortType"));
    me.setProcess(p);
    me.setProperty("testProp1Key", "testProp1");
    me.setProperty("testProp2Key", "testProp2");
    me.setRequest(createMessage(me,"testRequest"));
    me.setResponse(createMessage(me,"testResponse"));
    me.setStatus(Status.NEW);
   
    return me;
  }
 
  private MessageDAO createMessage(MessageExchangeDAO me, String name) throws SAXException, IOException {
    MessageDAO m = me.createMessage(new QName(TEST_NS,name));
   
    m.setType(new QName(TEST_NS,name));
    m.setData(DOMUtils.stringToDOM("<testData>some test data</testData>"));
   
    return m;
  }
 
  private CorrelatorDAO createProcess(BpelDAOConnection conn, String pid, String type) {
    _process = conn.createProcess(new QName(TEST_NS,pid), new QName(TEST_NS,type),"GUID1",1);
    CorrelatorDAO corr = _process.addCorrelator(CORRELATOR_ID1);
    _process.addCorrelator(CORRELATOR_ID2);
    return corr;
  }
 
  private ProcessInstanceDAO createProcessInstance(ProcessDAO process, CorrelatorDAO corr) throws SAXException, IOException {
    ProcessInstanceDAO pi = null;
    String[] actions = { "action1","action2" };
    String[] correlationKeys = { "key1", "key2" };
    CorrelationKey key1 = new CorrelationKey(1,correlationKeys);
    CorrelationKey key2 = new CorrelationKey(2,correlationKeys);
    CorrelationKey[] corrkeys = {key1,key2};
    QName[] names = { new QName(TEST_NS,"name1"), new QName(TEST_NS,"name2") };

        pi = process.createInstance(corr);
   
    pi.setExecutionState(new String("test execution state").getBytes());
    pi.setFault(new QName(TEST_NS,"testFault"), "testExplanation", 1, 1, DOMUtils.stringToDOM("<testFaultMessage>testMessage</testFaultMessage>"));
    pi.setLastActiveTime(cal.getTime());
    pi.setState((short) 1);
   
    pi.createActivityRecovery("testChannel1", 3, "testReason1", cal.getTime(), DOMUtils.stringToDOM("<testData>testData1</testData>"), actions, 2);
    pi.createActivityRecovery("testChannel2", 4, "testReason2", cal.getTime(), DOMUtils.stringToDOM("<testData>testData2</testData>"), actions, 2);
   
    ScopeDAO root = pi.createScope(null, "Root", 1);
    root.setState(ScopeStateEnum.ACTIVE);
    ScopeDAO child1 = pi.createScope(root, "Child1", 2);
    child1.setState(ScopeStateEnum.ACTIVE);
    XmlDataDAO var1 = child1.getVariable("var1");
    var1.set(DOMUtils.stringToDOM("<testData>testData</testData>"));
    var1.setProperty("key1", "prop1");
    var1.setProperty("key2", "prop2");
    XmlDataDAO var2 = child1.getVariable("var2");
    var2.set(DOMUtils.stringToDOM("<testData>testData</testData>"));
    var2.setProperty("key1", "prop1");
    var2.setProperty("key2", "prop2");
   
    CorrelationSetDAO cs1 = child1.getCorrelationSet("TestCorrelationSet1");
    cs1.setValue(names,key1);
   
    PartnerLinkDAO pl1 = child1.createPartnerLink(1, "Test PartnerLink1", "MyRole1", "PartnerRole1");
    pl1.setMyEPR(DOMUtils.stringToDOM("<testEPR>testMyEPR</testEPR>"));
    pl1.setMyRoleServiceName(new QName(TEST_NS,"testRoleService"));
    pl1.setMySessionId("TestMySessionID");
    pl1.setPartnerEPR(DOMUtils.stringToDOM("<testEPR>testPartnerEPR</testEPR>"));
    pl1.setPartnerSessionId("TestPartnerSessionID");
   
    MessageExchangeDAO mex = createMessageExchange(process,pi,pl1);
   
    corr.addRoute("testRoute", pi, 1, key1);
    corr.enqueueMessage(mex, corrkeys);
   
    return pi;
  }

}
TOP

Related Classes of org.apache.ode.dao.jpa.test.InsertObjectTest

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.