Carsten Ziegeler wrote:
The current portal creates urls like ...portal?cocoon-portal-event=XXX
for most links. There are some additional things in there, like the page
labels and the bookmark action and some events can create more readable
urls, but I think all of this has some disadvantages.
Now, I'm currently thinking of providing a general mechanism that
creates/uses "real" urls, like
.../main/weblogs or .../main/applications
without any additional parameter.
So, how could this work. What do you think of using this URL scheme:
.../OBJECT_ID_A/EVENT_INFO_FOR_OBJECT_A
So, in the example from above, the object with the id "main" gets an
event with the information "weblogs" or "applications". In this example
"main" is the main tab and the information tells the tab to switch to
that tab.
But there is more, you can add as many "events" to the url:
.../OBJECT_ID_A/EVENT_INFO_FOR_OBJECT_A/OBJECT_ID_B/EVENT_INFO_FOR_OBJECT_B...
So the url consists of key value pairs creating "more readable" urls.
For example: .../main/docs/page/news
This url switches to the docs tab and passes the info "news" to the page
coplet and this coplet then displays the news as its content.
These urls are easily bookmarkable.
Of course, for actions like minimizing etc. we still use url parameters.
Now, to make this work objects have to be made aware of this mechanism.
I'm thinking of some marker interfaces (with some functions) for layout
objects and coplets. I have no concrete idea how to implement it, but I
first want to discuss the idea before getting into implementation details :)
How does this sound?
PS: There will be one minor problem - all objects need a unique
identier. Currently you can have a layout object and a coplet instance
with the same identifier. But I think this is no real problem.
Carsten
Did you look at the ConvertableEvent and ConvertableEventFactory? The
idea there was to allow events to be created using the information
provided in the request. You can see implementations of this in
FullScreenCopletEventFactory and PortletURLProviderFactory. The
ConvertableEventAspect creates the events. I only create the ones for
FullScreen and PortletURLProvider because they were required to get
JSR-168 portlets to work properly. I had intended to create more of them
but I haven't had the need.
Ralph