 /**
 ********************************************************************************
 * Copyright (c) 2018 Robert Bosch GmbH.
 * 
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 * 
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors:
 *     Robert Bosch GmbH - initial API and implementation
 ********************************************************************************
 */

package module;

import org.eclipse.app4mc.transformation.extensions.AbstractTransformationInjectorModule;
import org.eclipse.app4mc.transformation.extensions.base.templates.Model2TextRootTransformer;

import templates.AmaltheaModel2TextTransformer;

public class DefaultM2TInjectorModule extends AbstractTransformationInjectorModule {


	@Override
	protected void initializeBaseConfiguration() {
		bind(Model2TextRootTransformer.class).to(AmaltheaModel2TextTransformer.class);
	}

	@Override
	protected void initializeTransformerObjects() {
		// TODO Auto-generated method stub
		
	}

}
