Package org.openengsb.core.workflow.drools

Source Code of org.openengsb.core.workflow.drools.AbstractWorkflowServiceTest

/**
* Licensed to the Austrian Association for Software Tool Integration (AASTI)
* under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright
* ownership. The AASTI 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.openengsb.core.workflow.drools;

import static org.mockito.Mockito.mock;

import java.util.HashMap;
import java.util.UUID;

import org.junit.Before;
import org.openengsb.core.api.Domain;
import org.openengsb.core.api.EventSupport;
import org.openengsb.core.api.context.ContextHolder;
import org.openengsb.core.persistence.internal.DefaultPersistenceManager;
import org.openengsb.core.test.AbstractOsgiMockServiceTest;
import org.openengsb.core.util.DefaultOsgiUtilsService;
import org.openengsb.core.workflow.api.TaskboxService;
import org.openengsb.core.workflow.api.TaskboxServiceInternal;
import org.openengsb.core.workflow.api.WorkflowService;
import org.openengsb.core.workflow.api.model.RuleBaseElementId;
import org.openengsb.core.workflow.api.model.RuleBaseElementType;
import org.openengsb.core.workflow.drools.internal.DroolsRuleManager;
import org.openengsb.core.workflow.drools.internal.TaskboxServiceImpl;
import org.openengsb.core.workflow.drools.internal.TaskboxServiceInternalImpl;
import org.openengsb.core.workflow.drools.internal.WorkflowServiceImpl;
import org.openengsb.core.workflow.drools.util.RuleUtil;
import org.openengsb.domain.auditing.AuditingDomain;

public abstract class AbstractWorkflowServiceTest extends AbstractOsgiMockServiceTest {

    protected WorkflowServiceImpl service;
    protected DroolsRuleManager manager;
    protected DummyService myservice;
    protected HashMap<String, Domain> domains;
    protected TaskboxService taskbox;
    protected TaskboxServiceInternal taskboxInternal;
    protected AuditingDomain auditingMock;

    @Before
    public void setUp() throws Exception {
        OsgiHelper.setUtilsService(new DefaultOsgiUtilsService(bundleContext));
        setupRulemanager();

        auditingMock = mock(AuditingDomain.class);
        registerServiceAtLocation(auditingMock, "auditing-root", AuditingDomain.class);

        service = new WorkflowServiceImpl();
        service.setAuditingConnectors(makeServiceList(AuditingDomain.class));
        service.setEventReceivers(makeServiceList(EventSupport.class));

        setupTaskbox();
        service.setRulemanager(manager);
        service.setTaskbox(taskbox);
        ContextHolder.get().setCurrentContextId("42");
        service.setBundleContext(bundleContext);
        registerServiceViaId(service, "workflowService", WorkflowService.class);
        setupDomainsAndOtherServices();
    }

    private void setupTaskbox() {
        DefaultPersistenceManager persistenceManager = new DefaultPersistenceManager();
        persistenceManager.setPersistenceRootDir("target/" + UUID.randomUUID().toString());
        TaskboxServiceImpl taskboxServiceImpl = new TaskboxServiceImpl();
        taskboxServiceImpl.setPersistenceManager(persistenceManager);
        taskboxServiceImpl.setBundleContext(bundleContext);
        taskboxServiceImpl.init();
        taskboxServiceImpl.setWorkflowService(service);
        TaskboxServiceInternalImpl taskboxInternalImpl = new TaskboxServiceInternalImpl();
        taskboxInternalImpl.setBundleContext(bundleContext);
        taskboxInternalImpl.setPersistenceManager(persistenceManager);
        taskboxInternalImpl.init();
        taskbox = taskboxServiceImpl;
        taskboxInternal = taskboxInternalImpl;
    }

    private void setupRulemanager() throws Exception {
        manager = RuleUtil.getRuleManager();
        RuleUtil.addImportsAndGlobals(manager);
        RuleUtil.addHello1Rule(manager);
        RuleUtil.addTestFlows(manager);
        manager.add(new RuleBaseElementId(RuleBaseElementType.Rule, "logtest"),
            "when\n Event ( name == \"test-context\")\n then \n example.doSomething(\"42\");");
    }

    private void setupDomainsAndOtherServices() throws Exception {
        createDomainMocks();
        myservice = mock(DummyService.class);
        registerServiceAtLocation(myservice, "myservice", DummyService.class);
    }

    private void createDomainMocks() throws Exception {
        domains = new HashMap<String, Domain>();
        registerDummyConnector(DummyExampleDomain.class, "example");
        registerDummyConnector(DummyNotificationDomain.class, "notification");
        registerDummyConnector(DummyBuild.class, "build");
        registerDummyConnector(DummyDeploy.class, "deploy");
        registerDummyConnector(DummyReport.class, "report");
        registerDummyConnector(DummyTest.class, "test");
    }

    @SuppressWarnings("unchecked")
    protected <T extends Domain> T registerDummyConnector(Class<T> domainClass, String name) throws Exception {
        Domain mock2 = mock(domainClass);
        registerServiceAtLocation(mock2, name, Domain.class, domainClass);
        domains.put(name, mock2);
        return (T) mock2;
    }
}
TOP

Related Classes of org.openengsb.core.workflow.drools.AbstractWorkflowServiceTest

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.