/*******************************************************************************
* Copyright (c) 2011 SAP AG 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:
* SAP AG - initial API and implementation
******************************************************************************/
package com.sap.furcas.prettyprinter.stubs;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.Collections;
import org.eclipse.emf.ecore.EObject;
import com.sap.furcas.metamodel.FURCAS.TCS.ContextTemplate;
import com.sap.furcas.metamodel.FURCAS.TCS.SequenceElement;
import com.sap.furcas.metamodel.FURCAS.TCS.Template;
import com.sap.furcas.metamodel.FURCAS.textblocks.TextblocksFactory;
import com.sap.furcas.prettyprinter.Formatter;
import com.sap.furcas.prettyprinter.Formatter.FormatRequest;
import com.sap.furcas.prettyprinter.TemplateHandler;
import com.sap.furcas.prettyprinter.TextBlocksFactory;
import com.sap.furcas.prettyprinter.context.PrintContext;
import com.sap.furcas.prettyprinter.context.PrintResult;
import com.sap.furcas.prettyprinter.context.PrintResult.LeafResult;
import com.sap.furcas.prettyprinter.context.PrintResult.ResultContainer;
import com.sap.furcas.prettyprinter.exceptions.SyntaxMismatchException;
import com.sap.furcas.prettyprinter.policy.PrintPolicy;
/**
* @author Stephan Erb
*
*/
public class MockContextTemplateHandler extends TemplateHandler {
private final Template hardcodedTemplate;
public MockContextTemplateHandler(TextBlocksFactory factory, Template hardcodedTemplate) {
super(factory, new Formatter(factory), /*syntax lookuk*/ null);
this.hardcodedTemplate = hardcodedTemplate;
}
@Override
public PrintResult serializeContextTemplate(EObject modelElement, ContextTemplate template, SequenceElement seqElem,
PrintContext context, PrintPolicy policy) throws SyntaxMismatchException {
assertNotNull(modelElement);
assertSame("Template returned by the template finder expected", hardcodedTemplate, template);
assertTrue("Template should match", template.getMetaReference().isInstance(modelElement));
ResultContainer subResult = new ResultContainer(Collections.<FormatRequest>emptyList());
subResult.hasSyntacticContribution(true);
return new LeafResult(TextblocksFactory.eINSTANCE.createTextBlock(), subResult, Collections.<FormatRequest>emptyList());
}
}