use of org.craftercms.studio.api.v1.asset.processing.ProcessorPipelineConfiguration in project studio by craftercms.
the class AssetProcessorPipelineImplTest method testProcessNewOutputKeepOriginal.
@Test
public void testProcessNewOutputKeepOriginal() throws Exception {
ProcessorPipelineConfiguration config = createPipelineConfig(true, SAME_INPUT_AS_OUTPUT_PROCESSOR_TYPE, RANDOM_OUTPUT_PROCESSOR_TYPE);
Path inputFile = createInputFile();
Asset input = new Asset(INPUT_REPO_PATH, inputFile);
List<Asset> outputs = pipeline.processAsset(config, input);
assertNotNull(outputs);
assertEquals(2, outputs.size());
assertEquals(outputs.get(0).getRepoPath(), input.getRepoPath());
assertEquals(outputs.get(0).getFilePath(), input.getFilePath());
assertNotEquals(outputs.get(1).getRepoPath(), input.getRepoPath());
assertNotEquals(outputs.get(1).getFilePath(), input.getFilePath());
}
use of org.craftercms.studio.api.v1.asset.processing.ProcessorPipelineConfiguration in project studio by craftercms.
the class AssetProcessorPipelineImplTest method testProcessMultipleNewOutputsDropOriginal.
@Test
public void testProcessMultipleNewOutputsDropOriginal() throws Exception {
ProcessorPipelineConfiguration config = createPipelineConfig(false, RANDOM_OUTPUT_PROCESSOR_TYPE, RANDOM_OUTPUT_PROCESSOR_TYPE);
Path inputFile = createInputFile();
Asset input = new Asset(INPUT_REPO_PATH, inputFile);
List<Asset> outputs = pipeline.processAsset(config, input);
assertNotNull(outputs);
assertEquals(outputs.size(), 2);
assertNotEquals(outputs.get(0).getRepoPath(), input.getRepoPath());
assertNotEquals(outputs.get(0).getFilePath(), input.getFilePath());
assertNotEquals(outputs.get(1).getRepoPath(), input.getRepoPath());
assertNotEquals(outputs.get(1).getFilePath(), input.getFilePath());
}
use of org.craftercms.studio.api.v1.asset.processing.ProcessorPipelineConfiguration in project studio by craftercms.
the class AssetProcessorPipelineImplTest method createPipelineConfig.
private ProcessorPipelineConfiguration createPipelineConfig(boolean keepOriginal, String... processorTypes) {
List<ProcessorConfiguration> processorsConfig = new ArrayList<>(processorTypes.length);
for (String processorType : processorTypes) {
ProcessorConfiguration processorConfig = new ProcessorConfiguration();
processorConfig.setType(processorType);
processorsConfig.add(processorConfig);
}
ProcessorPipelineConfiguration config = new ProcessorPipelineConfiguration();
config.setKeepOriginal(keepOriginal);
config.setInputPathPattern(INPUT_PATH_PATTERN);
config.setProcessorsConfig(processorsConfig);
return config;
}
use of org.craftercms.studio.api.v1.asset.processing.ProcessorPipelineConfiguration in project studio by craftercms.
the class AssetProcessingConfigReaderImpl method readPipelineConfig.
@SuppressWarnings("unchecked")
private ProcessorPipelineConfiguration readPipelineConfig(HierarchicalConfiguration pipelineConfig) throws AssetProcessingConfigurationException {
ProcessorPipelineConfiguration mappedPipelineConfig = new ProcessorPipelineConfiguration();
mappedPipelineConfig.setInputPathPattern(getRequiredStringProperty(pipelineConfig, INPUT_PATH_PATTERN_CONFIG_KEY));
mappedPipelineConfig.setKeepOriginal(pipelineConfig.getBoolean(KEEP_ORIGINAL_CONFIG_KEY, false));
List<HierarchicalConfiguration> processorsConfig = getRequiredConfigurationsAt(pipelineConfig, PROCESSORS_CONFIG_KEY);
List<ProcessorConfiguration> mappedProcessorsConfig = new ArrayList<>(processorsConfig.size());
for (HierarchicalConfiguration processorConfig : processorsConfig) {
mappedProcessorsConfig.add(readProcessorConfig(processorConfig));
}
mappedPipelineConfig.setProcessorsConfig(mappedProcessorsConfig);
return mappedPipelineConfig;
}
use of org.craftercms.studio.api.v1.asset.processing.ProcessorPipelineConfiguration in project studio by craftercms.
the class AssetProcessorPipelineImpl method processAsset.
@Override
public List<Asset> processAsset(ProcessorPipelineConfiguration config, Asset input) throws AssetProcessingException {
Matcher inputPatMatcher = matchForProcessing(config, input);
if (inputPatMatcher != null) {
Set<Asset> outputs = new LinkedHashSet<>();
Asset originalInput = input;
Map<ProcessorConfiguration, AssetProcessor> processors = getProcessors(config);
if (config.isKeepOriginal()) {
outputs.add(originalInput);
}
for (Map.Entry<ProcessorConfiguration, AssetProcessor> entry : processors.entrySet()) {
Asset output = entry.getValue().processAsset(entry.getKey(), inputPatMatcher, input);
outputs.add(output);
input = output;
}
if (!config.isKeepOriginal() && outputs.contains(originalInput)) {
outputs.remove(originalInput);
}
return new ArrayList<>(outputs);
} else {
return Collections.emptyList();
}
}
Aggregations