/**
* Copyright 2010 JBoss Inc
*
* 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 org.drools.osworkflow.test.persistence;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Properties;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import junit.framework.TestCase;
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
import org.drools.compiler.PackageBuilder;
import org.drools.marshalling.impl.ProcessMarshallerRegistry;
import org.drools.osworkflow.core.OSWorkflowProcess;
import org.drools.osworkflow.persistence.marshaller.OSWorkflowProcessInstanceMarshaller;
import org.drools.rule.Package;
import bitronix.tm.resource.jdbc.PoolingDataSource;
import java.util.ArrayList;
import java.util.List;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.builder.impl.KnowledgeBuilderImpl;
import org.drools.definition.KnowledgePackage;
import org.drools.io.ResourceFactory;
public abstract class AbstractJPAPersistenceTest extends TestCase {
PoolingDataSource ds1;
private EntityManagerFactory emf;
protected void setUp() {
ds1 = new PoolingDataSource();
ds1.setUniqueName( "jdbc/testDS1" );
ds1.setClassName( "org.h2.jdbcx.JdbcDataSource" );
ds1.setMaxPoolSize( 3 );
ds1.setAllowLocalTransactions( true );
ds1.getDriverProperties().put( "user",
"sa" );
ds1.getDriverProperties().put( "password",
"sasa" );
ds1.getDriverProperties().put( "URL",
"jdbc:h2:mem:mydb" );
ds1.init();
emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
}
protected void tearDown() {
emf.close();
ds1.close();
}
public EntityManagerFactory getEmf() {
return emf;
}
protected Properties setupCommonProperties() {
Properties properties = new Properties();
properties.setProperty("drools.commandService", "org.drools.persistence.session.SingleSessionCommandService");
properties.setProperty("drools.processInstanceManagerFactory", "org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory");
properties.setProperty("drools.workItemManagerFactory", "org.drools.persistence.processinstance.JPAWorkItemManagerFactory");
properties.setProperty("drools.processSignalManagerFactory", "org.drools.persistence.processinstance.JPASignalManagerFactory");
//TODO configure this with IOC
ProcessMarshallerRegistry.INSTANCE.register(OSWorkflowProcess.OSWORKFLOW_TYPE, OSWorkflowProcessInstanceMarshaller.INSTANCE);
return properties;
}
/**
* Process definition.
*/
protected static KnowledgeBase createKnowledgeBase(RuleBaseConfiguration conf, String resourceName) {
try {
// create a builder
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(resourceName), ResourceType.DRF);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
// create the knowledge base
KnowledgeBase ruleBase = KnowledgeBaseFactory.newKnowledgeBase(conf);
ruleBase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return ruleBase;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail(e.getMessage());
return null;
}
}
}