[jira] Resolved: (WICKET-1698) IE7 memory leak when components are updated via AJAX

2008-07-02 Thread Matej Knopp (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-1698?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matej Knopp resolved WICKET-1698.
-

Resolution: Invalid

 IE7 memory leak when components are updated via AJAX
 

 Key: WICKET-1698
 URL: https://issues.apache.org/jira/browse/WICKET-1698
 Project: Wicket
  Issue Type: Bug
  Components: wicket
Affects Versions: 1.3.3, 1.4-M2
 Environment: WinXP SP3, IE7
Reporter: Niels Boeger
Assignee: Matej Knopp

 I noticed a large increase in IE7s memory consumption when a wicket component 
 is updated via AJAX.
 In my case, I used wicket to update the markup of a html table. The table 
 acts as datasource for a yui datatable. The markup update is triggered by a 
 wicketAjaxGet request on the client, and Wicket updates the markup of the 
 table.
 Drip (http://www.outofhanwell.com/ieleak/) shows that old markup is not 
 garbage collected by IE7. 
 YUI does not seem to be the culprit, the problem occured even when I removed 
 all YUI code.
 Using Drip on the AutoComplete example 
 (http://www.wicketstuff.org/wicket13/ajax/autocomplete) shows the same 
 behavior.
 I tested this in my application with both Wicket 1.3.3 and Wicket 1.4-M2.
 FF2 (Mac OS X  WinXP), FF3RC2 (WinXP) and Safari 3.1 (Mac OS X) run fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



svn commit: r673363 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket: Component.java MarkupContainer.java request/target/component/BookmarkableListenerInterfaceRequestTarget.java

2008-07-02 Thread knopp
Author: knopp
Date: Wed Jul  2 04:33:18 2008
New Revision: 673363

URL: http://svn.apache.org/viewvc?rev=673363view=rev
Log:
WICKET-1725

Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java

wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=673363r1=673362r2=673363view=diff
==
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java 
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Wed Jul  
2 04:33:18 2008
@@ -1647,7 +1647,7 @@
// Get converter
final Class? objectClass = modelObject.getClass();
 
-   final IConverterObject converter = 
(IConverterObject) getConverter(objectClass);
+   final IConverterObject converter = 
(IConverterObject)getConverter(objectClass);
 
// Model string from property
final String modelString = 
converter.convertToString(modelObject, getLocale());
@@ -2139,11 +2139,20 @@
}
 
/**
-* Sets the RENDERING flag on component and it's children.
+* THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
+* 
+* Sets the RENDERING flag and removes the PREPARED_FOR_RENDER flag on 
component and it's
+* children.
+* 
+* @param setRenderingFlag
+*if this is false only the PREPARED_FOR_RENDER flag is 
removed from component, the
+*RENDERING flag is not set.
+* 
+* @see #prepareForRender(boolean)
 */
-   public final void markRendering()
+   public final void markRendering(boolean setRenderingFlag)
{
-   internalMarkRendering();
+   internalMarkRendering(setRenderingFlag);
}
 
/**
@@ -2209,8 +2218,14 @@
 * 
 * Prepares the component and it's children for rendering. On whole 
page render this method must
 * be called on the page. On AJAX request, this method must be called 
on updated component.
+* 
+* @param setRenderingFlag
+*Whether to set the rendering flag. This must be true if 
the page is about to be
+*rendered. However, there are usecases to call this method 
without an immediate
+*render (e.g. on stateless listner request target to build 
the component
+*hierarchy), in that case setRenderingFlag should be false
 */
-   public final void prepareForRender()
+   public final void prepareForRender(boolean setRenderingFlag)
{
beforeRender();
ListComponent feedbacks = 
getRequestCycle().getMetaData(FEEDBACK_LIST);
@@ -2223,7 +2238,7 @@
}
}
getRequestCycle().setMetaData(FEEDBACK_LIST, null);
-   markRendering();
+   markRendering(setRenderingFlag);
 
// check authorization
// first the component itself
@@ -2232,6 +2247,17 @@
}
 
/**
+* THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
+* 
+* Prepares the component and it's children for rendering. On whole 
page render this method must
+* be called on the page. On AJAX request, this method must be called 
on updated component.
+*/
+   public final void prepareForRender()
+   {
+   prepareForRender(true);
+   }
+
+   /**
 * Redirects browser to an intermediate page such as a sign-in page. 
The current request's url
 * is saved for future use by method continueToOriginalDestination(); 
Only use this method when
 * you plan to continue to the current url at some later time; 
otherwise just use
@@ -2344,7 +2370,7 @@
markupIndex = markupStream.getCurrentIndex();
}
 
-   markRendering();
+   markRendering(true);
 
setMarkupStream(markupStream);
 
@@ -2935,7 +2961,7 @@
@SuppressWarnings(unchecked)
public final Component setDefaultModelObject(final Object object)
{
-   final IModelObject model = (IModelObject) getDefaultModel();
+   final IModelObject model = (IModelObject)getDefaultModel();
 
// Check whether anything can be set at all
if (model == null)
@@ -4103,10 +4129,14 @@
/**
 * 
 */
-   void internalMarkRendering()
+   void 

[jira] Created: (WICKET-1726) utility class: RedirectException

2008-07-02 Thread Peter Ertl (JIRA)
utility class: RedirectException


 Key: WICKET-1726
 URL: https://issues.apache.org/jira/browse/WICKET-1726
 Project: Wicket
  Issue Type: Improvement
  Components: wicket
Reporter: Peter Ertl


I think it's quite common for wicket applications to redirect to other pages or 
external urls. So I think many people would like RedirectException (and get rid 
of some boilerplate code).

  if(some_condition)
  {
getRequestCycle().setRedirect(true);
throw new RestartResponseException(OtherPage.class);
  }

could be simplified to

  if(some_condition)
throw new RedirectException(OtherPage.class);

The patch also includes:

   RestartResponseException(Class? extends Page pageClass, PageParameters 
params);
   RestartResponseException(Page page);
   RestartResponseException(String url);

Also I think this makes redirecting not only more compact but also easier to 
understand for newbies. They usually don't know about request cycles and stuff 
when they start playing with wicket.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (WICKET-1726) utility class: RedirectException

2008-07-02 Thread Peter Ertl (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Peter Ertl updated WICKET-1726:
---

Attachment: WICKET-1726-1.4.x.patch
WICKET-1726-1.3.x.patch

 utility class: RedirectException
 

 Key: WICKET-1726
 URL: https://issues.apache.org/jira/browse/WICKET-1726
 Project: Wicket
  Issue Type: Improvement
  Components: wicket
Reporter: Peter Ertl
 Attachments: WICKET-1726-1.3.x.patch, WICKET-1726-1.4.x.patch


 I think it's quite common for wicket applications to redirect to other pages 
 or external urls. So I think many people would like RedirectException (and 
 get rid of some boilerplate code).
   if(some_condition)
   {
 getRequestCycle().setRedirect(true);
 throw new RestartResponseException(OtherPage.class);
   }
 could be simplified to
   if(some_condition)
 throw new RedirectException(OtherPage.class);
 The patch also includes:
RestartResponseException(Class? extends Page pageClass, PageParameters 
 params);
RestartResponseException(Page page);
RestartResponseException(String url);
 Also I think this makes redirecting not only more compact but also easier to 
 understand for newbies. They usually don't know about request cycles and 
 stuff when they start playing with wicket.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Closed: (WICKET-1725) BookmarkableListenerInterfaceRequestTarget should call component.prepareForRender instead of beforeRender

2008-07-02 Thread Matej Knopp (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-1725?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matej Knopp closed WICKET-1725.
---


 BookmarkableListenerInterfaceRequestTarget should call 
 component.prepareForRender instead of beforeRender
 -

 Key: WICKET-1725
 URL: https://issues.apache.org/jira/browse/WICKET-1725
 Project: Wicket
  Issue Type: Bug
  Components: wicket
Affects Versions: 1.4-M2
Reporter: Matej Knopp
Assignee: Matej Knopp

 just calling beforeRender doesn't cleanup the PREPARED_FOR_RENDER flag

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



svn commit: r673447 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java

2008-07-02 Thread knopp
Author: knopp
Date: Wed Jul  2 10:31:21 2008
New Revision: 673447

URL: http://svn.apache.org/viewvc?rev=673447view=rev
Log:
WICKET-1724

Modified:

wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java?rev=673447r1=673446r2=673447view=diff
==
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
 Wed Jul  2 10:31:21 2008
@@ -23,6 +23,7 @@
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.apache.wicket.util.string.Strings;
@@ -127,6 +128,12 @@
}
}
 
+   if (page == null)
+   {
+   throw new PageExpiredException(
+   Request cannot be processed. The target page 
does not exist anymore.);
+   }
+
final String pageRelativeComponentPath = 
Strings.afterFirstPathComponent(componentPath,
Component.PATH_SEPARATOR);
Component component = page.get(pageRelativeComponentPath);




[jira] Assigned: (WICKET-1724) Clicking on AjaxLink (when used on a page mounted through QueryStringUrlCodingStrategy) after session-expiry throws a NullPointerException in IE and Safari (i.e. in Book

2008-07-02 Thread Matej Knopp (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-1724?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matej Knopp reassigned WICKET-1724:
---

Assignee: Matej Knopp

 Clicking on AjaxLink (when used on a page mounted through 
 QueryStringUrlCodingStrategy) after session-expiry throws a 
 NullPointerException in IE and Safari (i.e. in 
 BookmarkableListenerInterfaceRequestTarget.processEvents)
 --

 Key: WICKET-1724
 URL: https://issues.apache.org/jira/browse/WICKET-1724
 Project: Wicket
  Issue Type: Bug
  Components: wicket
Affects Versions: 1.3.3, 1.4-M2
 Environment: JDK 5.0, RHEL 4
Reporter: Farhan
Assignee: Matej Knopp
 Attachments: myproject.zip


 Clicking an AjaxLink (after session-expiry period) on a page mounted through 
 QueryStringUrlCodingStrategy results in a NullPointerException in 
 Root cause:java.lang.NullPointerException 
 at 
 org.apache.wicket.request.target.component.BookmarkableListenerInterfaceRequestTarget.processEvents(BookmarkableListenerInterfaceRequestTarget.java:131)

 at 
 org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
  
 at 
 org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1171)
  
 at org.apache.wicket.RequestCycle.step(RequestCycle.java:1248) 
 at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1349) 
 at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) 
 at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:387)  

 at 
 org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:199)  

 at 
 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
  
 at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)   
   
 at 
 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)   
   
 at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)   
   
 at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)   
   
 at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
 at 
 org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
   
 at 
 org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

 at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)   
   
 at org.mortbay.jetty.Server.handle(Server.java:324)
 at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
 at 
 org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)

 at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
 at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
 at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)  
 at 
 org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)  
  
 at 
 org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



svn commit: r673448 - /wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java

2008-07-02 Thread knopp
Author: knopp
Date: Wed Jul  2 10:32:29 2008
New Revision: 673448

URL: http://svn.apache.org/viewvc?rev=673448view=rev
Log:
WICKET-1724

Modified:

wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java

Modified: 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java?rev=673448r1=673447r2=673448view=diff
==
--- 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
 (original)
+++ 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
 Wed Jul  2 10:32:29 2008
@@ -23,6 +23,7 @@
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.apache.wicket.util.string.Strings;
@@ -126,6 +127,12 @@
}
}
 
+   if (page == null)
+   {
+   throw new PageExpiredException(
+   Request cannot be processed. The target page 
does not exist anymore.);
+   }
+   
final String pageRelativeComponentPath = 
Strings.afterFirstPathComponent(componentPath,
Component.PATH_SEPARATOR);
Component component = page.get(pageRelativeComponentPath);




svn commit: r673531 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java

2008-07-02 Thread knopp
Author: knopp
Date: Wed Jul  2 15:28:35 2008
New Revision: 673531

URL: http://svn.apache.org/viewvc?rev=673531view=rev
Log:
WICKET-1560

Modified:

wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java?rev=673531r1=673530r2=673531view=diff
==
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java 
(original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java 
Wed Jul  2 15:28:35 2008
@@ -21,7 +21,6 @@
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.html.border.Border;
 import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.markup.repeater.AbstractRepeater;
 
 /**
  * Responding to an AJAX request requires that we position the markup stream 
at the component
@@ -83,8 +82,7 @@
{
// WICKET-1560
Component parent = 
component.getParent();
-   if (parent instanceof 
AbstractRepeater  id != null 
-   
id.equals(parent.getId()))
+   if (id != null  
id.equals(parent.getId()))
{
return 
markupStream;
}




svn commit: r673542 - in /wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree: AbstractTree.java res/tree.js

2008-07-02 Thread knopp
Author: knopp
Date: Wed Jul  2 16:22:06 2008
New Revision: 673542

URL: http://svn.apache.org/viewvc?rev=673542view=rev
Log:
tree fixes

Modified:

wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java

wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js

Modified: 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=673542r1=673541r2=673542view=diff
==
--- 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
 (original)
+++ 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
 Wed Jul  2 16:22:06 2008
@@ -35,6 +35,7 @@
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.HeaderContributor;
 import org.apache.wicket.behavior.IBehavior;
+import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
@@ -190,8 +191,10 @@
{
// yes, write empty div with id
// this is necessary for createElement js to 
work correctly
+   String tagName = 
((ComponentTag)markupStream.get()).getName();
getResponse().write(
-   div style=\display:none\ id=\ + 
getMarkupId() + \/div);
++ tagName +  
style=\display:none\ id=\ + getMarkupId() + \/ +
+   tagName + );
markupStream.skipComponent();
}
else
@@ -1229,6 +1232,26 @@
{
invalidateNode(node, false);
}
+   
+   /**
+* INTERNAL
+* 
+* @param node
+*/
+   public final void markNodeChildrenDirty(TreeNode node)
+   {
+   TreeItem item = (TreeItem)nodeToItemMap.get(node);
+   if (item != null)
+   {
+   visitItemChildren(item, new IItemCallback()
+   {
+   public void visitItem(TreeItem item)
+   {
+   
invalidateNode((TreeNode)item.getModelObject(), false);
+   }
+   });
+   }
+   }
 
/**
 * Invalidates single node (without children). On the next render, this 
node will be updated.

Modified: 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js?rev=673542r1=673541r2=673542view=diff
==
--- 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js
 (original)
+++ 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js
 Wed Jul  2 16:22:06 2008
@@ -51,7 +51,7 @@
}
 
var after = document.getElementById(afterId);
-   var newNode = document.createElement(script);
+   var newNode = document.createElement(after.tagName);
newNode.setAttribute(id, elementId);
 
var p = after.parentNode;




svn commit: r673543 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree: AbstractTree.java res/tree.js

2008-07-02 Thread knopp
Author: knopp
Date: Wed Jul  2 16:23:25 2008
New Revision: 673543

URL: http://svn.apache.org/viewvc?rev=673543view=rev
Log:
tree fixes

Modified:

wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java

wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=673543r1=673542r2=673543view=diff
==
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
 Wed Jul  2 16:23:25 2008
@@ -33,6 +33,7 @@
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.HeaderContributor;
 import org.apache.wicket.behavior.IBehavior;
+import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
@@ -196,8 +197,10 @@
{
// yes, write empty div with id
// this is necessary for createElement js to 
work correctly
+   String tagName = 
((ComponentTag)markupStream.get()).getName();
getResponse().write(
-   div style=\display:none\ id=\ + 
getMarkupId() + \/div);
++ tagName +  
style=\display:none\ id=\ + getMarkupId() + \/ +
+   tagName + );
markupStream.skipComponent();
}
else
@@ -631,8 +634,7 @@
}
 
/**
-* @see 
org.apache.wicket.markup.html.tree.ITreeStateListener#nodeExpanded(javax.swing.tree.TreeNode
-*  )
+* @see 
org.apache.wicket.markup.html.tree.ITreeStateListener#nodeExpanded(javax.swing.tree.TreeNode
 )
 */
public final void nodeExpanded(Object node)
{
@@ -643,8 +645,7 @@
}
 
/**
-* @see 
org.apache.wicket.markup.html.tree.ITreeStateListener#nodeSelected(javax.swing.tree.TreeNode
-*  )
+* @see 
org.apache.wicket.markup.html.tree.ITreeStateListener#nodeSelected(javax.swing.tree.TreeNode
 )
 */
public final void nodeSelected(Object node)
{

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js?rev=673543r1=673542r2=673543view=diff
==
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js
 Wed Jul  2 16:23:25 2008
@@ -51,7 +51,7 @@
}
 
var after = document.getElementById(afterId);
-   var newNode = document.createElement(div);
+   var newNode = document.createElement(after.tagName);
newNode.setAttribute(id, elementId);
 
var p = after.parentNode;




[jira] Commented: (WICKET-1724) Clicking on AjaxLink (when used on a page mounted through QueryStringUrlCodingStrategy) after session-expiry throws a NullPointerException in IE and Safari (i.e. in Boo

2008-07-02 Thread Farhan (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-1724?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12610096#action_12610096
 ] 

Farhan commented on WICKET-1724:


Thanks for the quick fix, Matej. Verified on 1.3 branch and it looks good, both 
in Safari and IE.

 Clicking on AjaxLink (when used on a page mounted through 
 QueryStringUrlCodingStrategy) after session-expiry throws a 
 NullPointerException in IE and Safari (i.e. in 
 BookmarkableListenerInterfaceRequestTarget.processEvents)
 --

 Key: WICKET-1724
 URL: https://issues.apache.org/jira/browse/WICKET-1724
 Project: Wicket
  Issue Type: Bug
  Components: wicket
Affects Versions: 1.3.3, 1.4-M2
 Environment: JDK 5.0, RHEL 4
Reporter: Farhan
Assignee: Matej Knopp
 Fix For: 1.3.5, 1.4-M3

 Attachments: myproject.zip


 Clicking an AjaxLink (after session-expiry period) on a page mounted through 
 QueryStringUrlCodingStrategy results in a NullPointerException in 
 Root cause:java.lang.NullPointerException 
 at 
 org.apache.wicket.request.target.component.BookmarkableListenerInterfaceRequestTarget.processEvents(BookmarkableListenerInterfaceRequestTarget.java:131)

 at 
 org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
  
 at 
 org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1171)
  
 at org.apache.wicket.RequestCycle.step(RequestCycle.java:1248) 
 at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1349) 
 at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) 
 at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:387)  

 at 
 org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:199)  

 at 
 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
  
 at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)   
   
 at 
 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)   
   
 at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)   
   
 at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)   
   
 at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
 at 
 org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
   
 at 
 org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

 at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)   
   
 at org.mortbay.jetty.Server.handle(Server.java:324)
 at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
 at 
 org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)

 at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
 at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
 at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)  
 at 
 org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)  
  
 at 
 org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



svn commit: r673554 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java

2008-07-02 Thread knopp
Author: knopp
Date: Wed Jul  2 17:52:57 2008
New Revision: 673554

URL: http://svn.apache.org/viewvc?rev=673554view=rev
Log:
unselect deleted item

Modified:

wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=673554r1=673553r2=673554view=diff
==
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
 Wed Jul  2 17:52:57 2008
@@ -830,6 +830,8 @@
}
});
 
+   
getTreeState().selectNode(item.getDefaultModelObject(), false);
+
removeItem(item);
}
}




svn commit: r673555 - /wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java

2008-07-02 Thread knopp
Author: knopp
Date: Wed Jul  2 17:53:47 2008
New Revision: 673555

URL: http://svn.apache.org/viewvc?rev=673555view=rev
Log:
unselect deleted item

Modified:

wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java

Modified: 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=673555r1=673554r2=673555view=diff
==
--- 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
 (original)
+++ 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
 Wed Jul  2 17:53:47 2008
@@ -831,6 +831,8 @@

getTreeState().selectNode((TreeNode)item.getModelObject(), false);
}
});
+   
+   
getTreeState().selectNode((TreeNode)item.getModelObject(), false);
 
removeItem(item);
}




[jira] Commented: (WICKET-1310) StringValidator.maximumLength should automatically add maxlength html attribute

2008-07-02 Thread Timo Rantalaiho (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-1310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12610117#action_12610117
 ] 

Timo Rantalaiho commented on WICKET-1310:
-

Likewise, sometimes even for TextField you want to allow the user to enter the 
whole input but show that she must shorten it. Take for example a case where 
the user pastes a long message from somewhere to a field that is used to enter 
text of an SMS message, max 160 characters. Then it's a lot better to show the 
whole input and an (Ajax / Javascript) error message right away to let the user 
shorten the message, instead of just cutting it at 160 characters.

So if something like this is done, it should be optional.

 StringValidator.maximumLength should automatically add maxlength html 
 attribute
 ---

 Key: WICKET-1310
 URL: https://issues.apache.org/jira/browse/WICKET-1310
 Project: Wicket
  Issue Type: Improvement
Affects Versions: 1.3.1
Reporter: Ryan Sonnek
Assignee: Johan Compagner
Priority: Minor
 Fix For: 1.5-M1

 Attachments: patch.txt


 Validating max length of strings should not require a round trip to the 
 server.  adding the html attribute to forms will prevent data entry on the 
 client side.
 I'm manually doing this as part of the wicketstuff-hibernate project, but it 
 would be great to just have this built into wicket.
 http://wicket-stuff.svn.sourceforge.net/viewvc/wicket-stuff/trunk/wicketstuff-hibernate-behavior/src/main/java/org/wicketstuff/hibernate/annotation/HibernateAnnotationComponentConfigurator.java?view=markup
 I understand that currently validators can be used independently of Wicket 
 and don't know about components or behaviors, but i'm recommending this be 
 changed.  Wicket is a *web framework*, not a *validation library*.  If i want 
 a portable validation library, I'll use commons-validation, not wicket.  So, 
 the validators should be *web validators* and be able to modify components or 
 render custom javascript to help with web validation.
 FYI: tapestry does it!  =)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (WICKET-1560) MarkupFragmentFinder fails on transparent resolvers within Repeaters

2008-07-02 Thread Jan Kriesten (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12610121#action_12610121
 ] 

Jan Kriesten commented on WICKET-1560:
--

If you don't extend AbstractRepeater, in which way does this affect you at all?

 MarkupFragmentFinder fails on transparent resolvers within Repeaters
 

 Key: WICKET-1560
 URL: https://issues.apache.org/jira/browse/WICKET-1560
 Project: Wicket
  Issue Type: Bug
  Components: wicket
Affects Versions: 1.3.3, 1.4-M1
 Environment: Any
Reporter: Jan Kriesten
Assignee: Gerolf Seitz
Priority: Critical
 Fix For: 1.3.4, 1.4-M2


 I extended the AjaxDataTable to be able to add Rows to certain states of the 
 rows. However, MarkupFragmentFinder fails to resolve the code under this 
 condition since it compares with the wrong components in this case:
 Markup:
 wicket:container wicket:id=rows
   tr wicket:id=rowtd wicket:id=cellsspan 
 wicket:id=cell[cell]/span/td/tr
   tr wicket:id=action-row class=actionRow/tr
 /wicket:container
 'row' is the transparent resolver in this case to maintain the hierarchy 
 needed by the DataTable. MarkupFragmentFinder fails in the case of adding a 
 cell to an AjaxRequestTarget. 
 Fix:
 Everything works as expected, when MarkupFragmentFinder checks for the parent 
 being an AbstractRepeater and in the case compares the parent.id with the 
 supplied id (code provided by Gerolf):
 if (elem instanceof ComponentTag)
 {
   ComponentTag tag = (ComponentTag)elem;
   String id = tag.getId();
   if ((id != null)  id.equals(component.getId()))
   {
 // Ok, found it
 return markupStream;
   }
   else   
   {   
 Component parent = component.getParent();   
 if (parent instanceof AbstractRepeater  id != null  
 id.equals(parent.getId()))   
 {   
   return markupStream;   
 }   
   }
 }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.