Wouter van Vliet <[EMAIL PROTECTED]> wrote:
>  - I'm trying stuff with my vmUsers builder, which has a classfile entry of
> <classfile>com.medialab.builders.vMuseum.User</classfile> and of course some
> fields that are of no interest for now
>  - Basically, there are three scenario's I want to call functions on
>       1. To Login, with a function Login(String userName, String
> passWord); returning one single node, either the User that matches with the
> username and password or an empty one with some default values. The website
> allows users not to be logged in, but will tailor stuff for users who are
> logged in.
>       2. To Logout, destroying the session .. this is a void
>       3. registerLocation(Double longitude, Double lattitude); when
> someody clicks on a map, this click is registered and a list of vmLocations
> nodes will be returned for near Locations. Like "Het Buitenhof", here in The
> Hague.

First of all, perhaps you might want a security implemetentation rather than
functions. Look e.g. to 'cloud context security implementation'.

> (from now on, "probably" is assumed untill stated otherwise)
> 
> For scenario one, I was guessing that <mm:listnodefunction> would be the
> best approach, returning a list of just one vmUsers object. Now, since
> Michiel suggested me to use <mm:functioncontainer> to handle parameters and
> return values. I was guessing something like:
> 
>       <mm:functioncontainer>
>               <mm:param value="username" />   
>               <mm:param value="password" />
>               <mm:nodelistfunction name="Login">
>                       // and here my user would exist
>               </mm:nodelistfunction>
>       </mm:functioncontainer
> 
> But that doesn't work, resulting in 
> 
>       org.apache.jasper.JasperException: /vmtesting/User.jsp(7,2)
> According to the TLD attribute name is mandatory for tag param
> 
> and a stacktrace on my screen.

Yes, 'parameters' are named, so only giving a 'value' does not work. It
could principally be added because parameters have position too, but we
started out a bit strictly.

> 
> Now, the question basically comes down to: what should I do to get it
> working? As you might have guessed, I'm trying to use no java code in my
> .jsp files at all.

As of now the 'function' framework is only useable if you 'define' the
function's parameters too.

This can be done like this (taken from
org.mmbase.security.implementation.cloudcontext.builders.Contexts)

Implement a method:
 public Parameter[] getParameterDefinition(String function);

e.g. like this (which is based on reflection):

public Parameter[] getParameterDefinition(String function) {
        Parameter[] params =
        org.mmbase.util.functions.NodeFunction.getParametersByReflection(Users.class, 
function);
        if (params == null) return super.getParameterDefinition(function);
        return params;
        
    }

and define the parameters like this then (will be used by given impl.):
public final static Parameter[] GRANT_PARAMETERS = {
        new Parameter("grouporuser",  String.class),
        PARAMETER_OPERATION,
        Parameter.USER
    };


Then you could call your login function like this:

<mm:functioncontainer>
  <mm:param name="username" value="admin" />
  <mm:param name="password" value="admin2k" />
  <mm:nodelistfunction name="login">
    bla bla 
  </mm:nodelistfunction>
</mm:functioncontainer>

or perhaps a bit more short-handedly:

<mm:import externid="username" from="parameters" />
<mm:import externid="password" from="parameters" />

<mm:nodelistfunction referids="username,password" name="login">
  bla bla 
</mm:nodelistfunction>


Michiel


-- 
Michiel Meeuwissen 
Mediapark C101 Hilversum  
+31 (0)35 6772979
nl_NL eo_XX en_US
mihxil'
 [] ()

Reply via email to