Edward,

Thanks for the patch and hard work, i'll apply the patch right away.
As far as I see the root problem is in the way gmap 1.0 is designed; it
doenst really fit with wicket 2.0 model where we haveto pass the parent as
contructor argument. as you said, porting and issues that appear might be
long, an overkill and we have to do all kind of workarounds to fit it.

my initial thinking was to redesign gmap for wicket 2.0, i put some ideas on
paper but nothing concrete yet.
but still till that time i'll apply your patch and see how it goes. keep in
touch.

/iulian

On 1/31/07, Edward Yakop <[EMAIL PROTECTED]> wrote:

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.


-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user




-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to