String requestPathWithSkinVariable = "packed/" + packFileName;
if (skinName != null && skinName.length() > 0) {
requestPathWithSkinVariable = ResourceSkinUtils.prefixPathWithSkinPlaceholder(requestPathWithSkinVariable);
}
String requestPathWithSkin = Constants.SLASH_JOINER.join(skinName, "packed", packFileName);
ResourceProcessor matchingProcessor = getMatchingResourceProcessor(requestPathWithSkin);
OutputStream outputStream;
synchronized (PACKED) {
String packagingCacheKey = extension + ":" + skinName;
if (!PACKED.containsKey(packagingCacheKey)) {
File outFile = createOutputFile(requestPathWithSkin);
log.debug("Opening shared output stream for " + outFile);
outputStream = Files.asByteSink(outFile, FileWriteMode.APPEND).openStream();
PACKED.put(packagingCacheKey, outputStream);
}
outputStream = PACKED.get(packagingCacheKey);
}
synchronized (outputStream) {
matchingProcessor.process(requestPathWithSkin, resource.getInputStream(), outputStream,
false);
}
processedResources.put(ResourceUtil.getResourceQualifier(resource), requestPathWithSkinVariable);
packedResources.add(resourceKey);