blob: 82cf3d41a90344547fe4b251630d14bee8d9f370 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 The University of York.
* 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/
*
* Contributors:
* Louis Rose - initial API and implementation
******************************************************************************/
package org.eclipse.epsilon.egx.engine.test.acceptance.util;
import java.net.URI;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.epsilon.egl.EglFileGeneratingTemplateFactory;
import org.eclipse.epsilon.egl.EglTemplate;
import org.eclipse.epsilon.egl.exceptions.EglRuntimeException;
import org.eclipse.epsilon.egl.spec.EglTemplateSpecification;
public class VirtualTemplateFactory extends EglFileGeneratingTemplateFactory {
private final Map<String, String> virtualTemplates = new HashMap<>();
private final VirtualTemplateLedger ledger = new VirtualTemplateLedger();
public void addVirtualTemplate(String path, String code) {
virtualTemplates.put(path, code);
}
@Override
public EglTemplate load(URI resource) throws EglRuntimeException {
String relativePath = root.relativize(resource).toString();
if (virtualTemplates.containsKey(relativePath)) {
return this.load(virtualTemplates.get(relativePath), resource);
} else {
return super.load(resource);
}
}
@Override
protected EglTemplate createTemplate(EglTemplateSpecification spec) throws Exception {
return new VirtualTemplate(ledger, spec, context, getOutputRootOrRoot(), outputRootPath);
}
public Collection<String> getOutputFiles() {
return ledger.getOutputFiles();
}
public Object getContentFor(String path) {
return ledger.getContentFor(path);
}
}