Package mondrian.xmla
Interface XmlaRequestCallback
-
- All Known Implementing Classes:
AuthenticatingXmlaRequestCallback
public interface XmlaRequestCallback
Extract data from HTTP request, SOAP header for following XML/A request. Fill context binding with whatever data you want, then use them inXmlaServlet.handleSoapHeader(javax.servlet.http.HttpServletResponse, org.w3c.dom.Element[], byte[][], java.util.Map<java.lang.String, java.lang.Object>)
andXmlaServlet.handleSoapBody(javax.servlet.http.HttpServletResponse, org.w3c.dom.Element[], byte[][], java.util.Map<java.lang.String, java.lang.Object>)
.- Author:
- Gang Chen
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
XmlaRequestCallback.Helper
-
Field Summary
Fields Modifier and Type Field Description static String
AUTHORIZATION
static String
EXPECT
static String
EXPECT_100_CONTINUE
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description String
generateSessionId(Map<String,Object> context)
The Callback is requested to generate a sequence id string.void
init(javax.servlet.ServletConfig servletConfig)
void
postAction(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, byte[][] responseSoapParts, Map<String,Object> context)
This is called after all Mondrian processing (DISCOVER/EXECUTE) has occurred.void
preAction(javax.servlet.http.HttpServletRequest request, Element[] requestSoapParts, Map<String,Object> context)
This is called after the headers have been process but before the body (DISCOVER/EXECUTE) has been processed.boolean
processHttpHeader(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Map<String,Object> context)
Process the request header items.
-
-
-
Field Detail
-
AUTHORIZATION
static final String AUTHORIZATION
- See Also:
- Constant Field Values
-
EXPECT
static final String EXPECT
- See Also:
- Constant Field Values
-
EXPECT_100_CONTINUE
static final String EXPECT_100_CONTINUE
- See Also:
- Constant Field Values
-
-
Method Detail
-
init
void init(javax.servlet.ServletConfig servletConfig) throws javax.servlet.ServletException
- Throws:
javax.servlet.ServletException
-
processHttpHeader
boolean processHttpHeader(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Map<String,Object> context) throws Exception
Process the request header items. Specifically if present the Authorization and Expect headers. If the Authorization header is present, then the callback can validate the user/password. If authentication fails, the callback should throw an XmlaException with the correct XmlaConstants values. The XmlaRequestCallback.Helper class contains the authorizationException method that can be used by a callback to generate the XmlaException with the correct values. If the Expect header is set with "100-continue", then it is upto the callback to create the appropriate response and return false. In this case, the XmlaServlet stops processing and returns the response to the client application. To facilitate the generation of the response, the XmlaRequestCallback.Helper has the method generatedExpectResponse that can be called by the callback.Note that it is upto the XMLA client to determine whether or not there is an Expect header entry (ADOMD.NET seems to like to do this).
- Returns:
- true if XmlaServlet handling is to continue and false if there was an Expect header "100-continue".
- Throws:
Exception
-
preAction
void preAction(javax.servlet.http.HttpServletRequest request, Element[] requestSoapParts, Map<String,Object> context) throws Exception
This is called after the headers have been process but before the body (DISCOVER/EXECUTE) has been processed.- Throws:
Exception
-
generateSessionId
String generateSessionId(Map<String,Object> context)
The Callback is requested to generate a sequence id string. This sequence id was requested by the XMLA client and will be used for all subsequent communications in the Soap Header block. Implementation can returnnull
if they do not want to generate a custom session ID, in which case, the default algorithm to generate session IDs will be used.- Parameters:
context
- The context of this query.- Returns:
- An arbitrary session id to use, or
null
.
-
-