@Override
protected ProcessorResult processElement(Arguments arguments, Element element) {
String name = element.getAttributeValue("name");
String mappingPrefix = element.getAttributeValue("mapping-prefix");
NestableNode parent = element.getParent();
List<String> files = new ArrayList<String>();
for (String file : element.getAttributeValue("files").split(",")) {
files.add(file.trim());
}
if (getBundleEnabled()) {
String versionedBundle = bundlingService.getVersionedBundleName(name);
if (StringUtils.isBlank(versionedBundle)) {
BroadleafResourceHttpRequestHandler reqHandler = getRequestHandler(name, arguments);
try {
versionedBundle = bundlingService.registerBundle(name, files, reqHandler);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Expression expression = (Expression) StandardExpressions.getExpressionParser(arguments.getConfiguration())
.parseExpression(arguments.getConfiguration(), arguments, "@{'" + mappingPrefix + versionedBundle + "'}");
String value = (String) expression.execute(arguments.getConfiguration(), arguments);
Element e = getElement(value);
parent.insertAfter(element, e);
} else {
List<String> additionalBundleFiles = bundlingService.getAdditionalBundleFiles(name);
if (additionalBundleFiles != null) {
files.addAll(additionalBundleFiles);
}
for (String file : files) {
file = file.trim();
Expression expression = (Expression) StandardExpressions.getExpressionParser(arguments.getConfiguration())
.parseExpression(arguments.getConfiguration(), arguments, "@{'" + mappingPrefix + file + "'}");
String value = (String) expression.execute(arguments.getConfiguration(), arguments);
Element e = getElement(value);
parent.insertBefore(element, e);
}
}
parent.removeChild(element);
return ProcessorResult.OK;
}