package org.mapfish.print.processor.http; import jsr166y.ForkJoinPool; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.mapfish.print.AbstractMapfishSpringTest; import org.mapfish.print.attribute.NorthArrowAttribute; import org.mapfish.print.attribute.map.MapAttribute; import org.mapfish.print.config.Configuration; import org.mapfish.print.config.ConfigurationFactory; import org.mapfish.print.config.Template; import org.mapfish.print.http.ConfigFileResolvingHttpRequestFactory; import org.mapfish.print.http.MfClientHttpRequestFactoryImpl; import org.mapfish.print.output.Values; import org.mapfish.print.processor.ProcessorDependencyGraph; import org.mapfish.print.processor.ProcessorGraphNode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import java.util.List; import static org.junit.Assert.assertEquals; @ContextConfiguration(locations = { "classpath:org/mapfish/print/processor/http/map-uri/map-uri-228-bug-fix-processor-application-context.xml" }) public class MapUriBug228ProcessorTest extends AbstractMapfishSpringTest { @Autowired ConfigurationFactory configurationFactory; @Autowired MfClientHttpRequestFactoryImpl httpClientFactory; @Autowired ForkJoinPool forkJoinPool; @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); protected String baseDir() { return "map-uri"; } @Test @DirtiesContext public void bug228FixMapUri() throws Exception { this.configurationFactory.setDoValidation(false); final Configuration config = configurationFactory.getConfig(getFile(baseDir() + "/map-uri-228-bug-fix-config.yaml")); final Template template = config.getTemplate("main"); ConfigFileResolvingHttpRequestFactory requestFactory = new ConfigFileResolvingHttpRequestFactory(this.httpClientFactory, config); ProcessorDependencyGraph graph = template.getProcessorGraph(); List<ProcessorGraphNode> roots = graph.getRoots(); assertEquals(1, roots.size()); Values values = new Values(); values.put(Values.CLIENT_HTTP_REQUEST_FACTORY_KEY, new MfClientHttpRequestFactoryProvider(requestFactory)); values.put(Values.TASK_DIRECTORY_KEY, temporaryFolder.getRoot()); values.put(Values.VALUES_KEY, values); MapAttribute.MapAttributeValues map = getMapValue(template); values.put("map", map); NorthArrowAttribute.NorthArrowAttributeValues northArrow = getNorthArrowValue(template); values.put("northArrow", northArrow); forkJoinPool.invoke(graph.createTask(values)); } private NorthArrowAttribute.NorthArrowAttributeValues getNorthArrowValue(Template template) { NorthArrowAttribute northArrowAttribute = new NorthArrowAttribute(); northArrowAttribute.setSize(64); NorthArrowAttribute.NorthArrowAttributeValues value = northArrowAttribute.createValue(template); value.graphic = "NorthArrow.png"; return value; } private MapAttribute.MapAttributeValues getMapValue(Template template) { MapAttribute mapAttribute = new MapAttribute(); mapAttribute.setWidth(500); mapAttribute.setHeight(500); MapAttribute.MapAttributeValues value = mapAttribute.createValue(template); value.dpi = 72; return value; } }