[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