All,

I've just released 1.1-beta 3. It contains the first cut of the IPageable interface change, and it is the first release after the validation changes. Please test this release and see how we can possibly improve on these parts.

We want to finalize the 1.1 branch as soon as possible, but not without sacrificing quality. So please help us test this release and send in your bug reports.

The sooner we finalize 1.1, the sooner we can focus on 1.2 and bring you Ajax, Portlets and all other nice things.

Announcement:
==========

The wicket team is pleased to announce the Wicket 1.1-b3 release!

http://wicket.sourceforge.net

Wicket is a Java web application framework that takes simplicity, separation of concerns and ease of development to a whole new level. Wicket pages can be
mocked up, previewed and later revised using standard WYSIWYG HTML design
tools. Dynamic content processing and form handling is all handled in Java
code using a first-class component model backed by POJO data beans that can
easily be persisted using your favourite technology.

Changes in this version include:

 New Features:

o Added debug toString() methods to all models in wicket.model Issue:
 1260304. Thanks to Dariusz Wojtas.
o Added MarkupContainer.iterator(Comparator comparator)
o Changed StaticResourceReference and StaticResource to
 PackageResourceReference and PackageResource, then added an Application
parameter to each to make that explicit. Added IComponentInitializer method
 that is called in Application constructor for each class listed in
 META-INF/wicket-component-initializers.txt. This will allow component
 developers to initialize resources when the app starts up. For
 applications, you can also create a
META-INF/[ApplicationName]-wicket-component-initializers.txt if you want to
 preload resources or otherwise initialize for pages. Made changes to
 ImagesApplication to demo this, including an example that preloads the
 cancel button via
 META-INF/ImagesApplication-wicket-component-initializers.txt
o Added min, max and length parameters to the error message interpolation of
 LengthValidator
o Added WebSession.getId() and WebRequestCycle.getWebSession()
o added AbstractReadOnlyModel Issue: 1250030. Thanks to Igor Vaynberg.

 Fixed bugs:

o Refactored PackageResource to not depend on package anymore. Package
 provides the wrong classloader (if any) for loading the resource. It now
 uses the scope class, which is consistent with the rest of our resource
 story. Issue: 1263801.
o AbstractDetachableModel doesn't propogate attach/detach Issue: 1253113.
 Thanks to Cameron Braid.
o Javadoc missing for AbstractChoice Issue: 1247719. Thanks to Gili Tzabari.
o ListMultipleChoice doesn't support maxRows Issue: 1253999.
o PageParameters doesn't escape markup in values Issue: 1259701. Thanks to
 Francis Amanfo.
o Can't have two FeedbackPanels - fixed in conjunction with 1219458 Issue:
 1263096. Thanks to Simon Berriman.
o FeedbackPanel produces illegal HTML - The initial state of the
 FeedbackPanel produces empty ul open and close tag since there is no
 initial message to display. This is illegal HTML according to the HTML
 validator (XHTML strict mode). Issue: 1219458. Thanks to Gili Tzabari.
o Fixed WicketServlet.doGet URI bug Issue: 1261052 . Thanks to Jan Bares.
o fix for classloading problems that caused problems loading markup/
 resources for components that were loaded by another classloader than the
 current one.
o Fix HTML generated from AbstractChoice - Added missing space after 'option
 selected="selected"' Issue: 1249961. Thanks to Cameron Braid.
o AbstractDetachableModel didn't propogate attach/detach Issue: 1253113.
 Thanks to Cameron Braid.

 Changes:

o Extended markup inheritance to support panels and borders as well
o Added getBoolean() to ValueMap Issue: 1254379. Thanks to Phil Kulak.
o Made LoadableDetachableModel.getNestedModel() non final Issue: 1253111.
 Thanks to Cameron Braid.
o Changed implementation of component map in MarkupContainer to an array
model like the validators changed. This made a significant reduction in the size of pages, especially big pages. For example, nested shrank from 69,958
 bytes to 55,231 bytes which is a savings of 14,727 bytes that was due to
HashMap overhead. Very large containers may run slower, but most containers are likely to be faster as should be recursion/iteration. The main downside
 is that this code is very ugly and involves the same kinds of tests and
 casts that we did to make the validators implementation more space
 efficient.
o refactored feedback completely. the new code is smaller, more powerful and more elegant. but it will break clients. most clients who are using simple
 features of the old feedback code will only have to (a) change their
package imports from wicket to wicket.feedback (because the feedback stuff is several more class files that are polluting the root package and likely
 to grow due to the new filtering mechanism) and (b) delete any IFeedback
argument to Form. clients who are looking for more powerful ways to filter their messages will now have completely unlimited capacity to do so through
 the new IFeedbackMessageFilter interface and the default filter
 implementations ComponentFeedbackMessageFilter,
 ContainedByFeedbackMessageFilter and ErrorLevelFeedbackMessageFilter. the
 whole model for feedback messages has changed from one of
component-orientation, which was a mistake, to one of message orientation.
 to give feedback, a feedback component implements the new IFeedback
 interface which contains just updateFeedback(). in this method, which is
 called before the page is rendered, the component can use the
 FeedbackMessages.messages() method in combination with a filter
 implementing IFeedbackMessageFilter to retrieve a list of appropriate
messages. all feedback messages on the page are pushed through this filter.
 messages for which IFeedbackMessageFilter.accept() returns true are added
 to the list. for example, the new FormComponentFeedbackBorder uses the
 ContainedByFeedbackMessageFilter in its call to
 FeedbackMessages.messages(). The filter being used by the form component
 feedback border can be changed by overriding the
 getFeedbackMessagesFilter() method. This combination allows
 FormComponentFeedbackBorder to show its error indicator by default when a
 component that it contains has an error, but allows the user to override
 this behavior. another example is provided in
 FormComponentFeedbackIndicator, which is a panel showing a red star (and
 overridable with you own markup!) that shows or hides itself depending on
 the result of the filter returned by the overridable
 getFeedbackMessageFilter() method. if the filter accepts at least one
message, the indicator will show itself. if no message matches the filter,
 the indicator will hide itself. note that feedback message filters do not
 necessarily have to have anything to do with components. you can install,
for example, an ErrorLevelFeedbackMessageFilter which filters out messages
 below a certain threshold. or you can make a custom filter that uses any
 attribute of FeedbackMessage to filter on. the new FeedbackPanel also
 provides a getFeedbackMessageFilter() override.
o Maximized efficiency of validators list by doing a little neat object
 casting in the private implementation. This also simplified things
 conceptually.
o Made FormComponent more space efficient by using boolean flag bit in
 Component superclass to keep track of persistent boolean.
o Changed RequestCycle.internalOnRuntimeException() implementation so that it
 checks the new Page return value from onRuntimeException. if
onRuntimeException returns a Page, it will be redirected to. if not, wicket
 will use the default page. this provides a nice low-level way of doing
something totally different to handle runtime exceptions. if you just want
 to change the basic look of your InternalErrorPage, you can still just
 subclass that. but if you want to do sophisticated things with runtime
exceptions, you want to override RequestCycle's onRuntimeException method.
o Refactored intializer code. Now wicket.properties is checked for each jar
or root folder on the classpath. If it contains either initializer=[class]
 or [app-name]-initializer=[class], that class is instantiated and the
 IInitializer.init(Application) method is called on the resulting object.
 So, both libraries and applications can easily initialize their resources
 now. For example, the core wicket.properties file contains just this:
 "initializer=wicket.Initializer", which invokes the wicket.Initializer
 class with the application being loaded. The wicket.Initializer.init()
 method will contain a sequence of initializations. For example, "new
 TreeComponentInitializer().init(application)". This is a much better and
safer and more Java way of initializing components for a library like core.
 Updated the images example to show how this is done.
o Changed structure of process() back to its original no-parameter form and
 introduced a nice, logical return value in onFormSubmitted to determined
 whether to call delegateSubmit().
o HtmlHeaderContainer to supports markup inheritance. Issue: 1255293. Thanks
 to Gili Tzabari.
o Added automatic multiPart support to Form. You can still call
 Form.setMultiPart() if you want to, but it is no longer necessary. Issue:
 1255297.
o allow protected access to AttributeModifier's replacement model Issue:
1249929. Thanks to Igor Vaynberg.
Have fun!
-The wicket team

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

Reply via email to