sessionrpc.lzx

<library>
    
    <include href="rpc/rpc.lzx"/>
    <include href="rpc/library/javarpc.js"/>

    <security>
        <allow>
            <pattern>^org\.openlaszlo\.remote\.LZHttpSessionRemote$</pattern>
        </allow>
    </security>

    <class name="sessionrpc" extends="rpc">

        <!--- @keywords private -->
        <attribute name="_attributename" value="none" type="string"/>
        <!--- @keywords private -->
        <attribute name="_scope" value="none" type="string"/>
        <!--- @keywords private -->
        <attribute name="_classname" type="string" value="org.openlaszlo.remote.LZHttpSessionRemote"/>

        <!--=================================================================-->
        <!-- public methods                                                  -->
        <!--=================================================================-->

        <!--- Loads session object. -->
        <method name="load">
            var opts = {
                loadoption: 'loadonly',
                classname: this._classname,
                oname: this._attributename,
                scope: this._scope
            }

            LzJavaRPCService.loadObject(this._loadDel, opts, this.secure, 
                this.secureport);
        </method>

        <!--- @keywords private -->
        <method name="_setup" args="o">
            var ok = super._setup(o);

            for (var k in this.proxy) {
                var tpka = this.proxy[k]['args'];
                if (tpka == null) {
                    tpka = this.proxy[k].args = {};
                }
                tpka.secure = this.secure;
                tpka.secureport = this.secureport;
                tpka.scope = this._scope;
                tpka.attributename = this._attributename;
            }

            return ok;
        </method>
<doc>
    <tag name="shortdesc"><text>SessionRPC object</text></tag>
    <text>
    <p>A class to get an http session object and invoke its methods. Remote method
        signatures are:</p>
    
    
    <ul>
        
        <li>
            <dfn>getAttribute(name)</dfn>: returns object, array, or primitive 
            type.</li>
        
        <li>
            <dfn>getAttributeNames()</dfn>: returns array of attribute names.</li>
        
        <li>
            <dfn>getId()</dfn>: returns remote session id</li>
        
        <li>
            <dfn>getMaxInactiveInterval()</dfn>: returns max inactive interval for
            session.</li>
        
        <li>
            <dfn>invalidate()</dfn>: invalidate remote session.</li>
        
        <li>
            <dfn>isNew()</dfn>: returns true if the client does not yet know about the
            session or if the client chooses not to join the session.</li>
        
        <li>
            <dfn>removeAttribute(name)</dfn>: remove attribute named name; returns 
            void.</li>
        
        <li>
            <dfn>setAttribute(name,value)</dfn>: set attribute named name with value; 
            returns void.</li>
        
        <li>
            <dfn>setMaxInactiveInterval(interval)</dfn>: set max inactive interval for 
            session.</li>
        
    </ul>
    
    
    <p>See <a href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/http/HttpSession.html" shape="rect">
        javax.servlet.http.HttpSession</a> in the <a href="http://java.sun.com/products/servlet/2.3/javadoc/" shape="rect">Java Servlet API</a>
        documentation for details.</p>
        <example>
    <canvas height="475" debug="true">
    
        <debug x="300" y="20" width="500" height="400" />
        
        <include href="rpc/sessionrpc.lzx" />
        
        <dataset name="idDset" />
        
        <sessionrpc id="session" autoload="false">
        
            <handler name="oninit">
                Debug.debug('loading session object...')
                this.load();
            </handler>
            
            <handler name="onload">
                Debug.debug('session object loaded');
                canvas.buttons.setAttribute('visible', true);
            </handler>        
            
            <handler name="ondata" args="data">
                Debug.debug("default ondata: %w", data);
            </handler>
            
            <handler name="onerror" args="error">
                Debug.debug("default onerror: %w", error);
            </handler>
            
            <remotecall funcname="getId" />
            
            <remotecall name="getIdWithDset" funcname="getId" dataobject="idDset" />
            
            <remotecall funcname="getMaxInactiveInterval" />
            
            <remotecall funcname="isNew" />
            
            <remotecall funcname="setMaxInactiveInterval">
                <param value="15" />
            </remotecall>
            
            <remotecall name="setmyattr" funcname="setAttribute">
                <param value="'myattr'" />
                <param value="'MY ATTRIBUTE'" />
            </remotecall>
            
            <remotecall name="setmyother" funcname="setAttribute">
                <param value="'myother'" />
                <param value="'MY OTHER'" />
            </remotecall>
            
            <remotecall name="getmyattr" funcname="getAttribute">
                <param value="'myattr'" />
            </remotecall>
            
            <remotecall name="getmyother" funcname="getAttribute">
                <param value="${'myother'}" />
            </remotecall>
            
            <remotecall funcname="getAttributeNames" />
            
            <remotecall name="removemyattr" funcname="removeAttribute">
                <param value="'myattr'" />
            </remotecall>
            
            <remotecall name="removemyother" funcname="removeAttribute">
                <param value="'myother'" />
            </remotecall>
        
        </sessionrpc>
        
        
        <view name="buttons" x="10" y="10" layout="spacing: 5" visible="false">
            <button text="getId" onclick="session.getId.invoke()" />
            <button text="getIdWithDset" onclick="session.getIdWithDset.invoke()" />
            <view height="20" width="50">
                <text datapath="idDset:/text()" width="240" bgcolor="red"/>
            </view>
            <button text="getMaxInactiveInterval" onclick="session.getMaxInactiveInterval.invoke()" />
            <button text="isNew" onclick="session.isNew.invoke()" />
            <button text="setMaxInactiveInterval" onclick="session.setMaxInactiveInterval.invoke()" />
            
            <view x="20" layout="spacing: 5">
            
                <attribute name="myDel" value="null" type="expression" />
                
                <handler name="oninit">
                this.myDel = new LzDelegate(this, 'myhandler');
                </handler>
                
                <method name="myhandler" args="data">
                    Debug.debug('myhandler: %w', data);
                </method>
                
                <button text="setmyattr" onclick="session.setmyattr.invoke()" />
                
                <button text="setmyother" onclick="session.setmyother.invoke()" />
                
                <button text="getmyattr" onclick="session.getmyattr.invoke()" />
                
                <button text="getmyother" onclick="session.getmyother.invoke()" />
                
                <button text="getmyattr (w/params)" onclick="session.getmyattr.invoke(['myattr'])" />
                
                <button text="getmyattr (w/params and delegate)">
                <handler name="onclick">
                    session.getmyattr.invoke(['myattr'], parent.mydel);
                </handler>
                </button>
                
                <button text="getAttributeNames" onclick="session.getAttributeNames.invoke()" />
                
                <button text="removemyattr" onclick="session.removemyattr.invoke()" />
                
                <button text="removemyother" onclick="session.removemyother.invoke()" />
                
            </view>
        </view>
    </canvas>
        </example>
        <b>See Also:</b>
        <br/>
            <ul>
                <li>
                    <sgmltag class="element" role="lz.rpc"><rpc></sgmltag>
                </li>
                <li>
                    <sgmltag class="element" role="lz.javarpc"><javarpc></sgmltag>
                </li>
                <li>
                    <sgmltag class="element" role="lz.webapprpc"><webapprpc></sgmltag>
                </li>
                <li>
                    <sgmltag class="element" role="lz.remotecall"><remotecall></sgmltag>
                </li>
                <li>
                    <a href="../developers/rpc.html" target="laszlo-dguide" shape="rect">Developer's Guide: RPC chapter</a>
                </li>
                <li>
                    <a href="../developers/rpc-javarpc.html" target="laszlo-dguide" shape="rect">Developer's Guide: JavaRPC chapter</a>
                </li>
            </ul>
            
    </text>
</doc>
    </class>

</library>
<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
* Copyright 2001-2009 Laszlo Systems, Inc.  All Rights Reserved.              *
* Use is subject to license terms.                                            *
* X_LZ_COPYRIGHT_END ****************************************************** -->
<!-- @LZX_VERSION@                                                         -->

Cross References

Includes

Classes