[
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