[Mondrian] Eigenbase perforce change 14566 for review
Michele Rossi
michele.rossi at gmail.com
Thu Aug 25 16:15:55 EDT 2011
Hi,
I fixed all the exceptions raised by Perforce when attempting to check in
and I assumed they were the same checks made by the checkFile script.
Wrong assumption sorry.
Ok I will run checkFile tomorrow as soon as I get back to work (it's 22:15
here now).
thanks,
Michele
On 25 August 2011 21:29, Julian Hyde <jhyde at pentaho.com> wrote:
> Michele,
>
> Congratulations on your first check in.
>
> However, it had 17 checkFile exceptions. Can you fix today please.
>
> Julian
>
> On Aug 25, 2011, at 12:44 AM, Michele Rossi wrote:
>
> > http://p4web.eigenbase.org/@md=d&c=6PU@/14566?ac=10
> >
> > Change 14566 by mrossi at michele_mondrian on 2011/08/25 00:43:32
> >
> > MONDRIAN: fixes to xmla servlet
> >
> > Affected files ...
> >
> > ... //open/mondrian/src/main/mondrian/xmla/XmlaHandler.java#80 edit
> > ...
> //open/mondrian/src/main/mondrian/xmla/impl/DefaultXmlaServlet.java#33 edit
> > ... //open/mondrian/src/main/mondrian/xmla/impl/Olap4jXmlaServlet.java#4
> edit
> >
> > Differences ...
> >
> > ==== //open/mondrian/src/main/mondrian/xmla/XmlaHandler.java#80 (ktext)
> ====
> >
> > 2c2
> > < // $Id: //open/mondrian/src/main/mondrian/xmla/XmlaHandler.java#79 $
> > ---
> >> // $Id: //open/mondrian/src/main/mondrian/xmla/XmlaHandler.java#80 $
> > 27a28,29
> >> import java.lang.reflect.InvocationTargetException;
> >> import java.lang.reflect.UndeclaredThrowableException;
> > 41c43
> > < * @version $Id:
> //open/mondrian/src/main/mondrian/xmla/XmlaHandler.java#79 $
> > ---
> >> * @version $Id:
> //open/mondrian/src/main/mondrian/xmla/XmlaHandler.java#80 $
> > 75a78,102
> >> } catch (UndeclaredThrowableException ute) {
> >> //
> >> // Note: this is necessary because we use a dynamic proxy for
> the
> >> // connection.
> >> // I could not catch and un-wrap the Undeclared Throwable
> within
> >> // the proxy.
> >> // The exception comes out here and I couldn't find any
> better
> >> // ways to deal with it.
> >> //
> >> // The undeclared throwable contains an Invocation Target
> Exception
> >> // which in turns contains the real exception thrown by the
> "unwrap"
> >> // method, for example OlapException.
> >> //
> >>
> >> Throwable cause = ute.getCause();
> >> if (cause instanceof InvocationTargetException) {
> >> cause = cause.getCause();
> >> }
> >>
> >> // this maintains the original behaviour: don't catch
> exceptions
> >> // that are not subclasses of SQLException
> >>
> >> if (! (cause instanceof SQLException)) {
> >> throw ute;
> >> }
> >
> > ====
> //open/mondrian/src/main/mondrian/xmla/impl/DefaultXmlaServlet.java#33
> (ktext) ====
> >
> > 2c2
> > < // $Id:
> //open/mondrian/src/main/mondrian/xmla/impl/DefaultXmlaServlet.java#32 $
> > ---
> >> // $Id:
> //open/mondrian/src/main/mondrian/xmla/impl/DefaultXmlaServlet.java#33 $
> > 12c12,18
> > < import java.io.*;
> > ---
> >> import java.io.ByteArrayInputStream;
> >> import java.io.ByteArrayOutputStream;
> >> import java.io.IOException;
> >> import java.io.InputStream;
> >> import java.io.OutputStream;
> >> import java.io.StringWriter;
> >> import java.io.UnsupportedEncodingException;
> > 14,15c20,24
> > < import java.nio.channels.*;
> > < import java.util.*;
> > ---
> >> import java.nio.channels.Channels;
> >> import java.nio.channels.ReadableByteChannel;
> >> import java.nio.channels.WritableByteChannel;
> >> import java.util.HashMap;
> >> import java.util.Map;
> > 17,19c26,32
> > < import javax.servlet.*;
> > < import javax.servlet.http.*;
> > < import javax.xml.parsers.*;
> > ---
> >> import javax.servlet.ServletConfig;
> >> import javax.servlet.ServletException;
> >> import javax.servlet.http.HttpServletRequest;
> >> import javax.servlet.http.HttpServletResponse;
> >> import javax.xml.parsers.DocumentBuilder;
> >> import javax.xml.parsers.DocumentBuilderFactory;
> >> import javax.xml.parsers.ParserConfigurationException;
> > 21d33
> > < import mondrian.xmla.*;
> > 22a35,42
> >> import mondrian.xmla.SaxWriter;
> >> import mondrian.xmla.XmlaConstants;
> >> import mondrian.xmla.XmlaException;
> >> import mondrian.xmla.XmlaRequest;
> >> import mondrian.xmla.XmlaRequestCallback;
> >> import mondrian.xmla.XmlaResponse;
> >> import mondrian.xmla.XmlaServlet;
> >> import mondrian.xmla.XmlaUtil;
> > 25,26c45,51
> > < import org.w3c.dom.*;
> > < import org.xml.sax.*;
> > ---
> >> import org.w3c.dom.Attr;
> >> import org.w3c.dom.Document;
> >> import org.w3c.dom.Element;
> >> import org.w3c.dom.Node;
> >> import org.w3c.dom.NodeList;
> >> import org.xml.sax.InputSource;
> >> import org.xml.sax.SAXException;
> > 32c57
> > < * @version $Id:
> //open/mondrian/src/main/mondrian/xmla/impl/DefaultXmlaServlet.java#32 $
> > ---
> >> * @version $Id:
> //open/mondrian/src/main/mondrian/xmla/impl/DefaultXmlaServlet.java#33 $
> > 45,52d69
> > < /**
> > < * Simba O2X for some reason attempts to create many new xmla
> sessions
> > < * during the same user interactions. We can mitigate that by
> creating a
> > < * session id which is a direct hash function of the credentials
> supplied
> > < * and the remote host IP.
> > < */
> > < private static final String REUSE_SESSION_IDS = "reuseSessionIds";
> > <
> > 56d72
> > < private boolean reuseSessionIds = false;
> > 61,63d76
> > < *
> > < * <p>NOTE: There is no mechanism to remove entries from this map,
> > < * so it will get larger if the server is up for a long time.</p>
> > 74,76d86
> > < this.reuseSessionIds =
> > < Boolean.parseBoolean(
> > < servletConfig.getInitParameter(REUSE_SESSION_IDS));
> > 79c89
> > < protected DocumentBuilderFactory getDocumentBuilderFactory() {
> > ---
> >> protected static DocumentBuilderFactory getDocumentBuilderFactory() {
> > 239a250
> >>
> > 277a289
> >>
> > 281d292
> > < context.put(CONTEXT_XMLA_PASSWORD,
> passwordStr);
> > 283,285c294,296
> > < // [MROSSI] TODO we'd need to inject the
> HttpServletRequest
> > < // into this method context.put("remote_host",
> > < // request.getRemoteHost());
> > ---
> >>
> >> context.put(CONTEXT_XMLA_PASSWORD, passwordStr);
> >>
> > 287c298
> > < LOGGER.error(
> > ---
> >> LOGGER.warn(
> > 319d329
> > < // generate SessionId
> > 328,330c338,347
> > < // extract the SessionId attrs value and put into
> > < // context
> > < sessionIdStr = getSessionId(e, context);
> > ---
> >> sessionIdStr = getSessionIdFromRequest(e, context);
> >>
> >> SessionInfo sessionInfo =
> getSessionInfo(sessionIdStr);
> >>
> >> if (sessionInfo != null) {
> >> context.put(CONTEXT_XMLA_USERNAME,
> sessionInfo.user);
> >> context.put(
> >> CONTEXT_XMLA_PASSWORD,
> >> sessionInfo.password);
> >> }
> > 338,349c355
> > < // extract the SessionId attrs value and put into
> > < // context
> > < sessionIdStr = getSessionId(e, context);
> > <
> > < SessionInfo sessionInfo =
> > < getSessionInfo(sessionIdStr);
> > < if (sessionInfo != null) {
> > < context.put(CONTEXT_XMLA_USERNAME,
> sessionInfo.user);
> > < context.put(
> > < CONTEXT_XMLA_PASSWORD,
> sessionInfo.password);
> > < }
> > < context.put(CONTEXT_XMLA_SESSION_ID, sessionIdStr);
> > ---
> >> sessionIdStr = getSessionIdFromRequest(e, context);
> > 354,355d359
> > < // remove session info
> > < removeSessionInfo(sessionIdStr);
> > 392a397
> >>
> > 419,423d423
> > < private void removeSessionInfo(String sessionIdStr) {
> > < synchronized (sessionInfos) {
> > < sessionInfos.remove(sessionIdStr);
> > < }
> > < }
> > 425a426
> >>
> > 432,469c433,438
> > < /*
> > < * Fallback to the default session ID generation algorithm.
> > < */
> > < if (reuseSessionIds) {
> > < // This is how we use the same session id (key to retrieve
> a
> > < // connection) for requests with the same username coming
> from
> > < // the same remote host. The password can't be part of the
> > < // string because if you use Simba and you don't tick "save
> > < // password" in the login dialog then Simba only sends the
> > < // password with the first session that it opens - after
> which
> > < // it sends something like the following:
> > < //
> > < // <Header>
> > < // <Security xmlns="
> http://schemas.xmlsoap.org/ws/2002/04/secext">
> > < // <UsernameToken>
> > < // <Username>michele</Username>
> > < // <Password Type="PasswordText"/>
> > < // </UsernameToken>
> > < // </Security>
> > < // <BeginSession
> > < // xmlns="urn:schemas-microsoft-com:xml-analysis"
> > < // mustUnderstand="1"/>
> > < // </Header>
> > < //
> > < // Note the Password element with no value in it.
> > < String sessionString =
> > < "session_"
> > < + context.get(CONTEXT_XMLA_USERNAME)
> > < + "_"
> > < + "_"
> > < + context.get("remote_host");
> > < return Long.toString(sessionString.hashCode(), 35);
> > < } else {
> > < // Generate a semi-random new session ID.
> > < return Long.toString(
> > < -17L * System.nanoTime() + 11L *
> System.currentTimeMillis(),
> > < 35);
> > < }
> > ---
> >>
> >>
> >> // Generate a pseudo-random new session ID.
> >> return Long.toString(17L * System.nanoTime()
> >> +
> >> 3L * System.currentTimeMillis(), 35);
> > 472c441,443
> > < protected String getSessionId(Element e, Map<String, Object>
> context)
> > ---
> >>
> >> private static String getSessionIdFromRequest(Element e,
> >> Map<String, Object> context)
> > 485,486c456,458
> > < String value = attr.getValue();
> > < if (value == null) {
> > ---
> >>
> >> String sessionId = attr.getValue();
> >> if (sessionId == null) {
> > 494c466
> > < return value;
> > ---
> >> return sessionId;
> > 845c817,822
> > < SessionInfo sessionInfo;
> > ---
> >> if (sessionId == null) {
> >> return null;
> >> }
> >>
> >> SessionInfo sessionInfo = null;
> >>
> > 848a826
> >>
> > 851,852c829,831
> > < "No login credentials for found for session [" +
> sessionId
> > < + "]");
> > ---
> >> "No login credentials for found for session ["
> >> +
> >> sessionId + "]");
> > 855,856c834,837
> > < "Found existing credentials for session id ["
> > < + sessionId + "], username=[" + sessionInfo.user +
> "]");
> > ---
> >> "Found credentials for session id ["
> >> + sessionId
> >> + "], username=[" + sessionInfo.user
> >> + "] in servlet cache");
> > 876c857
> > < new SessionInfo(sessionId, username, password);
> > ---
> >> new SessionInfo(username, password);
> > 882c863
> > < sessionInfo = new SessionInfo(sessionId, username,
> password);
> > ---
> >> sessionInfo = new SessionInfo(username, password);
> > 888c869,871
> > <
> > ---
> >> /**
> >> * Holds authentication credentials of a XMLA session.
> >> */
> > 890d872
> > < final String id;
> > 894,895c876,877
> > < public SessionInfo(String id, String user, String password) {
> > < this.id = id;
> > ---
> >> public SessionInfo(String user, String password)
> >> {
> > 901d882
> > <
> >
> > ==== //open/mondrian/src/main/mondrian/xmla/impl/Olap4jXmlaServlet.java#4
> (ktext) ====
> >
> > 2c2
> > < // $Id:
> //open/mondrian/src/main/mondrian/xmla/impl/Olap4jXmlaServlet.java#3 $
> > ---
> >> // $Id:
> //open/mondrian/src/main/mondrian/xmla/impl/Olap4jXmlaServlet.java#4 $
> > 28a29
> >> import java.lang.reflect.UndeclaredThrowableException;
> > 36c37
> > < * @version $Id:
> //open/mondrian/src/main/mondrian/xmla/impl/Olap4jXmlaServlet.java#3 $
> > ---
> >> * @version $Id:
> //open/mondrian/src/main/mondrian/xmla/impl/Olap4jXmlaServlet.java#4 $
> > 415a417
> >>
> > 422,423c424,427
> > < if (OlapConnection.class.isAssignableFrom(
> > < method.getClass()))
> > ---
> >> if ("unwrap".equals(method.getName())
> >> ||
> >> OlapConnection.class.isAssignableFrom(
> >> method.getDeclaringClass()))
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20110825/75ab49a7/attachment-0001.html
More information about the Mondrian
mailing list