Hi,

Just continuing from this thread.

I'm currently helping [EMAIL PROTECTED] to get their *secret* project
going. I svn co the gmap contrib with version 1712 and try to migrate
their existing code to use wicket-2.0 and pax-wicket-2.0.

During migration I noticed a couple of bug in gmap migration to wicket-2.0:
* In the gmap-examples, in the constructor of HomePage()
 the label is instantiated with parent as HomePage.
 the info panel is instantiated with parent as HomePage.

 The homepage does not have "INFO_COMPONENT_ID" wicket id.

 The fix is rather long, instead of passing component to marker, I
decided to pass the component factory. This way, we can delay the
instantiation of the label/info panel as late as possible, and also,
there is no hardcoding involve on the user of gmap to ensure the
wicket id of the component is "INFO_COMPONENT_ID".

 ComponentFactory interface is added with the following signature.
<code>
public interface ComponentFactory<T extends Component> extends Serializable
{
        <V extends MarkupContainer> T createComponent(V parent, String 
wicketId);
}
</code>

  - Update GMarker constructor to accept ComponentFactory instead of Component.
  - Update GMarker#getComponent() method to use ComponentFactory. The
method signature becomes Gmarker#getComponent( MarkupContainer parent,
String wicketId )
  - Update GMarkerContainer constructor to use GMarker#getComponent(
MarkupContainer, String ) and remove static checking that the
component id must be "INFO_COMPONENT_ID".

* Fix up InfoPanel at populateItem( final ListItem<Developer> item).
 the labels are added to (this), where it should be added to (item).

* For some odd reason that only one marker can be clicked at the
beginning, after that NullPointerException is thrown.

<stacktrace>
SEVERE: Error while responding to an AJAX request:
[EMAIL PROTECTED] markupIdToComponent
[{1787073357512=[MarkupContainer [Component id = gmarkerContainer,
page = wicket.contrib.examples.gmap.HomePage, path =
0:gmap:gmapContainer:gmarkersLoop:1:gmarkerContainer.GMarkerContainer,
isVisible = true, isVersioned = true]]}], prependJavascript [[]],
appendJavascript [[]]
wicket.WicketRuntimeException: Error attaching this container for
rendering: [MarkupContainer [Component id = gmarkerInfo, page =
wicket.contrib.examples.gmap.HomePage, path =
0:gmap:gmapContainer:gmarkersLoop:1:gmarkerContainer:gmarkerInfo
.InfoPanel, isVisible = true, isVersioned = true]]
       at wicket.MarkupContainer.attachChildren(MarkupContainer.java:383)
       at wicket.Component.attach(Component.java:2784)
       at wicket.MarkupContainer.attachChildren(MarkupContainer.java:372)
       at wicket.Component.attach(Component.java:2784)
       at 
wicket.ajax.AjaxRequestTarget.respondComponents(AjaxRequestTarget.java:448)
       at wicket.ajax.AjaxRequestTarget.respond(AjaxRequestTarget.java:339)
       at 
wicket.request.compound.DefaultResponseStrategy.respond(DefaultResponseStrategy.java:53)
       at 
wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(AbstractCompoundRequestCycleProcessor.j
ava:65)
       at wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:944)
       at wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:978)
       at wicket.RequestCycle.step(RequestCycle.java:1054)
       at wicket.RequestCycle.steps(RequestCycle.java:1125)
       at wicket.RequestCycle.request(RequestCycle.java:470)
       at wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:232)
       at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
       at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
       at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
       at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
       at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
       at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
       at 
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
       at 
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
       at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
       at org.mortbay.jetty.Server.handle(Server.java:285)
       at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
       at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:751)
       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:500)
       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
       at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
       at 
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: java.lang.NullPointerException
       at wicket.Page.componentStateChanging(Page.java:328)
       at wicket.Component.addStateChange(Component.java:2556)
       at wicket.MarkupContainer.removeAll(MarkupContainer.java:510)
       at wicket.markup.html.list.ListView.onGenerateItems(ListView.java:597)
       at wicket.markup.html.list.ListView.onAttach(ListView.java:550)
       at wicket.Component.attach(Component.java:2773)
       at wicket.MarkupContainer.attachChildren(MarkupContainer.java:372)
       ... 33 more
</stacktrace>

I'm not sure what caused this, and why it only works once. Hope
somebody can enlighten me :)

Regards,
Edward Yakop


Note: The attached are patch of the bug fixes.

Attachment: wicket-contrib-gmap_as_1712.patch
Description: Binary data

Attachment: wicket-contrib-gmap-examples_as_1712.patch
Description: Binary data

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to