| /* |
| * 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.common.CorrelationKeySet; |
| import org.apache.ode.bpel.dao.ActivityRecoveryDAO; |
| 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.FaultDAO; |
| import org.apache.ode.bpel.dao.MessageDAO; |
| import org.apache.ode.bpel.dao.MessageExchangeDAO; |
| import org.apache.ode.bpel.dao.MessageRouteDAO; |
| 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.dao.jpa.BPELDAOConnectionFactoryImpl; |
| import org.apache.ode.il.EmbeddedGeronimoFactory; |
| import org.apache.ode.utils.GUID; |
| import org.hsqldb.jdbc.jdbcDataSource; |
| |
| import javax.persistence.EntityManager; |
| import javax.sql.DataSource; |
| import javax.transaction.TransactionManager; |
| import javax.xml.namespace.QName; |
| import java.util.Collection; |
| import java.util.Properties; |
| import java.util.List; |
| |
| public class SelectObjectTest extends TestCase { |
| |
| private EntityManager em; |
| private static final String TEST_NS = "http://org.apache.ode.jpa.test"; |
| private String[] correlationKeys = { "key1", "key2" }; |
| private String[] actions = { "action1","action2" }; |
| private CorrelationKey key1 = new CorrelationKey("key1",correlationKeys); |
| private static final String CORRELATOR_ID1 = "testCorrelator1"; |
| private static final String CORRELATOR_ID2 = "testCorrelator2"; |
| |
| TransactionManager _txm; |
| DataSource _ds; |
| BPELDAOConnectionFactoryImpl factory; |
| |
| @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 testGetObject() throws Exception { |
| new InsertObjectTest().createStuff(factory); |
| |
| _txm.commit(); |
| _txm.begin(); |
| |
| BpelDAOConnection conn = factory.getConnection(); |
| |
| // Assert the ProcessDAO |
| ProcessDAO p = conn.getProcess(new QName(TEST_NS,"testPID1")); |
| assertNotNull( p ); |
| Collection<ProcessInstanceDAO> insts = p.findInstance(key1); |
| assertNotNull( insts ); |
| assertTrue( insts.size() > 0 ); |
| assertNotNull(p.getType()); |
| assertNotNull(p.getProcessId()); |
| assertEquals( p.getVersion() , 1 ); |
| |
| // Assert the CorrelatorDAO |
| CorrelatorDAO corr = p.getCorrelator(CORRELATOR_ID1); |
| assertNotNull( corr ); |
| assertEquals(corr.getCorrelatorId(),CORRELATOR_ID1); |
| |
| // Assert the MessageRouteDAO |
| List<MessageRouteDAO> routes = corr.findRoute(new CorrelationKeySet().add(key1)); |
| MessageRouteDAO route = null; |
| if (routes != null && routes.size() > 0) { |
| route = routes.get(0); |
| } |
| assertNotNull( route ); |
| assertEquals(route.getGroupId(),"testRoute" ); |
| assertEquals(route.getIndex() , 1 ); |
| assertNotNull(route.getTargetInstance() ); |
| |
| // Assert the ProcessInstanceDAO |
| for ( ProcessInstanceDAO inst : insts ) { |
| Long id = inst.getInstanceId(); |
| assertNotNull( id ); |
| |
| ProcessInstanceDAO inst2 = conn.getInstance(id); |
| assertSame(inst2,inst); |
| |
| ProcessInstanceDAO inst3 = p.getInstance(id); |
| assertSame( inst3 , inst ); |
| |
| Long mon = inst.genMonotonic(); |
| assertEquals(inst.getActivityFailureCount() , 2); |
| assertNotNull(inst.getActivityFailureDateTime() ); |
| assertNotNull(inst.getCreateTime() ); |
| assertTrue(inst.getExecutionState().length > 0 ); |
| assertNotNull(inst.getLastActiveTime() ); |
| assertSame(inst.getProcess() , p ); |
| assertEquals(inst.getPreviousState() , 0); |
| assertEquals(inst.getState() , 1); |
| |
| // Assert the Root ScopeDAO |
| ScopeDAO rs = inst.getRootScope(); |
| assertNotNull( rs ); |
| assertNotNull(rs.getChildScopes()); |
| ScopeDAO child1 = null; |
| for ( ScopeDAO childItr : rs.getChildScopes()){ |
| child1 = childItr; |
| break; |
| } |
| assertNotNull(child1); |
| assertNotNull(rs.getCorrelationSets()); |
| assertEquals(rs.getCorrelationSets().size() , 0 ); |
| assertEquals(rs.getModelId(),1); |
| assertEquals(rs.getName(),"Root"); |
| assertTrue(rs.getParentScope() == null); |
| assertNotNull(rs.getPartnerLinks()); |
| assertEquals(rs.getPartnerLinks().size() ,0); |
| assertSame(rs.getProcessInstance(),inst); |
| assertNotNull(rs.getScopeInstanceId()); |
| assertEquals(rs.getState(),ScopeStateEnum.ACTIVE); |
| assertNotNull(rs.getVariables()); |
| assertEquals(rs.getVariables().size(),0); |
| |
| |
| // Assert the ActivityRecoveryDAO |
| assertNotNull(inst.getActivityRecoveries()); |
| ActivityRecoveryDAO rec1 = null; |
| for (ActivityRecoveryDAO recItr : inst.getActivityRecoveries()) { |
| if (recItr.getActivityId() == 3) { |
| rec1 = recItr;break; |
| } |
| } |
| assertNotNull(rec1); |
| String tmpAct = rec1.getActions(); |
| // assertEquals(rec1.getActionsList(),actions); |
| assertEquals(rec1.getActivityId(),3); |
| assertEquals(rec1.getChannel(),"testChannel1"); |
| assertNotNull(rec1.getDateTime()); |
| // assertNotNull(rec1.getDetails()); |
| assertEquals(rec1.getReason(),"testReason1"); |
| assertEquals(rec1.getRetries(),2); |
| |
| // Assert the CorrelationSetDAO |
| //assertNotNull(inst.getCorrelationSets()); |
| //CorrelationSetDAO cs1 = null; |
| //for ( CorrelationSetDAO csItr : inst.getCorrelationSets() ) { |
| // cs1 = csItr; |
| // break; |
| //} |
| //assertNotNull(cs1); |
| |
| // Assert the FaultDAO |
| FaultDAO fault = inst.getFault(); |
| assertNotNull(fault); |
| assertEquals(fault.getActivityId(),1); |
| assertNotNull(fault.getData()); |
| assertEquals(fault.getExplanation(),"testExplanation"); |
| assertEquals(fault.getLineNo(),1); |
| assertEquals(fault.getName(),new QName(TEST_NS,"testFault")); |
| |
| // Assert MessageExchangeDAO |
| CorrelatorDAO ic = inst.getInstantiatingCorrelator(); |
| assertNotNull(ic); |
| assertEquals(ic.getCorrelatorId(),CORRELATOR_ID1); |
| // The message is dequeued but not persisted |
| MessageExchangeDAO me = ic.dequeueMessage(new CorrelationKeySet().add(key1)); |
| assertNotNull(me); |
| assertEquals(me.getCallee(),new QName(TEST_NS,"testCallee")); |
| assertEquals(me.getPropagateTransactionFlag(),false); |
| assertEquals(me.getChannel(),"testChannel"); |
| assertEquals(me.getCorrelationId(),"testCorrelationId"); |
| //assertNotNull(me.getCreateTime()); |
| assertEquals(me.getDirection(),'0'); |
| assertNotNull(me.getEPR()); |
| assertEquals(me.getFault().toString(),"testFault"); |
| assertEquals(me.getFaultExplanation(),"testFaultExplanation"); |
| assertSame(me.getInstance(),inst); |
| assertEquals(me.getOperation(),"testOperation"); |
| assertNotNull(me.getPartnerLink()); |
| assertEquals(me.getPartnerLinkModelId(),1); |
| assertEquals(me.getPattern(),"testPattern"); |
| assertEquals(me.getPortType(),new QName(TEST_NS,"testPortType")); |
| assertSame(me.getProcess(),p); |
| assertEquals(me.getProperty("testProp1Key"),"testProp1"); |
| assertNotNull(me.getRequest()); |
| assertNotNull(me.getResponse()); |
| assertEquals(me.getStatus(),"testStatus"); |
| |
| // Assert MessageDAO |
| MessageDAO m = me.getRequest(); |
| assertNotNull(m.getData()); |
| assertSame(m.getMessageExchange(),me); |
| assertEquals(m.getType(),new QName(TEST_NS,"testRequest")); |
| |
| |
| //Assert Child ScopeDAO |
| assertNotNull(inst.getScopes()); |
| assertTrue(inst.getScopes().size() > 0); |
| assertNotNull(inst.getScopes("Child1")); |
| assertTrue(inst.getScopes("Child1").size() == 1); |
| ScopeDAO childS = inst.getScopes("Child1").iterator().next(); |
| assertSame(childS,child1); |
| assertSame(childS.getParentScope(),rs); |
| assertNotNull(childS.getChildScopes()); |
| assertEquals(childS.getChildScopes().size(), 0); |
| assertNotNull(childS.getVariables()); |
| assertTrue(childS.getVariables().size() > 0); |
| assertNotNull(childS.getVariable("var1")); |
| XmlDataDAO chsVar = childS.getVariable("var1"); |
| assertNotNull(childS.getPartnerLinks()); |
| assertTrue(childS.getPartnerLinks().size() > 0); |
| PartnerLinkDAO spl = childS.getPartnerLinks().iterator().next(); |
| assertSame(spl,me.getPartnerLink()); |
| assertSame(spl,childS.getPartnerLink(spl.getPartnerLinkModelId())); |
| assertNotNull(childS.getCorrelationSets()); |
| assertTrue(childS.getCorrelationSets().size() > 0); |
| assertNotNull(childS.getCorrelationSet("TestCorrelationSet1")); |
| |
| // Assert CorrelationSetDAO |
| CorrelationSetDAO cs = childS.getCorrelationSet("TestCorrelationSet1"); |
| assertEquals(cs.getName(),"TestCorrelationSet1"); |
| assertNotNull(cs.getProperties()); |
| assertTrue(cs.getProperties().size() > 0); |
| assertSame(cs.getScope(),childS); |
| assertNotNull(cs.getValue()); |
| assertEquals(cs.getProperties().get(new QName(TEST_NS,"name1")),"key1"); |
| |
| |
| // Assert PartnerLinkDAO |
| assertNotNull(spl.getMyEPR()); |
| assertEquals(spl.getMyRoleName(),"MyRole1"); |
| assertEquals(spl.getMyRoleServiceName(),new QName(TEST_NS,"testRoleService")); |
| assertEquals(spl.getMySessionId(),"TestMySessionID"); |
| assertNotNull(spl.getPartnerEPR()); |
| assertEquals(spl.getPartnerLinkModelId(),1); |
| assertEquals(spl.getPartnerLinkName(),"Test PartnerLink1"); |
| assertEquals(spl.getPartnerRoleName(),"PartnerRole1"); |
| assertEquals(spl.getPartnerSessionId(),"TestPartnerSessionID"); |
| |
| // Assert Variables |
| assertNotNull(inst.getVariables("var1", 2)); |
| assertEquals(inst.getVariables("var1", 2).length,1); |
| XmlDataDAO[] vars = inst.getVariables("var1", 2); |
| assertSame(chsVar,vars[0]); |
| assertNotNull(vars[0].get()); |
| assertEquals(vars[0].getName(),"var1"); |
| // assertEquals(vars[0].getProperty("key1"),"prop1"); |
| assertSame(vars[0].getScopeDAO(),childS); |
| |
| } |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| _txm.commit(); |
| _txm = null; |
| _ds = null; |
| } |
| |
| } |