package org.mapfish.print.processor.jasper; import com.codahale.metrics.MetricRegistry; import com.google.common.base.Predicate; import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import org.junit.Test; import org.mapfish.print.AbstractMapfishSpringTest; import org.mapfish.print.config.Configuration; import org.mapfish.print.config.ConfigurationFactory; import org.mapfish.print.config.Template; import org.mapfish.print.processor.Processor; import org.mapfish.print.processor.ProcessorDependency; import org.mapfish.print.processor.ProcessorDependencyGraph; import org.mapfish.print.processor.ProcessorGraphNode; import org.springframework.beans.factory.annotation.Autowired; import java.io.File; import java.util.Collection; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.annotation.Nonnull; import static org.junit.Assert.assertEquals; public class MergeDataSourceProcessorIntegrationTest extends AbstractMapfishSpringTest { private static final Predicate<? super ProcessorGraphNode> FIND_MERGE_PROCESSOR = new Predicate<ProcessorGraphNode>() { @Override public boolean apply(@Nonnull ProcessorGraphNode input) { return input.getProcessor() instanceof MergeDataSourceProcessor; } }; @Autowired private ConfigurationFactory configurationFactory; @Test public void testCreateDependencies() throws Exception { final File configFile = getFile("merge-data-sources/config.yaml"); final Configuration config = configurationFactory.getConfig(configFile); final Template template = config.getTemplate("A4 portrait"); final ProcessorDependencyGraph processorGraph = template.getProcessorGraph(); final List<ProcessorGraphNode> roots = processorGraph.getRoots(); assertEquals(0, Collections2.filter(roots, FIND_MERGE_PROCESSOR).size()); assertEquals(3, count(processorGraph.toString(), " +-- MergeDataSourceProcessor")); MergeDataSourceProcessor mergeDataSourceProcessor = null; List<ProcessorGraphNode<Object, Object>> allNodes = Lists.newArrayList(); for (Processor<?, ?> processor : processorGraph.getAllProcessors()) { if (processor instanceof MergeDataSourceProcessor) { mergeDataSourceProcessor = (MergeDataSourceProcessor) processor; } else { allNodes.add(new ProcessorGraphNode(processor, new MetricRegistry())); } } Collection<String> result = mergeDataSourceProcessor.getDependencies(); assertEquals(3, result.size()); } private int count(String string, String toFind) { final Matcher matcher = Pattern.compile(Pattern.quote(toFind)).matcher(string); int count = 0; while(matcher.find()) { count += 1; } return count; } }