[Mondrian] Proposal for adding result post processor extension tospi

Ajit Vasudeo Joglekar ajogleka at thoughtworks.com
Thu Oct 11 02:52:48 EDT 2007


We are using XMLA in the deployment scenario. This is what we have done to 
post process the rolap result in xmla pipeline

- Extend XmlaServlet
        Override "protected XmlaHandler getXmlaHandler()" to return our 
own XmlaHandler

- Extend XmlaHandler
        Override "protected Connection getConnection(final 
DataSourcesConfig.Catalog catalog, final Role role, final String roleName) 
throws XmlaException" to return our own RolapConnection

- Implement Connection, delegate to RolapConnection
        Wrap "public Result execute(Query query)" to return our own 
Result. Delegate all other method calls to RolapConnection. 

- Extend ResultBase to do the Result post processing as required. Use in 
the Connection execute method

- Define the classes that need to access RolapCell (package visibility) in 
package mondrian.rolap

- Use reflection to invoke getMembers on RolapCell. Required to determine 
whether the cell value is a result of literal calculated member evaluation

This takes care of the post processing the result in Xmla pipeline. We 
also use Mdx servlet in our development setup for simplifying the 
development cycle. We will need to handle the post processing separately 
for this

In the post I mentioned about removing final

        protected final Axis[] axes; // remove final 
This is not required

It doesn't feel very clean the way we have made changes from the end of 
the xmla processing pipeline, added the new classes in mondrian.rolap 
package and used reflection in one case. It will be much simpler and 
cleaner if we could intercept the result and change visibility, 
accessibility of few things. Hence the proposal. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20071011/9cf42736/attachment.html 

More information about the Mondrian mailing list