Weirdness (frustration mounting - sleep mode:enabled)

Neil Clayton <[email protected]> Sat, 4 Jan 2003 22:18:38 +0000
Newsgroups gmane.comp.java.tapestry.devel
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Using Tapestry 2.2

I have a component (Misko's TreeComponent actually) that I am attempting to 
add a parameter to. Not to hard methinks. Well, perhaps I should think again! 
(no fault of Misko's might I add)

The problem is that the listener I am adding is NEVER set.
The tree component is used like this:

    <component id="sourceProperties" type="Tree:Tree">
        <binding name="tree" expression='propertiesModel'/>
        <binding name="treeEventListener" 
expression='components.propertiesEditor'/>
    </component>

components.propertiesEditor implements the listener interface, the idea being 
that as I click and use the tree, the other thing recieves the events and 
"does stuff".  The fault is that no listener instance is EVER set in the tree 
itself.

I've used a very basic implementation for the tree property, as follows:

    <parameter
        name="treeEventListener"
        java-type="net.sf.tapestry.contrib.tree.ITreeEvents"
        direction="in"
        required="no">
        <description>
            <![CDATA[   open/click and close events can be sent to this 
listener   ]]>
        </description>
    </parameter>

With java code as follows:

	/**
	 * Returns the treeEventsListener.
	 * @return ITreeEvents
	 */
	public ITreeEvents getTreeEventsListener() {
		if (log.isDebugEnabled()) {
			log.debug("Trying to return the tree events listener. The member var is : " 
+ treeEventsListener);
		}

		if (treeEventsListener == null) {
			IBinding binding = getBinding("treeEventsListener");

			if (log.isDebugEnabled()) {
				log.debug("Member var is null, binding is " + binding);
			}

			if (binding != null) {
				if(log.isDebugEnabled()) {
					log.debug("The object in the binding is " + binding.getObject());
				}
				
				return (ITreeEvents) binding.getObject();
			}
		}
		return treeEventsListener;
	}

	/**
	 * Sets the treeEventsListener.
	 * @param treeEventsListener The treeEventsListener to set
	 */
	public void setTreeEventsListener(ITreeEvents treeEventsListener) {
		if (log.isDebugEnabled()) {
			log.debug("Setting the tree events listener to " + treeEventsListener);
		}
		this.treeEventsListener = treeEventsListener;
	}


The output when I perform an action on the tree is:

    [exec] 22:16:59,498 DEBUG [net.sf.tapestry.contrib.tree.TreeComponent] 
Trying to return the tree events listener. The member var is : null
     [exec] 22:16:59,499 DEBUG [net.sf.tapestry.contrib.tree.TreeComponent] 
Member var is null, binding is null
     [exec] 22:16:59,499 DEBUG [net.sf.tapestry.contrib.tree.TreeComponent] 
Not calling tree event listener because it is not set

Looks like there's NO binding at all.
WEEEIRD.

What have I done wrong?
I've been staring at this for quite a while now. Time for bed!

- -- 
Regards,
Neil Clayton

(PS: If you see strange text you don't understand underneath my email, don't 
worry - it's just my PGP signature)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE+F12+LXcfQF3yrNoRAiTtAJ0a+nn++4h1zPJdwCQzzTH1Q6bSZgCfVnGl
huQ3qCYrsfwLEkClqGwKm4c=
=TNx9
-----END PGP SIGNATURE-----



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf