FormResource.lookup(LookupState...

Joel Crisp writes:
 > 
 > Hi
 > 
 > I've noticed that this resource consumes path name elements even if it
 > fails to find a card resource with the requested name.
 > 
 > This makes it harder for sub-classes to mix cards and other resources
 > under the path of a FormResource, e.g. I have a database which has a
 > set of cards for doing new searches. entering new records etc. It also
 > is a ContainerResource similar to DirectoryResource for the historical
 > log of searches made and their results - which are non-card resources
 > held by the database resource.
 > 
 > Is it possible to ensure that lookup functions only consume path
 > elements if they are successful at looking up ?

Correct, here is a fix, that will be included in next release
(unchecked yet, but should work):

    /**
     * Lookup an sub resource.
     * Each form card makes its own resource, that's why the 
     * <code>lookup</code> method for this resource is special.
     * @param ls The current lookup state.
     * @return An HTTPResource matching the name to lookup, or
     *    <strong>null</strong> if none was found.
     */

    public boolean lookup (LookupState ls, LookupResult lr) 
	throws HTTPException
    {
	if ( super.lookup(ls, lr) )
	    return true;
	String name = ls.peekNextComponent() ;
	for (int i = 0 ; i < vcards.size() ; i++) {
	    FormCardResource card = (FormCardResource) vcards.elementAt(i) ;
	    if ( card.getName().equals(name) ) {
		// Remove found component from lookup state
		ls.getNextComponent();
		// Setup lookup result:
		lr.setTarget(card);
		return card.lookup(ls, lr);
	    }
	} 
	lr.setTarget(null);
	return false;
    }

Let me know if this solves your problem,
Anselm.

Received on Monday, 25 November 1996 06:41:17 UTC