}
}
}
final Map objectModel = env.getObjectModel();
final ProcessingPipeline pipeline = context.getProcessingPipeline();
// Perform link translation if requested
if (objectModel.containsKey(Constants.LINK_OBJECT)) {
pipeline.addTransformer("<translator>", null, Parameters.EMPTY_PARAMETERS, Parameters.EMPTY_PARAMETERS);
}
if (objectModel.containsKey(Constants.LINK_COLLECTION_OBJECT) && env.isExternal()) {
pipeline.addTransformer("<gatherer>", null, Parameters.EMPTY_PARAMETERS, Parameters.EMPTY_PARAMETERS);
}
SitemapExecutor.PipelineComponentDescription desc = new SitemapExecutor.PipelineComponentDescription();
desc.type = this.serializerName;
desc.source = source.resolve(context, objectModel);
desc.parameters = VariableResolver.buildParameters(this.parameters, context, objectModel);
desc.hintParameters = this.pipelineHints == null
? Parameters.EMPTY_PARAMETERS
: VariableResolver.buildParameters(this.pipelineHints, context, objectModel);
desc.mimeType = this.mimeType.resolve(context, objectModel);
// inform executor
desc = this.executor.addSerializer(this, objectModel, desc);
pipeline.setSerializer(desc.type,
desc.source,
desc.parameters,
desc.hintParameters,
desc.mimeType);
// Set status code *only* if there is one - do not override status
// code if it was set elsewhere.
String statusCodeString = this.statusCode.resolve(context, objectModel);
if (statusCodeString != null) {
int statusCodeInt = DEFAULT_STATUS_CODE;
try {
statusCodeInt = Integer.parseInt(statusCodeString);
} catch (NumberFormatException e) {
getLogger().warn("Status code value '" + statusCodeString + "' is not an integer. " +
"Using " + DEFAULT_STATUS_CODE + " instead.", e);
}
if (statusCodeInt >= 0) {
env.setStatus(statusCodeInt);
}
}
if (!context.isBuildingPipelineOnly()) {
// Process pipeline
return pipeline.process(env);
}
// Return true : pipeline is finished.
return true;
}