private ProcessorOptions createTypeMerger(final Type type) { final Map<String, Object> options = new HashMap<String, Object>(); options.put("type", type.name()); return new ProcessorOptions("merge", this.processorFactory.getProcessor("merge"), options); }
private void execute0_0(final VFS vfs, final Resources resources, final List<ProcessorOptions> entries) throws IOException { for (final ProcessorOptions entry : entries) { for (final Type type : Type.values()) { final List<Resource> res = resources.getByType(type); if (res.size() > 0 && entry.processor.supportsType(type)) { LOGGER.info("Executing processor {} for type {}", entry.name, type); final List<Resource> results = new ArrayList<Resource>(); for (final Resource r : res) { results.add(r.apply(vfs, entry.processor, entry.options)); } resources.replace(res, results); } } } }
private Resource executeComplexMerge(final VFS vfs, final Resource resource, final Map<String, Object> options) throws IOException { final Object typeOption = options.get("type"); if (!(resource instanceof ResourceGroup) || typeOption != null && resource.getType() != Type.valueOf(typeOption.toString())) { return resource; } final ResourceGroup group = (ResourceGroup) resource; final Resource input = group.getResources().get(0); final VFile snapshot = vfs.stack(); try { final VFile target = vfs.find(input.getPath()); final Writer writer = VFSUtils.createWriter(target); try { writer.write(group.getMerger().merge(group.getResources())); } finally { IOUtils.closeQuietly(writer); } return input.getResolver().resolve(target.getPath()); } catch (final IOException e) { vfs.rollback(snapshot); throw e; } }
@Deprecated private void execute1_0(final VFS vfs, final ResourceResolver resolver, final Resources resources, final List<ProcessorOptions> entries, final Task task) throws IOException { for (final ProcessorOptions entry : entries) { for (final Type type : Type.values()) { final List<Resource> res = resources.getByType(type); if (entry.processor.supportsType(type)) { LOGGER.info("Executing processor {} for type {}", entry.name, type); final List<Resource> results = new ArrayList<Resource>(); // TODO: SourceMerger should not be required here final ResourceGroup group = new ResourceGroup(res, new SourceMerger( GlobalOptions.isSourceOnce(task))); group.apply(vfs, entry.processor, entry.options); results.addAll(group.getResources()); resources.replace(res, results); } } } }