@Test
  public void testExecute() throws Exception {
    final Configuration config = configurationFactory.getConfig(getFile(BASE_DIR + "config.yaml"));
    final Template template = config.getTemplate("main");
    PJsonObject requestData = loadJsonRequestData();
    Values values =
        new Values(
            requestData,
            template,
            this.parser,
            getTaskDirectory(),
            this.httpRequestFactory,
            new File("."));

    this.forkJoinPool.invoke(template.getProcessorGraph().createTask(values));

    @SuppressWarnings("unchecked")
    List<URI> layerGraphics = (List<URI>) values.getObject("layerGraphics", List.class);
    assertEquals(1, layerGraphics.size());

    //        Files.copy(new File(layerGraphics.get(0)), new File(TMP,
    // getClass().getSimpleName()+".tiff"));
    new ImageSimilarity(new File(layerGraphics.get(0)), 2)
        .assertSimilarity(getFile(BASE_DIR + "expectedSimpleImage.tiff"), 0);
  }
  @Test
  public void testBasicTableProperties() throws Exception {
    final String baseDir = BASIC_BASE_DIR;

    final Configuration config = configurationFactory.getConfig(getFile(baseDir + "config.yaml"));
    final Template template = config.getTemplate("main");
    PJsonObject requestData = loadJsonRequestData(baseDir);
    Values values =
        new Values(
            requestData,
            template,
            parser,
            getTaskDirectory(),
            this.httpRequestFactory,
            new File("."));
    forkJoinPool.invoke(template.getProcessorGraph().createTask(values));

    final JRMapCollectionDataSource tableDataSource =
        values.getObject("table", JRMapCollectionDataSource.class);

    int count = 0;
    while (tableDataSource.next()) {
      count++;
    }

    assertEquals(2, count);
  }
  @Test
  public void testParsableByValues() throws Exception {
    final Configuration config = configurationFactory.getConfig(getFile(BASE_DIR + "config.yaml"));
    PJsonObject requestData = loadJsonRequestData();

    Template template = config.getTemplate("main");
    Values values =
        new Values(
            requestData,
            template,
            this.parser,
            config.getDirectory(),
            httpClientFactory,
            config.getDirectory());

    assertTrue(values.getBoolean("field1"));
    assertFalse(values.getBoolean("field2"));
    assertFalse(values.getBoolean("field3"));

    JSONObject field2Config =
        AbstractAttributeTest.getClientConfig(template.getAttributes().get("field2"), template);
    assertFalse(field2Config.has(ReflectiveAttribute.JSON_ATTRIBUTE_DEFAULT));

    JSONObject field3Config =
        AbstractAttributeTest.getClientConfig(template.getAttributes().get("field3"), template);
    assertTrue(field3Config.has(ReflectiveAttribute.JSON_ATTRIBUTE_DEFAULT));
    assertFalse(field3Config.getBoolean(ReflectiveAttribute.JSON_ATTRIBUTE_DEFAULT));
  }
  @Test(expected = IllegalArgumentException.class)
  public void testGeoIllegalFileUrl2() throws Exception {
    final Configuration configuration = new Configuration();
    configuration.setConfigurationFile(File.createTempFile("xyz", ".yaml"));

    Template template = new Template();
    template.setConfiguration(configuration);

    GeotiffLayer.GeotiffParam param = new GeotiffLayer.GeotiffParam();
    param.url =
        "file://../" + CreateMapProcessorFlexibleScaleBBoxGeoJsonTest.BASE_DIR + "/geojson.json";
    new GeotiffLayer.Plugin().parse(template, param);
  }
  @Test(expected = IllegalFileAccessException.class)
  public void testGeoIllegalFileUrl() throws Exception {
    final File file =
        AbstractMapfishSpringTest.getFile(
            CreateMapProcessorFlexibleScaleAndCenterGeoTiffTest.class,
            CreateMapProcessorFlexibleScaleAndCenterGeoTiffTest.BASE_DIR + "sampleGeoTiff.tif");
    final Configuration configuration = new Configuration();
    configuration.setConfigurationFile(File.createTempFile("xyz", ".yaml"));

    Template template = new Template();
    template.setConfiguration(configuration);

    GeotiffLayer.GeotiffParam param = new GeotiffLayer.GeotiffParam();
    param.url = file.toURI().toURL().toString();
    new GeotiffLayer.Plugin().parse(template, param);
  }