/******************************************************************************* * Copyright (c) 2007 Cambridge Semantics Incorporated. * 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: * Cambridge Semantics Incorporated *******************************************************************************/ package org.openanzo.glitter; import java.util.Collections; import java.util.List; import java.util.Map; import org.apache.commons.collections15.IteratorUtils; import org.openanzo.glitter.query.FunctionalPredicate; import org.openanzo.glitter.query.QueryExecutionPlan; import org.openanzo.glitter.query.SolutionGenerator; import org.openanzo.glitter.query.SolutionGeneratorFactory; import org.openanzo.glitter.query.TreeRewriter; import org.openanzo.rdf.URI; /** * Engine config not backed by a real SolutionGenerator. * * Convenience class for unit testing Glitter components up to, but not including the solution generators. * * @author Joe Betz <jpbetz@cambridgesemantics.com> * */ public class MockEngineConfig extends DefaultEngineConfig { Class<? extends QueryExecutionPlan> plan; List<TreeRewriter> rewriters; SolutionGenerator solutionGenerator; /** * Mock engine config with execution plan * * @param plan * execution plan */ public MockEngineConfig(Class<? extends QueryExecutionPlan> plan) { this(plan, null, new MockSolutionGenerator()); } MockEngineConfig(Class<? extends QueryExecutionPlan> plan, List<TreeRewriter> rewriters, SolutionGenerator solutionGenerator) { this.plan = plan; this.rewriters = rewriters; this.solutionGenerator = solutionGenerator; } @Override public Iterable<TreeRewriter> getTreeRewriters() { if (rewriters == null) return super.getTreeRewriters(); List<TreeRewriter> rewriterList = IteratorUtils.toList(super.getTreeRewriters().iterator()); rewriterList.addAll(rewriters); return rewriterList; } public Map<URI, Class<? extends FunctionalPredicate>> getFunctionalPredicates() { return Collections.emptyMap(); } public QueryExecutionPlan getQueryExecutionPlan(SolutionGenerator sg) { try { if (plan != null) return plan.newInstance(); return null; } catch (IllegalAccessException iae) { throw new RuntimeException(iae); } catch (InstantiationException iae) { throw new RuntimeException(iae); } } public SolutionGeneratorFactory getSolutionGeneratorFactory() { return new MockSolutionGeneratorFactory(solutionGenerator); } }