Issue Details (XML | Word | Printable)

Key: WICKET-983
Type: New Feature New Feature
Status: Resolved Resolved
Resolution: Fixed
Priority: Critical Critical
Assignee: Ate Douma
Reporter: Ate Douma
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Wicket

Merge the portlet support branch into the trunk

Created: 17/Sep/07 08:34 PM   Updated: 25/Sep/07 10:24 AM
Return to search
Component/s: wicket, wicket-portlet
Affects Version/s: 1.3.0-beta4
Fix Version/s: 1.3.0-beta4

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works trunk-r577912-portlet-support.patch 2007-09-21 03:22 PM Ate Douma 191 kB
Text File Licensed for inclusion in ASF works wicket-1.3.0-beta3-portlet-support.patch 2007-09-17 11:12 PM Ate Douma 192 kB
File Licensed for inclusion in ASF works wicket-1.3.0-beta3-portlet-support.patch2 2007-09-21 03:19 PM Ate Douma 198 kB

Resolution Date: 25/Sep/07 10:24 AM


 Description  « Hide
I will provide easy to review patches for all the core wicket changes required for merging the wicket-1.3.0-beta3-portlet-support branch back into trunk.

Note: for efficiency reasons, I'll provide patches against the -beta3 release for now. When the merge plan is accepted I'll have to synchronize again with the latest trunk changes since the -beta3 release of course,
but doing so already for just the review patches is going to delay more than I think is needed right now.

As also indicated by Martijn Dashorst, the target for the merge is before the -beta4 cutoff as we hope to go to RC mode after that.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Ate Douma added a comment - 17/Sep/07 11:12 PM
After creating a single complete patch file for all the changes I made to the wicket-1.3.0-beta3-portlet-support branch, I started out trying to split off small patches for easy review of the important changes to the wicket core.
But I found out this is almost impossible to do as several different type of changes affect the same files/classes and breaking up my changes would take me again at least several days.

As I've already described all the changes I made (and why) in separate subtasks of the main WICKET-647 issue, I think a more realistic solution is that I try to shortly summarize those changes and provide links to the related subtasks for both further explanation as well as the commit history of the changes.

I think the only way to properly review all the changes, it is best to apply them to a wicket-1.3.0-beta3 release (head) checkout.
For that purpose, I'm attaching a single full patch file.
After applying this in Eclipse, the changes can be easily be reviewed from the Team Synchronizing perspective.

Ate Douma made changes - 17/Sep/07 11:12 PM
Field Original Value New Value
Attachment wicket-1.3.0-beta3-portlet-support.patch [ 12366048 ]
Ate Douma added a comment - 18/Sep/07 12:03 AM
Fixes needed for Wicket code and/or behavior which is invalid or misbehaving in a portlet environment:

WICKET-649: fix appending query parameters

   a) Using "&" (or "&" for adding a new parameter without checking if there is no query string yet: in that case the new parameter needs to be added using "?"
      See: https://issues.apache.org/jira/browse/WICKET-649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
      and: https://issues.apache.org/jira/browse/WICKET-649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#action_12526944

   b) AbstractAjaxBehavior.getCallbackUrl(boolean onlyTargetActivePage) appends "wicket:ignoreIfNotActive=true" to an already generated portlet url.
      See: https://issues.apache.org/jira/browse/WICKET-649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#action_12526813

   c) wicket-ajax.js Wicket.Ajax.Request.get(path) calls which have query parameters appended to the path
      See: https://issues.apache.org/jira/browse/WICKET-649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#action_12526925
      Note: this fix should be reviewed properly. I don't think there are any side-effects, but changing a GET to a POST behind the scenes is kinda major.

   d) IOnChangeListener components with wantOnSelectionChangedNotifications()==true
      See: https://issues.apache.org/jira/browse/WICKET-649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#action_12526935
      Note: outstanding unresolved issue: how to handle this for components not part of a form (currently changing window.location.href)
    
WICKET-650: properly namespacing component markupId
   with multiple portlets on one html page, component markup Id needs to be portlet namespaced
   See: https://issues.apache.org/jira/browse/WICKET-650?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#action_12504782 (from initial branch, same for the latest though)
   
WICKET-651: handling HeaderResponse in a portlet environment by extending IHeaderResponse
   See: https://issues.apache.org/jira/browse/WICKET-651?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

WICKET-657: upgrading wicket-examples to require servlet api 2.4
   See: https://issues.apache.org/jira/browse/WICKET-657?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#action_12527681
   Portlet requests are dispatched to the underlying web application so to have WicketFilter "see" these dispatcher include calls
   it needs the servlet api 2.4+ filter-mapping/dispatcher configuration feature.

WICKET-924: non-relative urls in Ajax.Request redirect callback handling
   See: https://issues.apache.org/jira/browse/WICKET-924?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
   and: http://svn.apache.org/viewvc?view=rev&revision=574940 (a bugfix for the above initial solution which I didn't properly tag in the commit message)
   
WICKET-926: recognizing popup/detached pages urlFor calls
   See: https://issues.apache.org/jira/browse/WICKET-926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
   Note: this one I consider myself somehat of a hack, so I'm all ears to hear a better, cleaner solution!
   
That is about it.
Of course there are more changes, but those are related to handle the differences between the servlet and portlet environments.
I've isolated these functional changes from the servlet environment through the new class RequestContext.isPortletRequest().
If false, the original servlet specific code is processed, otherwise (possibly) the portlet specific code.

Ate Douma added a comment - 21/Sep/07 03:19 PM
Attaching wicket-1.3.0-beta3-portlet-support.patch2 which contains all the latest changes and fixes for the 1.3.0-beta3-portlet-support branch

Ate Douma made changes - 21/Sep/07 03:19 PM
Ate Douma added a comment - 21/Sep/07 03:22 PM
Attaching portlet-support patch for trunk r577912

Ate Douma made changes - 21/Sep/07 03:22 PM
Attachment trunk-r577912-portlet-support.patch [ 12366369 ]
Repository Revision Date User Message
ASF #579172 Tue Sep 25 10:21:35 UTC 2007 ate WICKET-983: Merge the portlet support branch into the trunk
See: https://issues.apache.org/jira/browse/WICKET-983
This is one big merge commit.
For further information about individual (subset) changes needed for the portlet support, see the descriptions and links
provided in WICKET-983 and the umbrella WICKET-647 issue under which the initial portlet support was developed.
Files Changed
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/EmbeddedPortletHeaderResponse.java
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/EditPage.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletActionServletResponseWrapper.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/AttributeModifier.java
MODIFY /wicket/trunk/jdk-1.5/wicket-examples/pom.xml
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Radio.java
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/EditPage.html
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/MenuPage.java
MODIFY /wicket/trunk/jdk-1.4/wicket/pom.xml
MODIFY /wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestTarget.java
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/ExampleApplication.java
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/MenuPage.html
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/WicketExamplesMenuApplication.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketResponseState.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletServletResponseWrapper.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/FilterRequestContext.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Check.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
MODIFY /wicket/trunk/pom.xml
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/HeaderPage.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRenderServletResponseWrapper.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletServletRequestWrapper.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressingWebCodingStrategy.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/HeaderPage.html
MODIFY /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
MODIFY /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
MODIFY /wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/portlet/menu/WicketExamplesMenuPortlet.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortlet.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/behavior/IActivePageBehaviorListener.java
MODIFY /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.html
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletInvalidMarkupFilter.java
MODIFY /wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
ADD /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestContext.java
MODIFY /wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
ADD /wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/portlet.xml
MODIFY /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java

Ate Douma added a comment - 25/Sep/07 10:24 AM
Portlet support merged to trunk as voted upon and accepted on the dev list.
See: http://www.nabble.com/-RESULTS---VOTE--WICKET-983%3A-Merging-portlet-support-tf4513712.html

Ate Douma made changes - 25/Sep/07 10:24 AM
Status Open [ 1 ] Resolved [ 5 ]
Resolution Fixed [ 1 ]