[ http://issues.apache.org/jira/browse/BEEHIVE-608?page=all ]

Rich Feit updated BEEHIVE-608:
------------------------------

      Assign To: Kenneth Tam  (was: Rich Feit)
    Fix Version: V1

One of three things needs to happen 

    1)  In the generated client initializer 
(testInheritance.override.controls.ControlsControllerClientInitializer), in the 
initializeFields method, the ID for the control needs to be unique to the 
*type* of the control, in addition to what it already includes (the control 
client class, the control client instance ID, the control field name).

            private static void initializeFields(ControlBeanContext cbc,
            testInheritance.override.controls.ControlsController client)
            {
                try
                {
                    String id;
                    //
                    // Initialize any nested controls used by the client
                    //
                    id = client.getClass() + "@" + client.hashCode() + 
".myControl";

                    ...

            
    2) (probably less desirable/correct) In the generated client initializer 
(testInheritance.override.controls.ControlsControllerClientInitializer),the 
initialize method would need to avoid delegating to the superclass (static) 
initialize method:

            public static void initialize(ControlBeanContext cbc, 
testInheritance.override.controls.ControlsController client)
            {
                
testInheritance.parent.controls.ControlsControllerClientInitializer.initialize( 
cbc, client );
                initializeFields( cbc, client );
            }


    3) We need to add a compiler error when a control field overrides one in 
the base class.



I am in favor of #3.  Ken, can you comment on this?

> Overriding Controls annotated member in the inheriting page flow cause 
> exception
> --------------------------------------------------------------------------------
>
>          Key: BEEHIVE-608
>          URL: http://issues.apache.org/jira/browse/BEEHIVE-608
>      Project: Beehive
>         Type: Bug
>   Components: Controls
>     Versions: V1
>     Reporter: Julie Zhuo
>     Assignee: Kenneth Tam
>     Priority: Minor
>      Fix For: V1
>  Attachments: jira608.zip, jira608.zip
>
> In parent page flow,
>     @Control()
>     protected HelloControlBean myControl;
> In the child page flow,
>     @Control()
>     protected GreetingsControlBean myControl;
> Expecting the child page flow control member myControl overrides the one in 
> parent flow, or at least cause a conpiler error.
> Actual: It causes the following exception and the page flow ended up 
> inheriting the parent myControl not overriding it.
> Attatch the the repro pageflows shortly.
> Exception stacktrace:
> ***************************
> 5 May 2005 14:38:57,316 ERROR JavaControlUtils []: Exception occurred while 
> initializing controls
> hrowable: org.apache.beehive.controls.api.ControlException: Exception trying 
> to run client initializ
> r: java.lang.ClassCastException, 
> testInheritance.parent.controls.HelloControlBean
> tack Trace:
> rg.apache.beehive.controls.api.ControlException: Exception trying to run 
> client initializer: java.la
> g.ClassCastException, testInheritance.parent.controls.HelloControlBean
>        at 
> org.apache.beehive.controls.api.bean.Controls.initializeClient(Controls.java:151)
>        at 
> org.apache.beehive.netui.pageflow.internal.JavaControlUtils.initJavaControls(JavaControlUt
> ls.java:221)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowManagedObject.create(PageFlowManagedObject.java:
> 0)
>        at 
> org.apache.beehive.netui.pageflow.FlowController.create(FlowController.java:515)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowController.create(PageFlowController.java:355)
>        at 
> org.apache.beehive.netui.pageflow.FlowControllerFactory.createPageFlow(FlowControllerFacto
> y.java:317)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.getFlowController(PageFlowReque
> tProcessor.java:635)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequest
> rocessor.java:555)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcesso
> .java:852)
>        at 
> org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServ
> et.java:606)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java
> 162)
>        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.ja
> a:237)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
>        at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:703)
>        at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:4
> 3)
>        at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
>        at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
>        at 
> org.apache.beehive.netui.pageflow.internal.DefaultForwardRedirectHandler.forward(DefaultFo
> wardRedirectHandler.java:127)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.doForward(PageFlowRequestProces
> or.java:1750)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processPageFlowRequest(PageFlow
> equestProcessor.java:757)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequest
> rocessor.java:516)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcesso
> .java:852)
>        at 
> org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServ
> et.java:606)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java
> 162)
>        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.ja
> a:237)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
>        at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:703)
>        at 
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:4
> 3)
>        at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
>        at 
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
>        at 
> org.apache.beehive.netui.pageflow.internal.DefaultForwardRedirectHandler.forward(DefaultFo
> wardRedirectHandler.java:127)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.doForward(PageFlowRequestProces
> or.java:1750)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processForwardConfig(PageFlowRe
> uestProcessor.java:1624)
>        at 
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequest
> rocessor.java:591)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcesso
> .java:852)
>        at 
> org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServ
> et.java:606)
>        at 
> org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java
> 162)
>        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.ja
> a:237)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
>        at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>        at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>        at 
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198
>        at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>        at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>        at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>        at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>        at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>        at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>        at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>        at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>        at 
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>        at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
>        at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Pr
> tocol.java:702)
>        at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
>        at java.lang.Thread.run(Thread.java:595)

-- 
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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to