Please check this function I included into XSPSessionHelper.java in 
src/java/org/apache/cocoon/components/language/markup/xsp:

    /** GetXML Fragment from the given session context and path
      *
      *
     * @param session The Session object
     * @param context The Session context tha define where to search
     * @param path The parameter path
     * @param defaultValue Value to substitute in absence of the required 
Fragment
     **/
     public static DocumentFragment getXML(ComponentManager cm, String 
context, String path) throws ProcessingException {

         DocumentFragment df = null;
         SessionManager sm = null;

         try {
             // Start looking up the manager
             sm = (SessionManager)cm.lookup(SessionManager.ROLE);
             // Make our work
             df = sm.getContextFragment(context, path);
             if (sm != null) {
                 cm.release(sm);
             }
         } catch (ComponentException ce) {
                throw new ProcessingException("Error during lookup of 
SessionManager component.", ce);
         }
         // End releasing the sessionmanager
        return df;
     }

Soon I will publish here too the changes in the xsp-session.xsl

I takes me 3 days!

Antonio Gallardo.


El Jueves, 26 de Septiembre de 2002 03:50, Antonio Gallardo Rivera escribió:
> I will try to explain how far I am now in the building of the
> <xsp-session:getxml> for XSP.
>
> As I said I was researching about that, now I can get the values of the
> "authentication" context.
>
> In XSP we can use:
> Namespace: xmlns:xsp-session="http://apache.org/xsp/session/2.0";
>
> 2-Add imports:
> <xsp:include>org.apache.cocoon.webapps.session.context.SimpleSessionContext
></xsp:include> <xsp:include>org.w3c.dom.DocumentFragment</xsp:include>
> <xsp:include>org.apache.cocoon.xml.dom.DOMUtil</xsp:include>
>
> 3- Logic inside the xsp:page:
>
> <xsp:logic>
> SimpleSessionContext a =
> ((SimpleSessionContext)<xsp:expr><xsp-session:get-attribute
> name="org.apache.cocoon.webapps.authentication.SessionContext"/></xsp:expr>
>); DocumentFragment b = a.getXML("/");
> String d = DOMUtil.createText(b);
> </xsp:logic>
>
> Only for test I used, and it gets the values I need.
>
> <xsp:expr>b</xsp:expr>
>
> After it returns I saw in the generated HTML that there is only one
> context.
>
> <myhandler>
> <authentication>
> <ID>1</ID>
> <role>myrole</role>
> <data>
>       <username>My name</username>
>       <birthday></birthday>
>       .....
> </data>
> </authentication>
> </myhandler>
>
> I am also researching about how to get the authentication context because
> there are two attributes and the name of the handler can be diferent as
> long as I know. Then:
>
> A) adding imports
> <xsp:include>java.util.ArrayList</xsp:include>
> <xsp:include>java.util.HashMap</xsp:include>
>
> B) <xsp:logic>
>
> ArrayList al =
> ((ArrayList)<xsp:expr><xsp-session:get-attribute-names/></xsp:expr>);
>
> String al0 = ((String)al.get(0));
> String al1 = ((String)al.get(1));oot node, does anyone know how
> HashMap hs = ((HashMap)<xsp:expr><xsp-session:get-attribute
> name="org.apache.cocoon.webapps.authentication.Handlers"/></xsp:expr>);
>
> With al. I can make use of the attributesnames of the session, after that I
> can get the names using the variables al0 and al1.
>
> al0 is org.apache.cocoon.webapps.authentication.Handlers
> and
> al1 is org.apache.cocoon.webapps.authentication.SessionContext
>
> About al1 is above a litlle explain that can helps to get directly the
> authentication ID using the Strings:
>
> <xsp:logic>
> SimpleSessionContext a =
> ((SimpleSessionContext)<xsp:expr><xsp-session:get-attribute
> name="org.apache.cocoon.webapps.authentication.SessionContext"/></xsp:expr>
>); DocumentFragment b = a.getXML("/myhandler/authentication/ID");
> </xsp:logic>
>
> After this, the variable b has the value of "/authentication/ID".
>
> About al0 (org.apache.cocoon.webapps.authentication.Handlers) it is a
> ArrayList that contains the names of the attributes.
>
> Some examples using
>
> <p>Key: <xsp:expr>hs.keySet()</xsp:expr></p>
> <p>Value: <xsp:expr>hs.values()</xsp:expr></p>
> <p>Attribute: <xsp:expr>hs.values()</xsp:expr></p>
>
> But I cannot take the Session Context. I was thinking in a get how to get
> away the context and just write a tag like:
>
> <xsp-session:getxml path="/myhandler/authentication"/>
>
> Another question: Can we add this new function to the already xsp-session
> logicsheet?
>
> Comments are welcome :)
>
> Antonio Gallardo
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> Please check that your question  has not already been answered in the
> FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
>
> To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
> For additional commands, e-mail:   <[EMAIL PROTECTED]>

---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
For additional commands, e-mail:   <[EMAIL PROTECTED]>

Reply via email to