Good catch, you're right! I guess using a thread local is quite a
hack. Anyone a better idea how we should do this?

Eelco

On 9/6/05, Arto Arffman <[EMAIL PROTECTED]> wrote:
> Hi, 
> I was browsing through ajax implementation (to learn Wicket and ajax), and
> found out something odd. It seems that it is not possible to have two
> different AjaxHandlers on the same page. AjaxHandler base class uses static
> ThreadLocal to prevent including javascript resources more than once. If one
> would like to use dojo and scriptaculous on the sama page, then only the
> first one would get its script reference rendered (because they both extend
> AjaxHandler). 
>   
>  private static final ThreadLocal headContribHolder = new ThreadLocal(); 
> ... 
>  public final void renderHead(HtmlHeaderContainer container)
>  {
>   if (headContribHolder.get() == null)
>   {
>    headContribHolder.set(dummy);
>    renderHeadInitContribution(container);
>   }
>   renderHeadContribution(container);
>  }
>  
>   
> I did not test this, though. I'm not fluent with Wicket and ajax, so I found
> it too time consuming. But I did a simple code fragment that I think proves
> my case: 
>   
> public class B {
>  public static void main(String[] args) {
>   System.out.println("start");
>   X x = new X();
>   Y y = new Y();
>   x.start();
>   System.out.println(y.isRunning());
>   y.end();
>   System.out.println(x.isRunning());
>  } 
> }
> class BaseTL { 
>  private static final ThreadLocal flag = new ThreadLocal();
>  public void start() {
>   flag.set(new Object());
>  }
>  public void end() {
>   flag.set(null);
>  }
>  
>  public boolean isRunning() {
>   return flag.get() != null;
>  }
>  
> }
> class X extends BaseTL { 
> }
> class Y extends BaseTL { 
> }
>  
> When only x is started y.isRunning() returns also true. 
>   
> Anyway, I think that the framework should provide a way to do "things" only
> once per request cycle. Using ThreadLocal seems a little bit like a hack to
> me. 
>   
> /Arto 
>


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop

Reply via email to