Search code examples
restletrestlet-2.0

An interesting Restlet Attribute behavior


Using Restlet 2.1 for Java EE, I am discovering an interesting problem with its ability to handle attributes.

Suppose you have code like the following:

cmp.getDefaultHost().attach("/testpath/{attr}",SomeServerResource.class);

and on your browser you provide the following URL:

http://localhost:8100/testpath/command

then, of course, the attr attribute gets set to "command".

Unfortunately, suppose you want the attribute to be something like command/test, as in the following URL:

http://localhost:8100/testpath/command/test

or if you want to dynamically add things with different levels, like:

http://localhost:800/testpath/command/test/subsystems/network/security

in both cases the attr attribute is still set to "command"!

Is there some way in a restlet application to make an attribute that can retain the "slash", so that one can, for example, make the attr attribute be set to "command/test"? I would like to be able to just grab everything after testpath and have the entire string be the attribute.

Is this possible? Someone please advise.


Solution

  • For the same case I usually change the type of the variable :

    Route route = cmp.getDefaultHost().attach("/testpath/{attr}",SomeServerResource.class);
    route.getTemplate().getVariables().get("attr") = new Variable(Variable.TYPE_URI_PATH);