ProcessingPipeline produces the response for a given request. It is assembled according to the commands in the sitemap and can either - collect a
Reader
and let it produce a character stream - or connect a
Generator
with zero or more Transformer
s and a Serializer
and let them produce the byte stream. This pipeline uses SAX events for communication.
A ProcessingPipeline
is Recomposable
since the ComponentManager
used to get the generato, transformers etc. depends on the pipeline assembly engine where they are defined (i.e. a given sitemap file).
@author Carsten Ziegeler
@author Giacomo Pati
@version CVS $Id: ProcessingPipeline.java,v 1.2 2003/03/12 09:10:07 jefft Exp $
final boolean infoEnabled = getLogger().isInfoEnabled();
Map objectModel = env.getObjectModel();
// Setup aggregator
ProcessingPipeline processingPipeline = context.getProcessingPipeline();
processingPipeline.setGenerator("<aggregator>", null, Parameters.EMPTY_PARAMETERS, Parameters.EMPTY_PARAMETERS);
ContentAggregator aggregator = (ContentAggregator) processingPipeline.getGenerator();
aggregator.setRootElement(this.element.resolve(context, objectModel),
this.nsURI.resolve(context, objectModel),
this.nsPrefix.resolve(context, objectModel));
// Get actual parts, potentially filtered by the view
public final boolean invoke(Environment env, InvokeContext context)
throws Exception {
final Map objectModel = env.getObjectModel();
final ProcessingPipeline pipeline = context.getProcessingPipeline();
SitemapExecutor.PipelineComponentDescription desc = new SitemapExecutor.PipelineComponentDescription();
desc.type = this.transformerName;
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);
// inform executor
desc = this.executor.addTransformer(this, objectModel, desc);
pipeline.addTransformer(desc.type,
desc.source,
desc.parameters,
desc.hintParameters);
// Check view
if (this.views != null) {
//inform the pipeline that we have a branch point
pipeline.informBranchPoint();
String cocoonView = env.getView();
if (cocoonView != null) {
// Get view node
try {
if ( !this.internal ) {
processingResult = usedProcessor.process(newEnv);
} else {
ProcessingPipeline pp = usedProcessor.buildPipeline(newEnv);
if (pp != null) pp.release();
processingResult = pp != null;
}
} finally {
CocoonComponentManager.endProcessing(newEnv, processKey);
}
new FileSavingEnvironment(deparameterizedURI, lastModified, context,
null, parameters, links,
gatheredLinks, cliContext, null, log);
XMLConsumer consumer = new ContentHandlerWrapper(handler);
ProcessingPipeline pipeline = cocoon.buildPipeline(env);
CocoonComponentManager.enterEnvironment(env, cocoon.getComponentManager(), cocoon);
try {
pipeline.prepareInternal(env);
pipeline.process(env, consumer);
} finally {
CocoonComponentManager.leaveEnvironment();
}
// if we get here, the page was created :-)
}
}
}
Map objectModel = env.getObjectModel();
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);
}
pipeline.setSerializer(
this.serializerName,
null,
Parameters.EMPTY_PARAMETERS, // No parameters on serializers
this.pipelineHints == null
? Parameters.EMPTY_PARAMETERS
: VariableResolver.buildParameters(this.pipelineHints, context, objectModel),
this.mimeType.resolve(context, env.getObjectModel())
);
// Set status code if there is one
if (this.statusCode >= 0) {
env.setStatus(this.statusCode);
}
if (! context.isBuildingPipelineOnly()) {
// Process pipeline
return pipeline.process(env);
} else {
// Return true : pipeline is finished.
return true;
}
boolean infoEnabled = getLogger().isInfoEnabled();
Map objectModel = env.getObjectModel();
// Setup aggregator
ProcessingPipeline processingPipeline = context.getProcessingPipeline();
processingPipeline.setGenerator("<aggregator>", null, Parameters.EMPTY_PARAMETERS, Parameters.EMPTY_PARAMETERS);
ContentAggregator aggregator = (ContentAggregator)processingPipeline.getGenerator();
aggregator.setRootElement(
this.element.resolve(context, objectModel),
this.nsURI.resolve(context, objectModel),
this.nsPrefix.resolve(context, objectModel)
);
new FileSavingEnvironment(deparameterizedURI, lastModified, context,
null, parameters, links,
gatheredLinks, cliContext, null, log);
XMLConsumer consumer = new ContentHandlerWrapper(handler);
ProcessingPipeline pipeline = cocoon.buildPipeline(env);
CocoonComponentManager.enterEnvironment(env, cocoon.getComponentManager(), cocoon);
try {
pipeline.prepareInternal(env);
pipeline.process(env, consumer);
} finally {
CocoonComponentManager.leaveEnvironment();
}
// if we get here, the page was created :-)
}
}
}
Map objectModel = env.getObjectModel();
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);
}
pipeline.setSerializer(
this.serializerName,
source.resolve(context, objectModel),
VariableResolver.buildParameters(this.parameters, context, objectModel),
this.pipelineHints == null
? Parameters.EMPTY_PARAMETERS
: VariableResolver.buildParameters(this.pipelineHints, context, objectModel),
this.mimeType.resolve(context, env.getObjectModel())
);
// Set status code if there is one
if (this.statusCode >= 0) {
env.setStatus(this.statusCode);
}
if (! context.isBuildingPipelineOnly()) {
// Process pipeline
return pipeline.process(env);
} else {
// Return true : pipeline is finished.
return true;
}
final boolean infoEnabled = getLogger().isInfoEnabled();
Map objectModel = env.getObjectModel();
// Setup aggregator
ProcessingPipeline processingPipeline = context.getProcessingPipeline();
processingPipeline.setGenerator("<aggregator>", null, Parameters.EMPTY_PARAMETERS, Parameters.EMPTY_PARAMETERS);
ContentAggregator aggregator = (ContentAggregator) processingPipeline.getGenerator();
aggregator.setRootElement(this.element.resolve(context, objectModel),
this.nsURI.resolve(context, objectModel),
this.nsPrefix.resolve(context, objectModel));
// Get actual parts, potentially filtered by the view
public final boolean invoke(Environment env, InvokeContext context)
throws Exception {
Map objectModel = env.getObjectModel();
ProcessingPipeline pipeline = context.getProcessingPipeline();
pipeline.setReader(
this.readerName,
source.resolve(context, objectModel),
VariableResolver.buildParameters(this.parameters, context, objectModel),
this.mimeType.resolve(context, objectModel)
);
// Set status code if there is one
if (this.statusCode >= 0) {
env.setStatus(this.statusCode);
}
if (! context.isBuildingPipelineOnly()) {
// Process pipeline
return pipeline.process(env);
} else {
// Return true : pipeline is finished.
return true;
}
Related Classes of org.apache.cocoon.components.pipeline.ProcessingPipeline
Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.