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'
[] ()