/*
 * Copyright 2018 Red Hat, Inc. and/or its affiliates.
 *
 * 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.benchmarks.common.util;

import java.util.Collection;
import java.util.Map;

import org.drools.core.event.ProcessEventSupport;
import org.drools.core.runtime.process.InternalProcessRuntime;
import org.kie.api.event.process.ProcessEventListener;
import org.kie.api.runtime.process.ProcessInstance;
import org.kie.api.runtime.process.WorkItemManager;
import org.kie.internal.process.CorrelationKey;

public class DummyProcessRuntime implements InternalProcessRuntime {

    @Override
    public void dispose() {
        // Nothing to do here.
    }

    @Override
    public void setProcessEventSupport(final ProcessEventSupport processEventSupport) {
        // Nothing to do here.
    }

    @Override
    public void clearProcessInstances() {
        // Nothing to do here.
    }

    @Override
    public void clearProcessInstancesState() {
        // Nothing to do here.
    }

    @Override
    public void addEventListener(final ProcessEventListener processEventListener) {
        // Nothing to do here.
    }

    @Override
    public void removeEventListener(final ProcessEventListener processEventListener) {
        // Nothing to do here.
    }

    @Override
    public Collection<ProcessEventListener> getProcessEventListeners() {
        return null;
    }

    @Override
    public ProcessInstance startProcess(final String s) {
        return null;
    }

    @Override
    public ProcessInstance startProcess(final String s, final Map<String, Object> map) {
        return null;
    }

    @Override
    public ProcessInstance createProcessInstance(final String s, final Map<String, Object> map) {
        return null;
    }

    @Override
    public ProcessInstance startProcessInstance(final long l) {
        return null;
    }

    @Override
    public void signalEvent(final String s, final Object o) {
        // Nothing to do here.
    }

    @Override
    public void signalEvent(final String s, final Object o, final long l) {
        // Nothing to do here.
    }

    @Override
    public Collection<ProcessInstance> getProcessInstances() {
        return null;
    }

    @Override
    public ProcessInstance getProcessInstance(final long l) {
        return null;
    }

    @Override
    public ProcessInstance getProcessInstance(final long l, final boolean b) {
        return null;
    }

    @Override
    public void abortProcessInstance(final long l) {
        // Nothing to do here.
    }

    @Override
    public WorkItemManager getWorkItemManager() {
        return null;
    }

    @Override
    public ProcessInstance startProcess(final String s, final CorrelationKey correlationKey, final Map<String, Object> map) {
        return null;
    }

    @Override
    public ProcessInstance createProcessInstance(final String s, final CorrelationKey correlationKey, final Map<String, Object> map) {
        return null;
    }

    @Override
    public ProcessInstance getProcessInstance(final CorrelationKey correlationKey) {
        return null;
    }
}

@@ -2127,32 +2127,207 @@
 rn null;%0A    %7D%0A%0A
+    @Override public ProcessInstance startProcessFromNodeIds(String s, Map%3CString, Object%3E map, String... strings) %7B%0A        throw new UnsupportedOperationException();%0A    %7D%0A%0A
     @Override%0A  
@@ -3662,32 +3662,250 @@
 rn null;%0A    %7D%0A%0A
+    @Override public ProcessInstance startProcessFromNodeIds(String s, CorrelationKey correlationKey, Map%3CString, Object%3E map,%0A            String... strings) %7B%0A        throw new UnsupportedOperationException();%0A    %7D%0A%0A
     @Override%0A  

Implement newly added methods to ProcessRuntime