[ http://issues.apache.org/jira/browse/BEEHIVE-508?page=comments#action_62468 ] Mridul Muralidharan commented on BEEHIVE-508: ---------------------------------------------
This is the diff from the fix that I did locally - it passed all the drt tests and worked to fix my issue too. This a hack at best - so please use with care. -- Start diff Index: src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java =================================================================== --- src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java (revision 160583) +++ src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java (working copy) @@ -615,6 +615,14 @@ _id = id; // TODO: The ID change needs to be propagated down to nested children + if (!settingControlId){ + settingControlId = true; + try{ + getControlBeanContext().setControlID(id); + }finally{ + settingControlId = false; + } + } } /** @@ -1053,6 +1061,8 @@ */ private Class _controlIntf; + private boolean settingControlId = false; + /** * This field manages the register listener list(s) associated with event set interfaces * for the ControlBean. The value objects are either UnicastEventNotifier or EventNotifier Index: src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java =================================================================== --- src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java (revision 160583) +++ src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java (working copy) @@ -203,6 +203,27 @@ } } + public void setControlID(String id){ + + if (null == id || id.length() == 0){ + return; + } + + if (ControlBean.IDSeparator != id.charAt(id.length() - 1)){ + id = id + ControlBean.IDSeparator; + } + Iterator<Object> iter = _childMap.values().iterator(); + while (iter.hasNext()){ + Object val = iter.next(); + if (val instanceof ControlBean){ + ControlBean cb = (ControlBean)val; + cb.setControlID(id + cb.getLocalID() + //cb.getControlID() + ); + } + } + } + /** * The NameGenerator class is a simple helper class that creates new unique names based * upon a base prefix and an incrementing counter -- End diff Not sure whether to go with "cb.getLocalID()" or with "cb.getControlID()" in ControlBeanContext.setControlID(). Thanks Mridul > Control id related issue > ------------------------ > > Key: BEEHIVE-508 > URL: http://issues.apache.org/jira/browse/BEEHIVE-508 > Project: Beehive > Type: Bug > Components: Controls > Versions: V1, V1Alpha, V1Beta > Environment: Win2k , x86 > Reporter: Mridul Muralidharan > Assignee: Kyle Marvin > Priority: Critical > > This is my mail to the alias. > I will try to attach a testcase soon - but the idea of the bug is explained > below. > -- > Hi all, > I am observing some problems with control id's that get returned by the > ControlBean.getControlID(). > I will try to explain what I am trying : > I have a nested control within another control's impl like this : > @ControlImplementation > public class SomeControlAImpl implements SomeControlA , Serializable{ > @Control > SomeControlB controlB; > .... // proper initialization of SomeControlAImplClientInitializer is done. > } > Within SomeControlB , when I invoke > "context.getControlHandle().getControlID();" - it gives the proper path based > id "instance/controlB". > Now , when this gets serialized and then deserialized , a lookup on for this > bean succeeds (using : container.getBean(controlId)) , but the getControlID() > on this bean instance which is returned gives me the id as "controlB" not > "instance/controlB". > Because of this , event firing using control handle , etc fails. > After some digging , I suspect that is it 'cos of what is mentioned in > "ControlBean.setControlID" -> "// TODO: The ID change needs to be propagated > down to nested children". > Is this the case ? or am I missing something else here ? > And if it is indeed the case , then is this going to be fixed for beehive 1.0 > release ? > Thanks and Regards, > Mridul -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira