The wicket team is pleased to announce the Wicket 1.0.0-rc2 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 with frameworks like Hibernate.
Changes in this version include:
Fixed bugs:
o tree does not need versioning by default. Issue: 1178309.
o Wickets mistakes <a .../> for an open-tag. Issue: 1161111.
o modelChanging and modelChanged were never called in the link handlers of
the delete and moveUp/Down listview links Issue: 1183947.
o Tree is not a listener for tree events by default, as registering the
tree
as a listener by default can lead to memory leaks
o Wrap catched exception so that we not only get the 'markup not found
exception', but also what caused the problem in the first place.
o Removed 'removeAll' from the render method in ListView
o Added extra null pointer check in MultipartWebRequest
o Resources were requested from the servlet context by relative path. This
gives problems on some containers (like Jetty 5.1.x) with a paths like
'mysubdir/foo.css'. The change is: final String url = '/' +
getWebRequest().getRelativeURL();
o Added updateCluster boolean to RequestCycle. As a request is parsed, this
boolean is set in order to determine if the end of the request cycle
should
update the cluster. In WebRequestCycle, if the resourceReference call
returns true, there was a bug where parseRequest would return true, which
is incorrect. Now, resourceReference() and staticContent() both return
false (since they don't involve pages). In addition, both set the
updateCluster boolean to false. Then each of bookmarkablePage,
callComponentListener and homePage() set updateCluster to true.
Finally, in
Page.onRedirect, updateCluster is set to false to override the true value
set in callComponentListener for simple page redirects. Issue: 1182158.
o Added PageMap.remove() method and PopupCloseLink class, which calls this
method on Page.getPageMap(), which is now public. A little trick was
necessary to invoke the java code AND close the window. When
PopupCloseLink
is clicked, the page map is removed and then the response page is set
to a
nested class with markup found in PopupCloseLink$1. This markup contains
javascript that closes the window when it is loaded. Issue: 1182728.
o Any image path is now part of the resource key for shared images. Issue:
1181983.
o Added Page.setDirty/isDirty and changed Session to replicate each dirty
page in the session based on this flag. Then added code that sets the
flag
when a Page is modified (in case someone changes some random page), but
also set flag on by default and each time a Page object is pulled out
of a
Session PageMap. This will cause the default replication behavior
described
in this bug. Unfortunately, even though the change seems to work fine,
there appears to be a problem with one of the test cases. It looks like
MockWebApplication was subtly dependent on something I changed and I
suspect the test case rather than the code since all the examples seem to
work fine. So I'm checking in and hoping someone can take a look at the
test since I can't make time for a few days. Issue: 1177751.
o Javadoc enhancement for ResouceReference. Issue: 1176169.
o Changed SharedResource to ResourceReference. ResourceReference does not
inherit from Resource since it is a reference to a resource and not an
actual resource now. Added StaticImageResourceReference to make it
easy to
create references to static image resources. See the Tree class for an
example usage. SharedResourceLink was changed to ResourceLink. Issue:
1177942.
o Fixed shared resource localization problem manifested in forminput
example.
Image resources are now correctly shared under a URL that includes locale
and style (as originally intended). Switching between locales will be
correct and efficient now. The earlier code would result in unpredictable
locale shifts when used by multiple users. It would also be very
inefficient. Issue: 1175835.
Changes:
o Tree can be extended by providing a custom panel for a node. This way the
tree can be used to nest arbitrairy components, like input fields and
(more) images.
o Factored out SharedResources class from Application and made some minor
improvements to the static path() methods. This will clear the way to
make
Session relative SharedResources in the future. It also will enable us to
make changes to the SharedResources class without having to add more
methods to Application, which is already complex enough.
o Added some parameter validation and finalized some methods that should
not
be overridden. In particular, Component.getSession() is now final as well
as Component.getId(). The change to Component.getId() also eliminated a
field in Page that is really not necessary. The result of these
changes is
a tighter API. There will be more changes of this nature as we lock down
the API for 1.0 final.
o Minor refactoring in Application and ApplicationSettings. Changed
Application.sourcePath property to resourcePath since that's what it
really
is. Changed getCrypt() and getMarkupParser() to newCrypt() and
newMarkupParser() since these are really factory methods and they should
indicate that. Made a bunch of methods final that should be and
reformatted
some stuff. Would like to make getSettings() final too so that hotspot
will
inline accesses. Unfortunately, some Spring related subclass has already
overridden the method and so now we cannot make it final...
o Added FLAG_USER* bits to Component and made setFlag/getFlag protected.
This
will help avoid flag bit conflicts and will also make it possible to
reduce
the space needs of Components other than Page (which already uses bits in
Component.flags).
o Changed my mind about defaulting resources that are not lazy-inited. If a
resource like "plus-sign.gif" is requested in the netherlands (locale
nl_nl), first an attempt is made to load "plus-sign_nl_nl.gif", then the
lazy init code is given a chance to create a resource for the nl_nl
locale.
Then if /that/ doesn't create a resource, we default it to
"plus-sign.gif".
This kind of defaulting behavior is important in supporting non-localized
static resource references (which would not really be possible without
this
change).
o Fixed a bunch of unreported problems with image resources. The new method
Application.localizedPath(name, locale, style) constructs more reasonable
paths for images by inserting the locale just before the extension
(instead
of after it, which looks wrong and confusing). This method will omit the
locale if it is equal to Locale.getDefault(), which means
foo_en_US.gif and
foo.gif are the same resource in the US. Updated
Application.getResource()
methods to use this method when searching for a resource in the shared
resource cache. The new getResource() method will actually fail if it
cannot find a resource that matches the locale (as opposed to
defaulting to
the default locale). This will help keep localization problems to a
minimum
and also ensures that lazy initialization will work (which it did not,
before). Undid a change that Johan made to InputForm since we do not
search
for anything other than Locale.toString(), meaning nl and nl_nl are not
equal in Wicket at this time (which is really a bug if anyone wants to
report it). Finally, made changes to the static image resolution code so
that it automatically creates shared resources! This means that the code
for the Pub example did not have to change in order to be efficient /and/
localized.
o Fixed problem where error pages failing could cause recursive
redirection.
In doing this, added Page.isErrorPage() method that returns false by
default. Error pages override this to let RequestCycle know when a
recursive failure is happening.
o Moved WebResource from http protocol package to markup.html package,
which
seems more appropriate since it's used in web markup by ImageResource
which
is in markup.html.image.resource.
o Added UploadForm.setMaxSize() method to limit the size of uploads. This
change includes an update to the upload example which shows how to use
the
feature and localize the strings involved.
o Changed message model for "exception" to use Exception object:
model.put("exception", e); This will allow full access to exception
properties in localized Strings. In particular, you can now say
${exception.localizedMessage}.
o Added Component.getString(final String key, final IModel model, final
String defaultValue)
Have fun!
-The wicket team
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user