blob: 149bd9b100a031c8c42593795e1975fd2087c17c [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2019, 2020 CEA LIST
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* David Lopez david.lopez@cea.fr (CEA LIST)
* jeremie.tatibouet@cea.fr (CEA LIST)
*
*****************************************************************************/
package org.eclipse.papyrus.moka.engine.suml;
import java.net.URI;
import java.net.URISyntaxException;
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.papyrus.moka.engine.suml.accessor.AccessAdapterRegistry;
import org.eclipse.papyrus.moka.engine.suml.accessor.locus.FeatureValueAdapter;
import org.eclipse.papyrus.moka.engine.suml.accessor.locus.IValueConverter;
import org.eclipse.papyrus.moka.engine.suml.accessor.locus.ParameterValueAdapter;
import org.eclipse.papyrus.moka.engine.suml.loci.SUML_ExecutionFactory;
import org.eclipse.papyrus.moka.engine.suml.opaquebehaviors.SUMLScriptExecutionFactory;
import org.eclipse.papyrus.moka.engine.suml.tasks.SUMLTaskExecutionFactory;
import org.eclipse.papyrus.moka.engine.uml.UMLExecutionEngine;
import org.eclipse.papyrus.moka.fuml.loci.ILocus;
import org.eclipse.papyrus.moka.fuml.tasks.IUMLTaskExecutionFactory;
import org.eclipse.papyrus.moka.kernel.engine.EngineConfiguration;
import org.eclipse.papyrus.moka.pscs.loci.CS_Executor;
import org.eclipse.papyrus.moka.pssm.loci.SM_Locus;
public class SUMLExecutionEngine extends UMLExecutionEngine {
@Override
public ILocus createLocus() {
ILocus locus = new SM_Locus();
locus.setExecutor(new CS_Executor());
locus.setFactory(new SUML_ExecutionFactory());
return locus;
}
@Override
public void init(EngineConfiguration<?> configuration, SubMonitor monitor) {
super.init(configuration, monitor);
//Register the used component/value type
AccessAdapterRegistry.getInstance().registerAdapter(ParameterValueAdapter.class);
AccessAdapterRegistry.getInstance().registerAdapter(FeatureValueAdapter.class);
AccessAdapterRegistry.getInstance().registerConverter(IValueConverter.class);
ScriptExecutionFactoryRegistry.getInstance().setFactory(new SUMLScriptExecutionFactory());
BodyScriptFactoryRegistry registry = BodyScriptFactoryRegistry.getInstance();
URI modelURI = null;
try {
modelURI = new URI(configuration.getModelURI().toString());
} catch (URISyntaxException e) {
e.printStackTrace();
}
//Init factories
for( String k : registry.getRegisteredLanguages())
registry.getBodyScriptFactoryFor(k).configure(modelURI);
}
@Override
protected IUMLTaskExecutionFactory createUMLTaskFactory() {
return new SUMLTaskExecutionFactory(controller.getExecutionLoop());
}
@Override
protected void dispose(SubMonitor monitor) {
super.dispose(monitor);
BodyScriptFactoryRegistry.getInstance().terminateEngines();
}
}