Ate Douma wrote:
Antony Stubbs wrote:
Morning guys,
This is msg is of course regarding the continuation and the finishing
of the
Portal 2.0 wicket support. I plan on continuing from Thijs' work done on
WICKET-1620 here:
Here are the two historical conversations regarding the topic
-Portal 2 implementation:
http://www.nabble.com/Portlet-2.0-implementation-in-Wicket-td17187909.html
-original portal 1 implementation:
http://www.nabble.com/A-new-proposal-for-Wicket-Portlet-support-td10863022.html
I met with Ate the other day in Utrecht, Netherlands and we discused
various
things, some of which was the strategy we would adopt going forward
with the
P2 development.
First thing is that we must come to a consensus with the Wicket team
about
the direction we will head.
There are, as we see it, two options:
1) leave 1.0 support behind on 1.3 branch and move forward with 2.0
support
on 1.4 branch
+1
2) try to support both at once in 1.4 - isolate portal 2.0 support to
it's
own package
-1
My vote, and I think Ate agrees is to go with option 1 - leave 1.0
support
behind.
Yes, see above.
We also need to have release goals for all this. I.e. release target for
portlet javadoc (1.4?) target for 2.0 implementation (1.4? 1.4.1? or
1.5)
Not something we (or at least: me) can "plan" for upfront.
That really will depend on the progress and the amount of impact the
new implementation would have.
As far as I understood, 1.4 is targeted as a compatibility release,
e.g. no major API changes.
If true, the portlet 2.0 support really will have to wait for the 1.5
release I think.
The most bbvious things left to be done are:
0. Documentation - there is lots of javadoc to be written about the
current
Portal support
+1
1. Portal 2.0 event abstraction
+1
Jonathan Locke's response seems interesting, need much more discussion
though.
2. Public render parameter abstraction
Rather straight forward and already possible today *if* you are
willing to use portlet api methods directly.
The question here would be: is there a use-case from Wicket framework
POV to "share" state with other Wicket applications?
In plain "web" mode, Wicket really is dealing with only one
application at the time, which makes it unclear to me where the
benefit (from generic Wicket framework POV) is to provide "native"
Wicket support for this feature.
3. testing of the implementation on a couple of containers (e.g. Pluto,
Jetspeed and Liferay)
4. writing some demo apps that use 2.0 features
5. potentially writing a module to support a portlet preferences
container
in web app mode, in order to have a complete wicket abstraction for user
prefs. This would of course use the Portlet API support when running
in a
portlet context.
+100
I already discussed this in the past with Jonathan and I think the
Portlet Preferences feature definitely qualifies as something what
could be of general usage for plain "web" Wicket applications too.
Regarding 2 - the event abstraction, we saw there being 3 different
stages
of this, the first stage being the target for 1.4, as lvl 2+ require
large
wicket refactoring.
- level 1 - event listener registration, similar to Swing - lots of
manual
interpretation of events etc
-0, haven't given this enough thought but this doesn't seem so easy to
implement/use
- level 2 - built in to Wicket event system with pre defined events on
components - with portal specific events. So Wicket would have standard
portlet types of events which it interprets and calls predefined
interfaces
in your code for. What those standard events would be, requires some
more
conceptualising.
+0, mostly the same as above, I haven't given this enough thought yet
- level 3 - wicket specific events - extend the concept of events into
wicket as a whole. e.g. inter component / panel event system. These
events
of a general broadcast type nature, could in a portlet environment,
be made
to cross the portlet boundaries in a fashion transparent to the user.
+1, this is what, from a portlet developer POV, would most directly
map to the actual use-cases.
However, its not clear to me yet how this could be usefull for plain
web application use-cases, nor how to actually implement this.
Regarding 2, there's not much work here to be done, except to decide
on a
nice way of abstracting the portal 2 api calls
if anyone is aware of any other issues that need to be chased up
regarding
2.0 support, please raise them now or attach them to WICKET-1620.
Other issues Ate pointed out were:
Dealing with portlet requests through forwarded requests as opposed to
includes
Portlet 2.0 specified that serveResourceURLs need to be send as a
forward, not an include to portlets.
As Wicket has some specific handling for forwarded urls (don't
remember right now where, but it definitely is tricky code),
I remember I had some problems implementing the required portlet url
handling for that.
So, as this is now going to be the standard/required interaction for
serveResourceURLs, this is some area in the code to review again and
see if/when/why it might break because of that. AFAIK, Thijs already
encountered this with Liferay, right?
That's very interesting, we're in discussion for a while with Liferay
about this issue but maybe this means that wicket is the bad guy here
:). I'll discuss this with Thijs as he investigated this problem. But
when it's true, we could create a temp fix in Liferay till Wicket
supports this. I'm pretty sure that Thijs also sent you an email about this.
Dealing with streaming servers which don't support the option
javax.portlet.renderHeaders option - using caching solution from Apache
Bridges. (but there was some other gotcha wasn't there Ate?)
No, not really, except that that "caching solution" hasn't been
written yet :)
But I think you might confuse this issue with that of the "isolated
servlet session", which is an optional feature of the portlet 2.0 spec
but which Wicket really depends upon. That feature *is* available from
Portal Bridges and used already.
For Pluto/Jetspeed we'll provide the same of course, but as an
optional feature one cannot rely on the container to provide this so
Wicket might just as well keep using the Bridges solution just as well
to be ensured of this feature.
Need to maintain the current support for containers which have no header
contribution support by using inline javascript
Yes, there is alternative there.
However, in practice I expect this to be of a lesser problem as
most/all containers would want to provide this feature because of its
obvious benefit.
Regarding collaboration on this, well if I wasn't fully convinced
with Git
before, I certainly am now!
I have setup a fork of Wicket 1.4 trunk on GitHub, which I can track
with
Git, where I have created three branches. This was done off of the new
Apache git mirrors available here:
http://jukka.zitting.name/git/
Like already commented before by others, I'm also not very fond of
using another and *external* (to the ASF) version control system.
While I have no problem with you using that for your own benefit (I do
understand why), I'm of the opinion (and I think many ASF
committers/members with me) that we must stick to the ASF way of
collaboration: fully in the open and with anyone having a chance to join.
So, for me, you can keep using the Git solution, but to discuss and
review changes and patches I insist on that only to be done here on
the dev mailing list and through JIRA issues and (patch) attachments.
Thanks for taking the initiative here Antony.
It was good meeting with you and I hope I can contribute as much as I
can.
But the next few weeks, definitely until the ApacheCon for which we
(Apache Portals team) are planning to have Pluto 2.0 and Jetspeed 2.2
released, my time will be extremely limited.
Regards,
Ate
1. a javadoc improvement branch for things Portletish (strictly
method and
class level javadoc only, maybe some fields)
2. a portlet 2.0 development branch (this already had Thijs patch
applied,
and a couple of comments, refactors from me)
3. a merge branch of the two
Unless we decide that the javadoc can wait for the 2.0 implementation -
which would be easier ;)
I plan on keeping the javadoc branch separate so that I can easily
create a
patch/push against the 1.4 trunk, as Ate and I thought it would be
good to
get the Javadoc we write into the code base as soon as possible,
while the
actual Portal 2.0 implementation can continue on.
The public github project is here:
http://github.com/astubbs/wicket.get-portals2/tree/portal-javadoc
Install Git (if you're on Windows, I recommend Cygwin/Git) and then
you can
clone the repository using:
git clone git://github.com/astubbs/wicket.get-portals2.git
nb, you won't be able to push to it though unless you make a github
account
and you can switch to the javadoc branch for example using:
git checkout origin/portal-javadoc
Here is some good Git information:
http://github.com/guides/home
Cheers,
looking forward to hearing your thoughts.