Author: ivaynberg
Date: Fri Feb 5 01:59:43 2010
New Revision: 906768
URL: http://svn.apache.org/viewvc?rev=906768&view=rev
Log:
WICKET-2717 bookmarkablepagelink broken on ajaxupdate
Issue: WICKET-2717
Modified:
wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.core.prefs
wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.ui.prefs
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
Modified:
wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.core.prefs
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.core.prefs?rev=906768&r1=906767&r2=906768&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.core.prefs
(original)
+++ wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.core.prefs
Fri Feb 5 01:59:43 2010
@@ -1,4 +1,4 @@
-#Wed Aug 26 08:15:28 PDT 2009
+#Thu Feb 04 17:57:52 PST 2010
eclipse.preferences.version=1
org.eclipse.jdt.core.builder.cleanOutputFolder=clean
org.eclipse.jdt.core.builder.duplicateResourceTask=warning
@@ -96,15 +96,15 @@
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=20
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=64
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=64
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
@@ -145,9 +145,9 @@
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
@@ -162,6 +162,9 @@
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
org.eclipse.jdt.core.formatter.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do
not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do
not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do
not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
@@ -330,19 +333,21 @@
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do
not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do
not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do
not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=100
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=2
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
Modified: wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.ui.prefs
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.ui.prefs?rev=906768&r1=906767&r2=906768&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.ui.prefs
(original)
+++ wicket/branches/wicket-1.4.x/wicket/.settings/org.eclipse.jdt.ui.prefs Fri
Feb 5 01:59:43 2010
@@ -1,4 +1,4 @@
-#Wed Aug 01 11:37:07 CEST 2007
+#Thu Feb 04 17:57:52 PST 2010
comment_clear_blank_lines=false
comment_format_comments=true
comment_format_header=true
@@ -11,7 +11,7 @@
comment_separate_root_tags=true
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_wicket
+formatter_profile=_Wicket
formatter_settings_version=11
instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0"
encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false"
context\="gettercomment_context" deleted\="false" description\="Comment for
getter method" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment"
name\="gettercomment">/**\r\n * Gets ${bare_field_name}.\r\n * @return
${bare_field_name}\r\n */</template><template autoinsert\="false"
context\="settercomment_context" deleted\="false" description\="Comment for
setter method" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.settercomment"
name\="settercomment">/**\r\n * Sets ${bare_field_name}.\r\n * @param ${param}
${bare_field_name}\r\n */</template><template autoinsert\="false"
context\="constructorcomment_context" deleted\="false" description\="Comment
for created constructors" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment"
name\="constructorcomment">/**\r\n * Construct.\r\n
* ${tags}\r\n */</template><template autoinsert\="false"
context\="filecomment_context" deleted\="false" description\="Comment for
created Java files" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.filecomment"
name\="filecomment"/><template autoinsert\="false"
context\="typecomment_context" deleted\="false" description\="Comment for
created types" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.typecomment"
name\="typecomment">/**\r\n * @author ${user}\r\n * ${tags}\r\n
*/</template><template autoinsert\="true" context\="fieldcomment_context"
deleted\="false" description\="Comment for fields" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment"
name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true"
context\="methodcomment_context" deleted\="false" description\="Comment for
non-overriding methods" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment"
name\="methodcomment">/**\r\n * ${tags}
\r\n */</template><template autoinsert\="false"
context\="overridecomment_context" deleted\="false" description\="Comment for
overriding methods" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment"
name\="overridecomment">/**\r\n * ${see_to_overridden}\r\n
*/</template><template autoinsert\="false" context\="newtype_context"
deleted\="false" description\="Newly created files" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*\r\n *
Licensed to the Apache Software Foundation (ASF) under one or more\r\n *
contributor license agreements. See the NOTICE file distributed with\r\n *
this work for additional information regarding copyright ownership.\r\n * The
ASF licenses this file to You under the Apache License, Version 2.0\r\n * (the
"License"); you may not use this file except in compliance with\r\n * the
License. You may obtain a copy of the License at\r\n *\r\n *
http\://www.apache.org/licenses/LICENSE-2.0\r\
n *\r\n * Unless required by applicable law or agreed to in writing,
software\r\n * distributed under the License is distributed on an "AS IS"
BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.\r\n * See the License for the specific language governing permissions
and\r\n * limitations under the License.\r\n
*/\r\n${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template
autoinsert\="false" context\="catchblock_context" deleted\="false"
description\="Code in new catch blocks" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">throw
new RuntimeException(${exception_var});</template><template autoinsert\="false"
context\="methodbody_context" deleted\="false" description\="Code in created
method stubs" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.methodbody"
name\="methodbody">${body_statement}</template><template autoinsert\="false"
context\="c
onstructorbody_context" deleted\="false" description\="Code in created
constructor stubs" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody"
name\="constructorbody">${body_statement}</template><template
autoinsert\="true" context\="getterbody_context" deleted\="false"
description\="Code in created getters" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.getterbody"
name\="getterbody">return ${field};</template><template autoinsert\="true"
context\="setterbody_context" deleted\="false" description\="Code in created
setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody"
name\="setterbody">${field} \= ${param};</template><template autoinsert\="true"
context\="classbody_context" deleted\="false" description\="Code in new class
type bodies" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.classbody"
name\="classbody">\r\n</template><template autoinsert\="true"
context\="interfacebody_context" deleted\="false"
description\="Code in new interface type bodies" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody"
name\="interfacebody">\r\n</template><template autoinsert\="true"
context\="enumbody_context" deleted\="false" description\="Code in new enum
type bodies" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.enumbody"
name\="enumbody">\r\n</template><template autoinsert\="true"
context\="annotationbody_context" deleted\="false" description\="Code in new
annotation type bodies" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody"
name\="annotationbody">\r\n</template><template autoinsert\="true"
context\="delegatecomment_context" deleted\="false" description\="Comment for
delegate methods" enabled\="true"
id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment"
name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n
*/</template></templates>
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java?rev=906768&r1=906767&r2=906768&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
Fri Feb 5 01:59:43 2010
@@ -34,12 +34,12 @@
public final class RequestUtils
{
/**
- * Decode the provided queryString as a series of key/ value pairs and
set them in the provided
- * value map.
+ * Decode the provided queryString as a series of key/ value pairs and
set
+ * them in the provided value map.
*
* @param queryString
- * string to decode, uses '&' to separate parameters and '='
to separate key from
- * value
+ * string to decode, uses '&' to separate parameters and '='
to
+ * separate key from value
* @param params
* parameters map to write the found key/ value pairs to
*/
@@ -52,7 +52,7 @@
if (bits.length == 2)
{
params.add(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]),
-
WicketURLDecoder.QUERY_INSTANCE.decode(bits[1]));
+
WicketURLDecoder.QUERY_INSTANCE.decode(bits[1]));
}
else
{
@@ -62,7 +62,8 @@
}
/**
- * decores url parameters form <code>queryString</code> into
<code>parameters</code> map
+ * decores url parameters form <code>queryString</code> into
+ * <code>parameters</code> map
*
* @param queryString
* @param parameters
@@ -175,13 +176,17 @@
*/
public final static String toAbsolutePath(final String relativePagePath)
{
- HttpServletRequest req =
((WebRequest)RequestCycle.get().getRequest()).getHttpServletRequest();
+ HttpServletRequest req =
((WebRequest)RequestCycle.get().getRequest())
+ .getHttpServletRequest();
return toAbsolutePath(req.getRequestURL().toString(),
relativePagePath);
}
/**
* Calculates absolute path to url relative to another absolute url.
*
+ * NOTE: this method must be called within a thread processing a wicket
+ * request as it depends on {...@link RequestCycle} threadlocal
+ *
* @param requestPath
* absolute path.
* @param relativePagePath
@@ -210,17 +215,33 @@
{
StringBuffer tempRelative = new
StringBuffer(relativePagePath);
- // Go up through hierarchy until we find most common
directory for both pathes.
+ // Go up through hierarchy until we find most common
directory for
+ // both pathes.
while (tempRelative.indexOf("../") == 0)
{
// Delete ../ from relative path
tempRelative.delete(0, 3);
- // Delete last slash from result
- result.setLength(result.length() - 1);
+ /*
+ * i cant believe this is the only way to do
this, what a mess!
+ * i am so happy code like this and all its
friends are
+ * unnecessary and gone in 1.5 see WICKET-2717
and WICKET-2312
+ * the reason we have to do this is that the
ajax request is
+ * done against the context path, while the url
of the browser
+ * may contain mounts and is not changed by the
ajax request, so
+ * we have to generate a link that is not
relative to the
+ * current request but to whatever the browser
has in its url
+ * bar
+ */
+ if (RequestCycle.get() != null
+ &&
!((WebRequest)RequestCycle.get().getRequest()).isAjax())
+ {
+ // Delete last slash from result
+ result.setLength(result.length() - 1);
- // Delete everyting up to last slash
- result.delete(result.lastIndexOf("/") + 1,
result.length());
+ // Delete everyting up to last slash
+ result.delete(result.lastIndexOf("/") +
1, result.length());
+ }
}
result.append(tempRelative);
}
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java?rev=906768&r1=906767&r2=906768&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
Fri Feb 5 01:59:43 2010
@@ -254,16 +254,9 @@
boolean portletRequest = requestContext.isPortletRequest();
boolean sharedResourceURL = false;
- boolean isAjax =
((WebRequestCycle)requestCycle).getWebRequest().isAjax();
- boolean skipRelativePathPrefix = false;
-
if (url != null && !portletRequest)
{
- // We've found the URL and it's mounted.
-
- // In the case of Ajax, we don't want to prepend a
relative path
- // to the mounted URL. See WICKET-2312.
- skipRelativePathPrefix = isAjax;
+ // Do nothing - we've found the URL and it's mounted.
}
else if (requestTarget instanceof
IBookmarkablePageRequestTarget)
{
@@ -307,7 +300,7 @@
else if
(IRedirectListener.class.isAssignableFrom(rli.getMethod()
.getDeclaringClass()))
{
- if (isAjax)
+ if
(((WebRequestCycle)requestCycle).getWebRequest().isAjax())
{
// TODO: Probably not all Ajax
based redirects need to break out of
// ResourceURL encoding
@@ -361,8 +354,7 @@
if (url != null)
{
String result = null;
- if (!UrlUtils.isRelative(url.toString()) ||
(!sharedResourceURL && portletRequest) ||
- skipRelativePathPrefix)
+ if (!UrlUtils.isRelative(url.toString()) ||
(!sharedResourceURL && portletRequest))
{
result = url.toString();
}