You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by "Joost Schouten (ml)" <jo...@jsportal.com> on 2010/06/07 09:36:08 UTC

Render phase return type equivalent to void

Hi,

I have build a RestrictedVisibility Mixin which shows or hides an entire 
component by returning true or false in the @SetupRender method [1]. 
This works well but I just realized there is one drawback. When I return 
true, setup render skips to the next step (@BeginRender) where I would 
like it to continue down the line so @SetupRender of the component it is 
mixed in is also executed.

I have partially solved this by annotating the mixing with @MixinAfter, 
but now I execute the setup render methods of components that are never 
shown which not ideal.

Is there another return type or another way to achieve this? Or are 
there better ways to achieve my visibility restriction.

Thanks,
Joost

[1] (simplified)
@SetupRender
private Object setup() {
        if(showComponent) {
                return true;
        }
        return false;
}

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Render phase return type equivalent to void

Posted by "Joost Schouten (ml)" <jo...@jsportal.com>.
So simple, I could have guessed that ;-)

Thanks,
Joost

Thiago H. de Paula Figueiredo wrote:
> On Mon, 07 Jun 2010 04:36:08 -0300, Joost Schouten (ml) 
> <jo...@jsportal.com> wrote:
>
>> Hi,
>
> Hi!
>
> Render phase return type equivalent to void: null.
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Render phase return type equivalent to void

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
On Mon, 07 Jun 2010 04:36:08 -0300, Joost Schouten (ml)  
<jo...@jsportal.com> wrote:

> Hi,

Hi!

Render phase return type equivalent to void: null.

-- 
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: NPE in afterRender method in Tomcat

Posted by Radek Terber <ls...@post.cz>.
I'm vwr sorry, I'm stupid.The constant Constants.REQUIRED_LOGIN_RQATR 
was null.
But I'm surprised the Tomcat does not provide any reasonable message.


Dne 7.6.2010 22:13, Radek Terber napsal(a):
> Hi
>
> I have such problem: I have quite simple T5 application - (T5 + 
> hibernate), currently compiled under T 5.1.0.5. When I run it under 
> Jetty (ver. 8.0.0), it runs fine.
> But when I try it to start under Tomcat, I get NullPointerException 
> that (probably) indicates the underline request is null.
> I tested it under Tomcat 6.0.18, 6.0.20 and 6.0.26. Tomcats was "pure" 
> installations - with no aditional libraries.
> It runs under Java 6.18 on Win7, the same problem in on Linux and Java 
> 6.16.
> I could post application's war somewhere, but it is quite big (cca 28M 
> including libraries), ant it requires our application server running 
> anywhere in LAN to run.
>
> Here it the eception:
> -------------------
> [ERROR] TapestryModule.RequestExceptionHandler Processing of request 
> failed with uncaught exception: Render queue error in AfterRender[Index
> :layout.loginform]: 
> org.apache.tapestry5.ioc.internal.util.TapestryException
> org.apache.tapestry5.internal.services.RenderQueueException: Render 
> queue error in AfterRender[Index:layout.loginform]: org.apache.tapestry5
> .ioc.internal.util.TapestryException [at 
> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>         at 
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86) 
>
>         at 
> org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121) 
>
> ... (I deleted it) ...
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException 
> [at classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 
> 25]
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.render(ComponentPageElementImpl.java:374) 
>
>         at 
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74) 
>
>         ... 68 more
> Caused by: java.lang.NullPointerException
>         at 
> org.apache.catalina.connector.Request.getAttribute(Request.java:877)
>         at 
> org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263) 
>
>         at 
> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java:127) 
>
>         at 
> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.invokeComponent(ComponentPageElementImpl.java:369) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933) 
>
>         ... 72 more
>
>
> The code fragment cause it:
> -------------------------------------------------------
>     @Inject
>     private RenderSupport rsup;
>
>     @Inject
>     private Request request;
>
>     @AfterRender
>     public void afterRender(MarkupWriter wr) {
>          boolean requireLogin = 
> request.getAttribute(Constants.REQUIRED_LOGIN_RQATR) != null;        
> // here the NPE is thrown, but the "request" is not null
>         if (requireLogin) {
>             rsup.addScript("$j(function() {");
>             
> rsup.addScript("$j(\"#loginFormDialog\").dialog(\"option\", \"modal\", 
> false);");
>             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"open\");");
>             rsup.addScript("});");
>         }
>     }
>
> -------------------------------------------------------
>
> Thanks for any ideas.
> Radek
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: NPE in afterRender method in Tomcat

Posted by Radek Terber <ls...@post.cz>.
No, the app is single thread, quite "clear", no experiments...
Here is the "self contained" variant of war (with no dependencies to 
oour app server):
http://www.gapo.cz/downloads/genusinum.war

I guess to some library which the application is depend on (in 
combination with Tomcat libraries ??), but I have no tools and 
experiences to deterrmine it.

Dne 7.6.2010 22:58, Howard Lewis Ship napsal(a):
> Caused by: java.lang.NullPointerException
>         at
> org.apache.catalina.connector.Request.getAttribute(Request.java:877)
>         at
> org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)
>
> That's really showing that it's gone beyond the Tapestry code and back into
> the Tomcat (catalina) code. Are you doing something tricky with threads,
> like trying to do part of the render is a background thread?
>
> You'll probably need to single-step down ingo the catalina code to see
> what's exactly going on.  Not enough information here to diagnose.
>
> On Mon, Jun 7, 2010 at 1:13 PM, Radek Terber<ls...@post.cz>  wrote:
>
>    
>> Hi
>>
>> I have such problem: I have quite simple T5 application - (T5 + hibernate),
>> currently compiled under T 5.1.0.5. When I run it under Jetty (ver. 8.0.0),
>> it runs fine.
>> But when I try it to start under Tomcat, I get NullPointerException that
>> (probably) indicates the underline request is null.
>> I tested it under Tomcat 6.0.18, 6.0.20 and 6.0.26. Tomcats was "pure"
>> installations - with no aditional libraries.
>> It runs under Java 6.18 on Win7, the same problem in on Linux and Java
>> 6.16.
>> I could post application's war somewhere, but it is quite big (cca 28M
>> including libraries), ant it requires our application server running
>> anywhere in LAN to run.
>>
>> Here it the eception:
>> -------------------
>> [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
>> with uncaught exception: Render queue error in AfterRender[Index
>> :layout.loginform]:
>> org.apache.tapestry5.ioc.internal.util.TapestryException
>> org.apache.tapestry5.internal.services.RenderQueueException: Render queue
>> error in AfterRender[Index:layout.loginform]: org.apache.tapestry5
>> .ioc.internal.util.TapestryException [at
>> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>>         at
>> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86)
>>         at
>> org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
>> ... (I deleted it) ...
>>         at java.lang.Thread.run(Thread.java:619)
>> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException [at
>> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.render(ComponentPageElementImpl.java:374)
>>         at
>> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
>>         ... 68 more
>> Caused by: java.lang.NullPointerException
>>         at
>> org.apache.catalina.connector.Request.getAttribute(Request.java:877)
>>         at
>> org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)
>>         at
>> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java:127)
>>         at
>> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.invokeComponent(ComponentPageElementImpl.java:369)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933)
>>         ... 72 more
>>
>>
>> The code fragment cause it:
>> -------------------------------------------------------
>>     @Inject
>>     private RenderSupport rsup;
>>
>>     @Inject
>>     private Request request;
>>
>>     @AfterRender
>>     public void afterRender(MarkupWriter wr) {
>>          boolean requireLogin =
>> request.getAttribute(Constants.REQUIRED_LOGIN_RQATR) != null;        // here
>> the NPE is thrown, but the "request" is not null
>>         if (requireLogin) {
>>             rsup.addScript("$j(function() {");
>>             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"option\",
>> \"modal\", false);");
>>             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"open\");");
>>             rsup.addScript("});");
>>         }
>>     }
>>
>> -------------------------------------------------------
>>
>> Thanks for any ideas.
>> Radek
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>>      
>
>    


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: NPE in afterRender method in Tomcat

Posted by Howard Lewis Ship <hl...@gmail.com>.
Caused by: java.lang.NullPointerException
       at
org.apache.catalina.connector.Request.getAttribute(Request.java:877)
       at
org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)

That's really showing that it's gone beyond the Tapestry code and back into
the Tomcat (catalina) code. Are you doing something tricky with threads,
like trying to do part of the render is a background thread?

You'll probably need to single-step down ingo the catalina code to see
what's exactly going on.  Not enough information here to diagnose.

On Mon, Jun 7, 2010 at 1:13 PM, Radek Terber <ls...@post.cz> wrote:

> Hi
>
> I have such problem: I have quite simple T5 application - (T5 + hibernate),
> currently compiled under T 5.1.0.5. When I run it under Jetty (ver. 8.0.0),
> it runs fine.
> But when I try it to start under Tomcat, I get NullPointerException that
> (probably) indicates the underline request is null.
> I tested it under Tomcat 6.0.18, 6.0.20 and 6.0.26. Tomcats was "pure"
> installations - with no aditional libraries.
> It runs under Java 6.18 on Win7, the same problem in on Linux and Java
> 6.16.
> I could post application's war somewhere, but it is quite big (cca 28M
> including libraries), ant it requires our application server running
> anywhere in LAN to run.
>
> Here it the eception:
> -------------------
> [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
> with uncaught exception: Render queue error in AfterRender[Index
> :layout.loginform]:
> org.apache.tapestry5.ioc.internal.util.TapestryException
> org.apache.tapestry5.internal.services.RenderQueueException: Render queue
> error in AfterRender[Index:layout.loginform]: org.apache.tapestry5
> .ioc.internal.util.TapestryException [at
> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>        at
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86)
>        at
> org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
> ... (I deleted it) ...
>        at java.lang.Thread.run(Thread.java:619)
> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException [at
> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.render(ComponentPageElementImpl.java:374)
>        at
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
>        ... 68 more
> Caused by: java.lang.NullPointerException
>        at
> org.apache.catalina.connector.Request.getAttribute(Request.java:877)
>        at
> org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)
>        at
> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java:127)
>        at
> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.invokeComponent(ComponentPageElementImpl.java:369)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933)
>        ... 72 more
>
>
> The code fragment cause it:
> -------------------------------------------------------
>    @Inject
>    private RenderSupport rsup;
>
>    @Inject
>    private Request request;
>
>    @AfterRender
>    public void afterRender(MarkupWriter wr) {
>         boolean requireLogin =
> request.getAttribute(Constants.REQUIRED_LOGIN_RQATR) != null;        // here
> the NPE is thrown, but the "request" is not null
>        if (requireLogin) {
>            rsup.addScript("$j(function() {");
>            rsup.addScript("$j(\"#loginFormDialog\").dialog(\"option\",
> \"modal\", false);");
>            rsup.addScript("$j(\"#loginFormDialog\").dialog(\"open\");");
>            rsup.addScript("});");
>        }
>    }
>
> -------------------------------------------------------
>
> Thanks for any ideas.
> Radek
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to learn
how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

NPE in afterRender method in Tomcat

Posted by Radek Terber <ls...@post.cz>.
Hi

I have such problem: I have quite simple T5 application - (T5 + 
hibernate), currently compiled under T 5.1.0.5. When I run it under 
Jetty (ver. 8.0.0), it runs fine.
But when I try it to start under Tomcat, I get NullPointerException that 
(probably) indicates the underline request is null.
I tested it under Tomcat 6.0.18, 6.0.20 and 6.0.26. Tomcats was "pure" 
installations - with no aditional libraries.
It runs under Java 6.18 on Win7, the same problem in on Linux and Java 6.16.
I could post application's war somewhere, but it is quite big (cca 28M 
including libraries), ant it requires our application server running 
anywhere in LAN to run.

Here it the eception:
-------------------
[ERROR] TapestryModule.RequestExceptionHandler Processing of request 
failed with uncaught exception: Render queue error in AfterRender[Index
:layout.loginform]: org.apache.tapestry5.ioc.internal.util.TapestryException
org.apache.tapestry5.internal.services.RenderQueueException: Render 
queue error in AfterRender[Index:layout.loginform]: org.apache.tapestry5
.ioc.internal.util.TapestryException [at 
classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
         at 
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86)
         at 
org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
... (I deleted it) ...
         at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException [at 
classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.render(ComponentPageElementImpl.java:374)
         at 
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
         ... 68 more
Caused by: java.lang.NullPointerException
         at 
org.apache.catalina.connector.Request.getAttribute(Request.java:877)
         at 
org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)
         at 
cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java:127)
         at 
cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.invokeComponent(ComponentPageElementImpl.java:369)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933)
         ... 72 more


The code fragment cause it:
-------------------------------------------------------
     @Inject
     private RenderSupport rsup;

     @Inject
     private Request request;

     @AfterRender
     public void afterRender(MarkupWriter wr) {
          boolean requireLogin = 
request.getAttribute(Constants.REQUIRED_LOGIN_RQATR) != null;        // 
here the NPE is thrown, but the "request" is not null
         if (requireLogin) {
             rsup.addScript("$j(function() {");
             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"option\", 
\"modal\", false);");
             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"open\");");
             rsup.addScript("});");
         }
     }

-------------------------------------------------------

Thanks for any ideas.
Radek



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org