private void writeFormattedResources(Writer writer, UrlMode urlMode, Predicate<Container> predicate,
List<WebResourceFormatter> webResourceFormatters, boolean writingPrefetchLinks) {
List<Container> localCopyOfResources = new LinkedList<Container>();
for (Container resource : resources) {
if (predicate.apply(resource)) {
localCopyOfResources.add(resource);
}
}
boolean isDeferJsAttributeEnabled = config.isDeferJsAttributeEnabled();
for (final WebResourceFormatter formatter : webResourceFormatters) {
for (final Iterator<Container> iter = localCopyOfResources.iterator(); iter.hasNext(); ) {
final Container resource = iter.next();
if (formatter.matches(resource.getResourceUrl().getName())) {
writeResourceTag(urlMode, resource, formatter, writer, isDeferJsAttributeEnabled, writingPrefetchLinks);
iter.remove();
}
}
}
for (Container resource : localCopyOfResources) {
writeContentAndSwallowErrors(writer, "<!-- Error loading resource \"",
resource.getResourceUrl().getKey(),
"\". No resource formatter matches \"", resource.getResourceUrl().getName(), "\" -->\n");
}
}