/******************************************************************************* * Copyright (c) 2005, 2007 committers of openArchitectureWare and others. * 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: * committers of openArchitectureWare - initial API and implementation *******************************************************************************/ package org.eclipse.xtend.expression; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.mwe.core.WorkflowComponent; import org.eclipse.emf.mwe.core.ao.AbstractWorkflowAdvice; import org.eclipse.emf.mwe.core.issues.Issues; import org.eclipse.xtend.expression.AbstractExpressionsUsingWorkflowComponent.GlobalVarDef; import org.eclipse.xtend.typesystem.MetaModel; /** * Base class for workflow advices for components which use expressions. * * @author Karsten Thoms * @since 4.3.1 */ public abstract class AbstractExpressionsUsingWorkflowAdvice extends AbstractWorkflowAdvice { protected final List<MetaModel> metaModels = new ArrayList<MetaModel>(); private List<GlobalVarDef> globalVarDefs = new ArrayList<GlobalVarDef>(); /** * Adds a metamodel. * * @param metaModel * the metamodel. */ public void addMetaModel(final MetaModel metaModel) { assert metaModel != null; metaModels.add(metaModel); } /** * Adds a global variable definition. * * @param def * the definition */ public void addGlobalVarDef(GlobalVarDef def) { globalVarDefs.add(def); } /** * @see org.eclipse.emf.mwe.workflow.ao.AbstractWorkflowAdvice#weave(org.eclipse.emf.mwe.workflow.WorkflowComponent, * org.eclipse.emf.mwe.workflow.issues.Issues) */ @Override public void weave(WorkflowComponent c, Issues issues) { if (!(c instanceof AbstractExpressionsUsingWorkflowComponent)) { issues.addError(this, "advice target is not a expression based WorkflowComponent component."); } else { AbstractExpressionsUsingWorkflowComponent wc = (AbstractExpressionsUsingWorkflowComponent) c; for (MetaModel metamodel : metaModels) { wc.addMetaModel(metamodel); } for (GlobalVarDef globalVar : globalVarDefs) { wc.addGlobalVarDef(globalVar); } } } }