Either components which dynamically create markup, that is what you are referring to, but also components which have specific requirements on where to find/load the markup from (see wicket-examples)
Juergen On 8/22/06, Johan Compagner <[EMAIL PROTECTED]> wrote: > The component that has the markup itself doesn't have to load it in the > constructor i guess. > Because we don't have to resolve it really. > > But how do we know that? > > johan > > > > On 8/22/06, Juergen Donnerstag <[EMAIL PROTECTED]> wrote: > > > A problem I came across recently: > container.newMarkupResourceStream() > is called to load the markup and overriding it allows users to develop > components with very special needs regarding the source of the markup > stream. As this method is invoked from Component.<init>, you can not > rely on any parameter passed to MyComponent.<init> nor on any > initializating in your component to control markup loading. It renders > container.newMarkupResourceStream() almost useless now. > Wouldn't it be > better to lazy load the markup when needed or at least to allow for > lazy loading if needed? > > Juergen > > On 8/22/06, Johan Compagner <[EMAIL PROTECTED]> wrote: > > i want to stress out that it is not just for ajax! > > It is for everything in 2.0. Markup should be there when the component is > > constructed > > because developers could depend on it now in the constructor and if > because > > of some > > parent in the change that couldn't match somehow it suddenly doesn't work > > everything could break. > > > > johan > > > > > > > > On 8/22/06, Juergen Donnerstag < [EMAIL PROTECTED]> wrote: > > > > > Not yet, until now I prepared the markup loading process to be better > > prepared for the change. The change we are talking about is not a > > small change. It means to turn the render process inside out and I > > thought that is planned for V3. IMO there will be no perfect solution > > for V2 which is due in ~2 months. We'll have a more flexible and > > pluggable markup finder implementation soon, but users implementing > > there own component resolvers will have to implement there own markup > > finder as well (if the component is meant to be accessible from ajax). > > So, for V2 everything is possible, but with room for improvement. The > > question probably is how many users are implementing there own > > resolvers and hence are affected. > > > > Juergen > > > > On 8/22/06, Igor Vaynberg < [EMAIL PROTECTED]> wrote: > > > so whats the deal with the resolvers? you guys come up with something > > > concrete? > > > > > > i was thinking about the repeaters - currently if you look at > > ICellPopulator > > > the populateItem method looks like this: > > > > > > void populateItem(final Item cellItem, final String componentId, final > > > IModel rowModel); > > > > > > that componentId is not really necessary because i can use > > > IComponentResolver to match the markup to any id as long as there is > only > > > one component in the cellItem. so that will save some pain. there are a > > few > > > other places that are in the exact same boat, so there we can also > > improve. > > > but before i do this i would like to know if we are going to rip out the > > > icomponentresolver and replace it with something else or if its going to > > > stay for good. > > > > > > -Igor > > > > > > > > > > > > On 8/8/06, Johan Compagner <[EMAIL PROTECTED]> wrote: > > > > > > > > > > But we really need to find a solution for that before the final of 2.0 > > > Drop the resolver completely or whatever for me we can't support both > > things > > > Then when using a custom what ever resolver will completely bypase the > > > constructor change.. > > > That just can't be in my eyes. > > > > > > We should just think about a solution as soon as possible so that all > the > > > components > > > gets on constructor time there markup resolved. Not at render time > anymore > > > > > > So how can we do that.. How would you rewrite the current resolvers we > > have > > > here in core > > > (So don't think about custom resolves) > > > > > > > > > johan > > > > > > > > > On 8/8/06, Juergen Donnerstag < [EMAIL PROTECTED] > wrote: > > > > On 8/8/06, Johan Compagner < [EMAIL PROTECTED] > wrote: > > > > > yeah looking that the IComponentResolvers implementations > > > > > They are not really for resolving markup for a component > > > > > But they are much more resolving components (creating them) for the > > > markup. > > > > > And some are really calling render() on components so they really > > think > > > they > > > > > are in the render phase. > > > > > > > > > > But we have to resolve the markup of the component in the > constructor > > > > > Everything just "depends" on that now. We are saying now in 2.0 that > > you > > > can > > > > > do anything > > > > > in the constructor of your component/panel. That you have everything > > > there > > > > > now (attributes and so on) > > > > > > > > > > We just can't make exceptions there that sometimes that isn't true.. > > > That > > > > > would just be wrong. > > > > > > > > The current implementation is already a temporary solution only. I > > > > don't see any issues with changing it until the resolver approach has > > > > been completely removed. Keeping it as is means that some 1.2 code > > > > doesn't work in 2.0. That includes e.g. bordered pages as well as all > > > > apps where users created there own resolvers. > > > > > > > > > So we just have to find a way to always be able to resolve the (none > > > > > autoadd) components that are > > > > > added in the constructor.. > > > > > > > > > > What kind of situations do fail now? > > > > > > > > > > > > > see above. Because users have been allowed to create there own > > > > resolvers, and they did in the past, IMO there is no simple solution. > > > > Eventually they'll have to create a IMarkupFinder for there own > > > > resolvers, but until we changed the core these applications shouldn't > > > > fail all by a sudden. > > > > > > > > Juergen > > > > > > > > > > > > > > johan > > > > > > > > > > > > > > > > > > > > On 8/8/06, Juergen Donnerstag <[EMAIL PROTECTED] > wrote: > > > > > > On 8/8/06, Johan Compagner < [EMAIL PROTECTED] > wrote: > > > > > > > What do you mean the current new code (the code now in > components > > > > > > > constuctor?) > > > > > > > is only there for ajax? > > > > > > > > > > > > > > > > > > > The MarkupFragmentFinder has been developed to support AJAX calls. > > As > > > > > > it can be used to detected markup errors early, it has been added > to > > > > > > the Component constructor. > > > > > > > > > > > > > It has nothing to do with ajax. It has everything to do with > fail > > as > > > > > early > > > > > > > as possible when > > > > > > > > > > > > clearly it has. see above. > > > > > > > > > > > > > adding components to a parent. > > > > > > > The MarkupFinder has to be improved that it uses also the > > > > > MarkupResolvers > > > > > > > somehow. > > > > > > > > > > > > I don't think that it is possible. Resolvers work exactly the > > reverse > > > > > > order. Resolvers take a wicket:id and find the component in the > > > > > > hierarchy. MarkupFragmentFinder takes the component id and > searches > > > > > > for the markup fragment. IMO the idea of the resolvers should find > > > > > > there way into core, but the implementations will be completely > > > > > > different. > > > > > > But that wouldn't solve the problem. The whole render() process is > > > > > > based on the "traditional" approach. We would need to change that > as > > > > > > well to eliminate the need for "traditional" approach. Otherwise > > > > > > you'll allways have to maintain two resolvers, one for the > > > > > > "traditional" render process and one for the MarkupFragmentFinder. > > > > > > > > > > > > > > > > > > > > We just have to have 1 perfect way to resolve the markup that > > > belongs to > > > > > a > > > > > > > component. > > > > > > > > > > > > I completely agree, but I don't think it can be done over night. > > > > > > > > > > > > > And that should be called in the constructor of the component. > > > > > > > > > > > > > > > > > > > yes. And until it is available we should replace the exceptions > with > > > logs. > > > > > > > > > > > > Juergen > > > > > > > > > > > > > johan > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 8/8/06, Juergen Donnerstag < [EMAIL PROTECTED] > > > > wrote: > > > > > > > > > > > > > > > Since we introduced Ajax we have two different means to > associate > > > > > > > Components and Markup. The "traditional" way which resolves the > > > > > > > Component based on the wicket:id, and since this approach didn't > > > work > > > > > > > Ajax where we needed per Component render, the new approach > > resolves > > > > > > > the Markup based on the Component id. The traditional approach > > (more > > > > > > > specific the implementation of the approach) in Wicket is far > more > > > > > > > flexible and evolved than the new one and is able to handle > > > situations > > > > > > > which the new one can't. That will hopefully change soon, but > > until > > > > > > > than I propose the following change: > > > > > > > > > > > > > > The current code in Component basically disables all traditional > > > > > > > resolvers which are more sofisticated than the new one, however > as > > > > > > > stated above the new approach is only used for AJAX components. > > > > > > > Instead of throwing an exception if the new one doesn't find the > > > > > > > markup, I'd much rather log a warning and go on as usual, as > there > > > is > > > > > > > a high potential that the code still works. I had a several such > > > > > > > examples in wicket-examples. > > > > > > > > > > > > > > Any objections? > > > > > > > > > > > > > > Juergen > > > > > > > > > > > > > > Component.java: > > > > > > > public Component(MarkupContainer<?> parent, final String id, > final > > > > > > > IModel<T> model) > > > > > > > { > > > > > > > try > > > > > > > { > > > > > > > MarkupStream markupStream = MarkupFragmentFinder.find > > (this); > > > > > > > ComponentTag tag = markupStream.getTag(); > > > > > > > if (tag.hasAttributes ()) > > > > > > > { > > > > > > > markupAttributes = new > > > > > CopyOnWriteValueMap(tag.getAttributes()); > > > > > > > } > > > > > > > } > > > > > > > catch (MarkupException ex) > > > > > > > { > > > > > > > log.warn("MarkupFragmentFinder was unable to find the > > markup > > > > > > > associated with Component '" > > > > > > > + id + "'. You will not be able to use the component > > for > > > > > > > AJAX calls."); > > > > > > > // throw ex; > > > > > > > } > > > > > > > catch (RuntimeException re) > > > > > > > { > > > > > > > log.warn("MarkupFragmentFinder was unable to find the > > markup > > > > > > > associated with Component '" > > > > > > > + id + "'. You will not be able to use the > component > > > for > > > > > > > AJAX calls."); > > > > > > > // throw new > > WicketRuntimeException("Couldn't > > > > > find > > > > > > > the markup of > > > > > > > the component '" + id > > > > > > > // + "' in parent " + parent.getPageRelativePath (), re); > > > > > > > } > > > > > > > parent.add(this); > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > > > Using Tomcat but need to do more? Need to support web services, > > > > > security? > > > > > > > Get stuff done quickly with pre-integrated technology to make > your > > > job > > > > > > > easier > > > > > > > Download IBM WebSphere Application Server v.1.0.1 based on > Apache > > > > > Geronimo > > > > > > > > > > > > > > > > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > > > > _______________________________________________ > > > > > > > Wicket-develop mailing list > > > > > > > Wicket-develop@lists.sourceforge.net > > > > > > > > > > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > > > Using Tomcat but need to do more? Need to support web services, > > > > > security? > > > > > > > Get stuff done quickly with pre-integrated technology to make > your > > > job > > > > > > > easier > > > > > > > Download IBM WebSphere Application Server v.1.0.1 based on > Apache > > > > > Geronimo > > > > > > > > > > > > > > > > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > > > > > > > > > > > _______________________________________________ > > > > > > > Wicket-develop mailing list > > > > > > > Wicket-develop@lists.sourceforge.net > > > > > > > > > > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > > Using Tomcat but need to do more? Need to support web services, > > > security? > > > > > > Get stuff done quickly with pre-integrated technology to make your > > job > > > > > easier > > > > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache > > > Geronimo > > > > > > > > > > > > > > > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > > > _______________________________________________ > > > > > > Wicket-develop mailing list > > > > > > Wicket-develop@lists.sourceforge.net > > > > > > > > > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > Using Tomcat but need to do more? Need to support web services, > > > security? > > > > > Get stuff done quickly with pre-integrated technology to make your > job > > > > > easier > > > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache > > > Geronimo > > > > > > > > > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > > > > > > > _______________________________________________ > > > > > Wicket-develop mailing list > > > > > Wicket-develop@lists.sourceforge.net > > > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > Using Tomcat but need to do more? Need to support web services, > > security? > > > > Get stuff done quickly with pre-integrated technology to make your job > > > easier > > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache > > Geronimo > > > > > > > > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > _______________________________________________ > > > > Wicket-develop mailing list > > > > Wicket-develop@lists.sourceforge.net > > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > > Using Tomcat but need to do more? Need to support web services, > security? > > > Get stuff done quickly with pre-integrated technology to make your job > > > easier > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache > Geronimo > > > > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > > > _______________________________________________ > > > Wicket-develop mailing list > > > Wicket-develop@lists.sourceforge.net > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > Using Tomcat but need to do more? Need to support web services, > security? > > > Get stuff done quickly with pre-integrated technology to make your job > > > easier > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache > Geronimo > > > > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > > > _______________________________________________ > > > Wicket-develop mailing list > > > Wicket-develop@lists.sourceforge.net > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > Using Tomcat but need to do more? Need to support web services, security? > > Get stuff done quickly with pre-integrated technology to make your job > > easier > > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > _______________________________________________ > > Wicket-develop mailing list > > Wicket-develop@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > > ------------------------------------------------------------------------- > > Using Tomcat but need to do more? Need to support web services, security? > > Get stuff done quickly with pre-integrated technology to make your job > > easier > > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > _______________________________________________ > > Wicket-develop mailing list > > Wicket-develop@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > ------------------------------------------------------------------------- > > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Wicket-develop mailing list > Wicket-develop@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > _______________________________________________ > Wicket-develop mailing list > Wicket-develop@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Wicket-develop mailing list Wicket-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-develop