/*
* Copyright 2015 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.
*
* 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.core.common;
import java.io.Serializable;
import org.drools.core.SessionConfiguration;
import org.drools.core.impl.InternalKnowledgeBase;
import org.drools.core.impl.StatefulKnowledgeSessionImpl;
import org.drools.core.spi.FactHandleFactory;
import org.kie.api.runtime.Environment;
public class PhreakWorkingMemoryFactory implements WorkingMemoryFactory, Serializable {
private static final WorkingMemoryFactory INSTANCE = new PhreakWorkingMemoryFactory();
public static WorkingMemoryFactory getInstance() {
return INSTANCE;
}
public InternalWorkingMemory createWorkingMemory(long id, InternalKnowledgeBase kBase, SessionConfiguration config, Environment environment) {
InternalWorkingMemory cachedWm = kBase.getCachedSession(config, environment);
if (cachedWm != null) {
return cachedWm;
}
if (kBase.hasUnits()) {
throw new IllegalStateException( "Cannot create a KieSession against a KieBase with units" );
}
return new StatefulKnowledgeSessionImpl( id, kBase, true, config, environment);
}
public InternalWorkingMemory createWorkingMemory(long id, InternalKnowledgeBase kBase, FactHandleFactory handleFactory, long propagationContext, SessionConfiguration config, InternalAgenda agenda, Environment environment) {
if (kBase.hasUnits()) {
throw new IllegalStateException( "Cannot create a KieSession against a KieBase with units" );
}
return new StatefulKnowledgeSessionImpl(id, kBase, handleFactory, propagationContext, config, agenda, environment);
}
}