[
https://issues.apache.org/jira/browse/JS2-1238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12989903#comment-12989903
]
Woonsan Ko commented on JS2-1238:
---------------------------------
In configurations we already use pipeline bean IDs instead of their names. So,
I'll keep those as it is.
I've committed my patch, the interface looks like this:
- Pipeline getPipelineByMappedPath(String mappedPath);
- Pipeline getPipelineById(String id);
- String getMappedPathByPipelineId(String pipelineId);
- String [] getMappedPathsByPipelineId(String pipelineId);
So, for example, if a site has a custom filter which is responsible for
forwarding to one of portal pipelines, it can now use PipelineMapper to find
physical servlet mapping paths instead of hard-coded paths.
Here's an example code:
import org.apache.jetspeed.engine.JetspeedEngineConstants;
import org.apache.jetspeed.pipeline.PipelineMapper;
PipelineMapper mapper = (PipelineMapper)
Jetspeed.getComponentManager().getComponent("pipeline-mapper");
String defaultPipelineId =
Jetspeed.getConfiguration().getString(JetspeedEngineConstants.PIPELINE_DEFAULT);
//defaultPipelineId = "jetui-pipeline";
String pipelinePath = mapper.getMappedPathByPipelineId(defaultPipelineId);
servletContext.getRequestDispatcher(pipelinePath +
"/default-page.psml").forward(req, res);
Regards,
Woonsan
> Pipeline mapper needed to find mapping path by a pipeline name
> --------------------------------------------------------------
>
> Key: JS2-1238
> URL: https://issues.apache.org/jira/browse/JS2-1238
> Project: Jetspeed 2
> Issue Type: Improvement
> Components: Components Core
> Affects Versions: 2.2.1
> Reporter: Woonsan Ko
> Assignee: Woonsan Ko
> Priority: Minor
> Fix For: 2.2.2
>
>
> Currently we have a configuration for the default pipeline in
> jetspeed.properties as follows:
> pipeline.default = jetspeed-pipeline
> Also, the default pipeline name is used in JetspeedEngine to find a default
> pipeline component when there's no servlet path mapping is found.
> Obviously, this is a good feature because we don't have to stick to physical
> servlet paths.
> I think this should be extended as a separate component like PipelineMapper
> to allow some custom servlet filters to leverage it.
> For example, when a custom servlet filter is responsible for choosing a
> pipeline for the request and forwarding the request, then the servlet filter
> should be able to find the servlet path mapped to a pipeline because the
> servlet filter needs to use
> ServletContext.getRequestDispatcher(contextRelativePath).forward().
> Therefore, I think we can add PipelineMapper component like this:
> interface PipelineMapper {
>
> /** Finds pipeline which bean id is equals to pipelineId. */
> Pipeline getPipelineById(String pipelineId); // ex)
> getPipelineById("jetspeed-pipeline");
>
> /** Finds pipeline which name is equals to pipelineName. */
> Pipeline getPipelineByName(String pipelineName); // ex)
> getPipelineByName("JetspeedPipeline")
>
> /** Find the servlet mapping path by pipeline bean id. */
> String getPathByPipelineId(String pipelineId); // ex)
> getPathByPipelineId("jetspeed-pipeline");
>
> /** Find the servlet mapping path by pipeline name. */
> String getPathByPipelineName(String pipelineId); // ex)
> getPathByPipelineName("JetspeedPipeline");
>
> }
> FYI, personally, I think it's better to use pipeline name consistently, but
> it is necessary to keep operations with pipeline bean IDs for backward
> compatibility.
> This could modify pipelines.xml slightly by wrapping the existing
> 'pipeline-map' bean, and add one pair of interface/default impl.
> If there's any objection, please let me know.
> Regards,
> Woonsan
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]