[jira] [Commented] (WICKET-5530) AJAX file upload hangs up when two big file selected by user and AJAX response is more then 16K

2014-03-13 Thread Alexander Suslov (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13934547#comment-13934547
 ] 

Alexander Suslov commented on WICKET-5530:
--

I even don’t know how to help to reproduce it. It is some kind of concurrency 
problem which usually hard to catch, hard to reproduce a way which leads to 
problem. As I said before I can only reproduce bug when tomcat with application 
is started on the same compute with browser throw which I am testing. I am able 
to reproduce this error on any browser (FireFox, Chrome, IE), but only locally. 
If I will record a video will it help?

> AJAX file upload hangs up when two big file selected by user and AJAX 
> response is more then 16K
> ---
>
> Key: WICKET-5530
> URL: https://issues.apache.org/jira/browse/WICKET-5530
> Project: Wicket
>  Issue Type: Bug
>  Components: wicket
>Affects Versions: 6.14.0
> Environment: Windows 7x64
> Tomcat 7.0.47
>Reporter: Alexander Suslov
>Assignee: Martin Grigorov
> Attachments: ajaxuploadbug.zip
>
>
> Given:
> Max file size is specified for form (for example 5M: 
> form.setMaxSize(Bytes.megabytes(5));)
> When:
> User try to upload file which has size more then 5M
> Then:
> If AJAX response is more then 16K request will hangs up (will never be 
> finished).
> Expected:
> User should see feedback message that file is too big.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (WICKET-5406) Better Content Security Policy Support

2014-03-13 Thread Martin Grigorov (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5406?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933485#comment-13933485
 ] 

Martin Grigorov commented on WICKET-5406:
-

http://blogs.opera.com/security/2014/03/security-changes-opera-20-update/ - 
Shows that CSP (1.1) is still very immature.

> Better Content Security Policy Support
> --
>
> Key: WICKET-5406
> URL: https://issues.apache.org/jira/browse/WICKET-5406
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Reporter: Mario Groß
>Priority: Minor
>  Labels: CSP, Content-Security-Policy, Cross-site-Scripting, 
> Security
>
> A better support of the Content Security Policy 
> (http://en.wikipedia.org/wiki/Content_Security_Policy) would protect against 
> cross-site scripting attacks and improve the security image of wicket. 
> The main problem at the moment is the heavily used inline javascript code 
> which interferes with the whitelisting mechanism of script sources in the CSP 
> and should be avoided .



--
This message was sent by Atlassian JIRA
(v6.2#6252)


git commit: Add a unit test for OpenCloseTagExpander asserting that the created closing tag has the same namespace as the openClose/original one

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/master 664a118ba -> 911bad944


Add a unit test for OpenCloseTagExpander asserting that the created closing tag 
has the same namespace as the openClose/original one

(cherry picked from commit 9a21be2b443fcb5ed48fe3b3ef90ad5a32395576)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/911bad94
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/911bad94
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/911bad94

Branch: refs/heads/master
Commit: 911bad9449f73495b3de526e870a7a6717c20e8a
Parents: 664a118
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 17:39:47 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 17:41:38 2014 +0200

--
 .../parser/filter/OpenCloseTagExpanderTest.java | 34 +++-
 1 file changed, 33 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/911bad94/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
--
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
index 366cf6d..233d272 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
@@ -27,6 +27,8 @@ import org.apache.wicket.markup.WicketTag;
 import org.apache.wicket.markup.parser.AbstractMarkupFilter;
 import org.apache.wicket.markup.parser.IMarkupFilter;
 import org.apache.wicket.markup.parser.XmlTag;
+import org.apache.wicket.markup.resolver.HtmlHeaderResolver;
+import org.hamcrest.CoreMatchers;
 import org.junit.Test;
 
 /**
@@ -57,7 +59,6 @@ public class OpenCloseTagExpanderTest extends WicketTestCase
 
for (String htmlVoidElement : htmlVoidElements)
{
-
OpenCloseTagExpander expander = new 
OpenCloseTagExpander()
{
@Override
@@ -135,6 +136,37 @@ public class OpenCloseTagExpanderTest extends 
WicketTestCase
}
}
 
+   /**
+* Verifies that the namespace of the created closing tag is the same
+* as of the opening one
+*
+* @throws ParseException
+*/
+   @Test
+   public void expandWicketTagWithSameNamespace() throws ParseException
+   {
+   final String namespace = "customNS";
+
+   OpenCloseTagExpander expander = new OpenCloseTagExpander()
+   {
+   @Override
+   protected String getWicketNamespace()
+   {
+   return namespace;
+   }
+   };
+
+   ComponentTag tag = new 
ComponentTag(HtmlHeaderResolver.HEADER_ITEMS, XmlTag.TagType.OPEN_CLOSE);
+   tag.setNamespace(namespace);
+   expander.onComponentTag(tag);
+
+   MarkupElement markupElement = expander.nextElement();
+
+   assertThat(markupElement, 
CoreMatchers.instanceOf(WicketTag.class));
+   assertTrue(markupElement.closes(tag));
+   assertEquals(namespace, ((ComponentTag) 
markupElement).getNamespace());
+   }
+
private static class TestMarkupElement extends WicketTag
{
public TestMarkupElement()



git commit: Add a unit test for OpenCloseTagExpander asserting that the created closing tag has the same namespace as the openClose/original one

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x c0d2ef035 -> 9a21be2b4


Add a unit test for OpenCloseTagExpander asserting that the created closing tag 
has the same namespace as the openClose/original one


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/9a21be2b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/9a21be2b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/9a21be2b

Branch: refs/heads/wicket-6.x
Commit: 9a21be2b443fcb5ed48fe3b3ef90ad5a32395576
Parents: c0d2ef0
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 17:39:47 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 17:39:47 2014 +0200

--
 .../parser/filter/OpenCloseTagExpanderTest.java | 40 ++--
 1 file changed, 37 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/9a21be2b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
--
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
index 574f8e1..85c9a6c 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
@@ -25,6 +25,8 @@ import org.apache.wicket.markup.WicketTag;
 import org.apache.wicket.markup.parser.AbstractMarkupFilter;
 import org.apache.wicket.markup.parser.IMarkupFilter;
 import org.apache.wicket.markup.parser.XmlTag;
+import org.apache.wicket.markup.resolver.HtmlHeaderResolver;
+import org.hamcrest.CoreMatchers;
 import org.junit.Test;
 
 /**
@@ -56,8 +58,8 @@ public class OpenCloseTagExpanderTest extends WicketTestCase
 
for (String htmlVoidElement : htmlVoidElements)
{
-
-   OpenCloseTagExpander expander = new 
OpenCloseTagExpander() {
+   OpenCloseTagExpander expander = new 
OpenCloseTagExpander()
+   {
@Override
public IMarkupFilter getNextFilter()
{
@@ -97,7 +99,8 @@ public class OpenCloseTagExpanderTest extends WicketTestCase
{
for (String htmlNonVoidElement : 
OpenCloseTagExpander.REPLACE_FOR_TAGS)
{
-   OpenCloseTagExpander expander = new 
OpenCloseTagExpander() {
+   OpenCloseTagExpander expander = new 
OpenCloseTagExpander()
+   {
@Override
public IMarkupFilter getNextFilter()
{
@@ -129,6 +132,37 @@ public class OpenCloseTagExpanderTest extends 
WicketTestCase
}
}
 
+   /**
+* Verifies that the namespace of the created closing tag is the same
+* as of the opening one
+*
+* @throws ParseException
+*/
+   @Test
+   public void expandWicketTagWithSameNamespace() throws ParseException
+   {
+   final String namespace = "customNS";
+
+   OpenCloseTagExpander expander = new OpenCloseTagExpander()
+   {
+   @Override
+   protected String getWicketNamespace()
+   {
+   return namespace;
+   }
+   };
+
+   ComponentTag tag = new 
ComponentTag(HtmlHeaderResolver.HEADER_ITEMS, XmlTag.TagType.OPEN_CLOSE);
+   tag.setNamespace(namespace);
+   expander.onComponentTag(tag);
+
+   MarkupElement markupElement = expander.nextElement();
+
+   assertThat(markupElement, 
CoreMatchers.instanceOf(WicketTag.class));
+   assertTrue(markupElement.closes(tag));
+   assertEquals(namespace, ((ComponentTag) 
markupElement).getNamespace());
+   }
+
private static class TestMarkupElement extends WicketTag
{
public TestMarkupElement()



[jira] [Commented] (WICKET-5531) Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread Jesse Long (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933395#comment-13933395
 ] 

Jesse Long commented on WICKET-5531:


Thanks, working 100% now. Thank you for implementing this Martin, very nice 
feature.

> Create new placeholder tag to indicate where header contributions should 
> appear
> ---
>
> Key: WICKET-5531
> URL: https://issues.apache.org/jira/browse/WICKET-5531
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.14.0
>Reporter: Jesse Long
>Assignee: Martin Grigorov
>Priority: Minor
> Fix For: 7.0.0, 6.15.0
>
> Attachments: wicket-5531.tar.gz
>
>
> It would be easier to manage exactly where header contributions are 
> positioned in the head of the document if there was a placeholder tag which 
> could be used to indicate the position. Much in the same way as wicket:child 
> indicates where the child markup is positioned.
> This idea from Martin-G.
> See discussion at 
> http://mail-archives.apache.org/mod_mbox/wicket-dev/201304.mbox/%3CCAMomwMqRds-PhWkR_%3DR1x-4HH9sSW41H1nARacU%2BN15uJHh9SA%40mail.gmail.com%3E



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[3/4] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread mgrigorov
WICKET-5531 Create new placeholder tag to indicate where header contributions 
should appear

Copy  contents right after  when 
 is used.

(cherry picked from commit 686030c6763baf24fb8a8f3b24a396369d6f16e1)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/44683269
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/44683269
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/44683269

Branch: refs/heads/master
Commit: 446832690758d08d3039b062e50c43f2607dcdc4
Parents: bdbc86a
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 16:07:20 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 16:21:52 2014 +0200

--
 .../src/main/java/org/apache/wicket/markup/MergedMarkup.java  | 7 ---
 .../src/main/java/org/apache/wicket/markup/WicketTag.java | 2 ++
 .../wicket/markup/parser/filter/OpenCloseTagExpander.java | 5 +
 3 files changed, 11 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/44683269/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
index d4c14d2..e685827 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
@@ -162,7 +162,7 @@ public class MergedMarkup extends Markup
{
WicketTag wtag = (WicketTag)element;
 
-   // Found org.apache.wicket.child in base 
markup. In case of 3+
+   // Found wicket:child in the base markup. In 
case of 3+
// level inheritance make sure the child tag is 
not from one of
// the deeper levels
if (wtag.isChildTag() && tag.getMarkupClass() 
== markupClass)
@@ -204,8 +204,7 @@ public class MergedMarkup extends Markup
// Add the  body 
from the derived markup.
copyWicketHead(markup, 
extendIndex);
 
-   // Do not add the current tag. 
It has already been
-   // added.
+   // Do not add the current tag. 
It has already been added.
continue;
}
 
@@ -231,6 +230,7 @@ public class MergedMarkup extends Markup
 
// if  in base markup
if ((tag.isClose() && TagUtils.isHeadTag(tag)) 
||
+   (tag.isClose() && 
TagUtils.isWicketHeaderItemsTag(tag)) ||
(tag.isOpen() && 
TagUtils.isBodyTag(tag)))
{
wicketHeadProcessed = true;
@@ -397,6 +397,7 @@ public class MergedMarkup extends Markup
 * Append the wicket:head regions from the extended markup to the 
current markup
 * 
 * @param markup
+*  The markup of the child/inherited container
 * @param extendIndex
 */
private void copyWicketHead(final IMarkupFragment markup, int 
extendIndex)

http://git-wip-us.apache.org/repos/asf/wicket/blob/44683269/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java
--
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java
index 5b972ce..67f96f2 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java
@@ -70,7 +70,9 @@ public class WicketTag extends ComponentTag
 * Get the tag's name attribute: e.g. 
 * 
 * @return The tag's name attribute
+* @deprecated This method is obsolete since a long time
 */
+   @Deprecated
public final String getNameAttribute()
{
return getAttributes().getString("name");

http://git-wip-us.apache.org/repos/asf/wicket/blob/44683269/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
 
b/wicket-core/src

[4/4] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread mgrigorov
WICKET-5531 Create new placeholder tag to indicate where header contributions 
should appear

(cherry picked from commit c0d2ef035efbcf9244206507731764372a121372)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/664a118b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/664a118b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/664a118b

Branch: refs/heads/master
Commit: 664a118ba3693a868f7d41e665d8a688ade15734
Parents: 4468326
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 16:17:27 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 16:22:02 2014 +0200

--
 .../HtmlHeaderItemsContainerTest.java   | 43 
 1 file changed, 43 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/664a118b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
--
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
index f1602cc..03f2da6 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
@@ -154,4 +154,47 @@ public class HtmlHeaderItemsContainerTest extends 
WicketTestCase
{
tester.startPage(PageWithHeaderItemsOutOfHead.class);
}
+
+   /**
+* Verifies that all header contributions from  containers
+* and IHeaderResponse are rendered exactly once
+*
+* https://issues.apache.org/jira/browse/WICKET-5531
+*/
+   @Test
+   public void withHeaderItemsWithWicketHeadNoDuplicates()
+   {
+   tester.startPage(SubPageWithHeaderItemsAndWicketHead.class);
+   String responseAsString = tester.getLastResponseAsString();
+
+   {
+   int idxMetaPanelWicketHead = 
responseAsString.indexOf("meta name=\"panel-wicket-head\"");
+   int lastIdxMetaPanelWicketHead = 
responseAsString.lastIndexOf("meta name=\"panel-wicket-head\"");
+   assertEquals(idxMetaPanelWicketHead, 
lastIdxMetaPanelWicketHead);
+   }
+
+   {
+   int idxWicketAjaxJs = 
responseAsString.indexOf("wicket-ajax-jquery.js");
+   int lastIdxWicketAjaxJs = 
responseAsString.lastIndexOf("wicket-ajax-jquery.js");
+   assertEquals(idxWicketAjaxJs, lastIdxWicketAjaxJs);
+   }
+
+   {
+   int idxTitleElement = 
responseAsString.indexOf("Apache Wicket Quickstart");
+   int lastIdxTitleElement = 
responseAsString.lastIndexOf("Apache Wicket Quickstart");
+   assertEquals(idxTitleElement, lastIdxTitleElement);
+   }
+
+   {
+   int idxMetaFromBasePage = 
responseAsString.indexOf("

[jira] [Resolved] (WICKET-5531) Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread Martin Grigorov (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-5531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Grigorov resolved WICKET-5531.
-

Resolution: Fixed

Thanks for noticing this !
I have improved it.

> Create new placeholder tag to indicate where header contributions should 
> appear
> ---
>
> Key: WICKET-5531
> URL: https://issues.apache.org/jira/browse/WICKET-5531
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.14.0
>Reporter: Jesse Long
>Assignee: Martin Grigorov
>Priority: Minor
> Fix For: 7.0.0, 6.15.0
>
> Attachments: wicket-5531.tar.gz
>
>
> It would be easier to manage exactly where header contributions are 
> positioned in the head of the document if there was a placeholder tag which 
> could be used to indicate the position. Much in the same way as wicket:child 
> indicates where the child markup is positioned.
> This idea from Martin-G.
> See discussion at 
> http://mail-archives.apache.org/mod_mbox/wicket-dev/201304.mbox/%3CCAMomwMqRds-PhWkR_%3DR1x-4HH9sSW41H1nARacU%2BN15uJHh9SA%40mail.gmail.com%3E



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[1/4] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/master 5b730c0b4 -> 664a118ba


WICKET-5531 Create new placeholder tag to indicate where header contributions 
should appear

Simplify the code by extracting local variables for commonly used things.

No functional changes!

(cherry picked from commit 685f04cfcbf9983fb0a143bd2500b09e2c79ee4c)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/dccf89b5
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/dccf89b5
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/dccf89b5

Branch: refs/heads/master
Commit: dccf89b5c0270602a36ac7dc9169c91f50d9eeae
Parents: 5b730c0
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 15:37:03 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 16:21:29 2014 +0200

--
 .../org/apache/wicket/markup/MergedMarkup.java  | 33 ++--
 1 file changed, 17 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/dccf89b5/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
index eb1a6b9..d4c14d2 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
@@ -16,11 +16,13 @@
  */
 package org.apache.wicket.markup;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.parser.XmlTag;
 import org.apache.wicket.markup.parser.XmlTag.TagType;
 import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
+import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -133,6 +135,10 @@ public class MergedMarkup extends Markup
// into  and add it as well.
WicketTag childTag = null;
int baseIndex = 0;
+   MarkupResourceStream markupResourceStream = 
baseMarkup.getMarkupResourceStream();
+   IResourceStream resource = markupResourceStream.getResource();
+   Class markupClass = 
markupResourceStream.getMarkupClass();
+
for (; baseIndex < baseMarkup.size(); baseIndex++)
{
MarkupElement element = baseMarkup.get(baseIndex);
@@ -147,10 +153,9 @@ public class MergedMarkup extends Markup
 
// Make sure all tags of the base markup remember where 
they are
// from
-   if ((baseMarkup.getMarkupResourceStream().getResource() 
!= null) &&
-   (tag.getMarkupClass() == null))
+   if (resource != null && tag.getMarkupClass() == null)
{
-   
tag.setMarkupClass(baseMarkup.getMarkupResourceStream().getMarkupClass());
+   tag.setMarkupClass(markupClass);
}
 
if (element instanceof WicketTag)
@@ -160,8 +165,7 @@ public class MergedMarkup extends Markup
// Found org.apache.wicket.child in base 
markup. In case of 3+
// level inheritance make sure the child tag is 
not from one of
// the deeper levels
-   if (wtag.isChildTag() &&
-   (tag.getMarkupClass() == 
baseMarkup.getMarkupResourceStream().getMarkupClass()))
+   if (wtag.isChildTag() && tag.getMarkupClass() 
== markupClass)
{
if (wtag.isOpenClose())
{
@@ -169,8 +173,7 @@ public class MergedMarkup extends Markup
childTag = wtag;
WicketTag childOpenTag = 
(WicketTag)wtag.mutable();

childOpenTag.getXmlTag().setType(TagType.OPEN);
-   
childOpenTag.setMarkupClass(baseMarkup.getMarkupResourceStream()
-   .getMarkupClass());
+   
childOpenTag.setMarkupClass(markupClass);
addMarkupElement(childOpenTag);
break;
}
@@ -2

[2/4] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread mgrigorov
WICKET-5531 Create new placeholder tag to indicate where header contributions 
should appear

Add containers for  to the HtmlHeader(Items)Container in the page

(cherry picked from commit c31f30f6914b5d9bd146864015d5aebe16cd681c)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/bdbc86af
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/bdbc86af
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/bdbc86af

Branch: refs/heads/master
Commit: bdbc86afd33a1ea0db5a98039067a7f6a9130f83
Parents: dccf89b
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 15:38:07 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 16:21:41 2014 +0200

--
 .../markup/resolver/HtmlHeaderResolver.java | 59 +++-
 1 file changed, 46 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/bdbc86af/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
index 8ebe0ce..f5ab571 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
@@ -31,6 +31,8 @@ import 
org.apache.wicket.markup.html.internal.HtmlHeaderItemsContainer;
 import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
 import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
 import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.visit.IVisit;
+import org.apache.wicket.util.visit.IVisitor;
 
 /**
  * This is a tag resolver which handles  and 
tags. It must be
@@ -59,7 +61,7 @@ public class HtmlHeaderResolver implements IComponentResolver
{
final Page page = container.getPage();
 
-   // Only  component tags have the id == "_header"
+   //  or  component tags have the id 
== "_header_"
if (tag.getId().equals(HtmlHeaderSectionHandler.HEADER_ID))
{
// Create a special header component which will gather 
additional
@@ -74,22 +76,39 @@ public class HtmlHeaderResolver implements 
IComponentResolver
// head first.
if (container instanceof WebPage)
{
-   // Create a special header component which will 
gather
-   // additional input the  from 
'contributors'.
-   MarkupContainer header = 
newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
-   page.getAutoIndex(), tag);
+   HtmlHeaderContainer header = 
container.visitChildren(new IVisitor()
+   {
+   @Override
+   public void component(final Component 
component, final IVisit visit)
+   {
+   if (component instanceof 
HtmlHeaderContainer)
+   {
+   
visit.stop((HtmlHeaderContainer) component);
+   } else if (component instanceof 
TransparentWebMarkupContainer == false)
+   {
+   visit.dontGoDeeper();
+   }
+   }
+   });
 
// It is . Because they do not 
provide any
// additional functionality they are merely a 
means of surrounding relevant
// markup. Thus we simply create a 
WebMarkupContainer to handle
// the tag.
-   WebMarkupContainer header2 = new 
TransparentWebMarkupContainer(
-   HtmlHeaderSectionHandler.HEADER_ID);
+   WebMarkupContainer wicketHeadContainer = new 
WicketHeadContainer();
 
-   header2.setRenderBodyOnly(true);
-   header.add(header2);
+   if (header == null)
+   {
+   // Create a special header component 
which will gather
+ 

[3/4] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread mgrigorov
WICKET-5531 Create new placeholder tag to indicate where header contributions 
should appear

Copy  contents right after  when 
 is used.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/686030c6
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/686030c6
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/686030c6

Branch: refs/heads/wicket-6.x
Commit: 686030c6763baf24fb8a8f3b24a396369d6f16e1
Parents: c31f30f
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 16:07:20 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 16:07:20 2014 +0200

--
 .../src/main/java/org/apache/wicket/markup/MergedMarkup.java  | 7 ---
 .../src/main/java/org/apache/wicket/markup/WicketTag.java | 2 ++
 .../wicket/markup/parser/filter/OpenCloseTagExpander.java | 5 +
 3 files changed, 11 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/686030c6/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
index d4c14d2..e685827 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
@@ -162,7 +162,7 @@ public class MergedMarkup extends Markup
{
WicketTag wtag = (WicketTag)element;
 
-   // Found org.apache.wicket.child in base 
markup. In case of 3+
+   // Found wicket:child in the base markup. In 
case of 3+
// level inheritance make sure the child tag is 
not from one of
// the deeper levels
if (wtag.isChildTag() && tag.getMarkupClass() 
== markupClass)
@@ -204,8 +204,7 @@ public class MergedMarkup extends Markup
// Add the  body 
from the derived markup.
copyWicketHead(markup, 
extendIndex);
 
-   // Do not add the current tag. 
It has already been
-   // added.
+   // Do not add the current tag. 
It has already been added.
continue;
}
 
@@ -231,6 +230,7 @@ public class MergedMarkup extends Markup
 
// if  in base markup
if ((tag.isClose() && TagUtils.isHeadTag(tag)) 
||
+   (tag.isClose() && 
TagUtils.isWicketHeaderItemsTag(tag)) ||
(tag.isOpen() && 
TagUtils.isBodyTag(tag)))
{
wicketHeadProcessed = true;
@@ -397,6 +397,7 @@ public class MergedMarkup extends Markup
 * Append the wicket:head regions from the extended markup to the 
current markup
 * 
 * @param markup
+*  The markup of the child/inherited container
 * @param extendIndex
 */
private void copyWicketHead(final IMarkupFragment markup, int 
extendIndex)

http://git-wip-us.apache.org/repos/asf/wicket/blob/686030c6/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java
--
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java
index 120d2af..b144758 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/WicketTag.java
@@ -70,7 +70,9 @@ public class WicketTag extends ComponentTag
 * Get the tag's name attribute: e.g. 
 * 
 * @return The tag's name attribute
+* @deprecated This method is obsolete since a long time
 */
+   @Deprecated
public final String getNameAttribute()
{
return getAttributes().getString("name");

http://git-wip-us.apache.org/repos/asf/wicket/blob/686030c6/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpa

[2/4] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread mgrigorov
WICKET-5531 Create new placeholder tag to indicate where header contributions 
should appear

Add containers for  to the HtmlHeader(Items)Container in the page


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c31f30f6
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c31f30f6
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c31f30f6

Branch: refs/heads/wicket-6.x
Commit: c31f30f6914b5d9bd146864015d5aebe16cd681c
Parents: 685f04c
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 15:38:07 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 15:38:07 2014 +0200

--
 .../markup/resolver/HtmlHeaderResolver.java | 59 +++-
 1 file changed, 46 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/c31f30f6/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
index 8ebe0ce..f5ab571 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
@@ -31,6 +31,8 @@ import 
org.apache.wicket.markup.html.internal.HtmlHeaderItemsContainer;
 import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
 import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
 import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.visit.IVisit;
+import org.apache.wicket.util.visit.IVisitor;
 
 /**
  * This is a tag resolver which handles  and 
tags. It must be
@@ -59,7 +61,7 @@ public class HtmlHeaderResolver implements IComponentResolver
{
final Page page = container.getPage();
 
-   // Only  component tags have the id == "_header"
+   //  or  component tags have the id 
== "_header_"
if (tag.getId().equals(HtmlHeaderSectionHandler.HEADER_ID))
{
// Create a special header component which will gather 
additional
@@ -74,22 +76,39 @@ public class HtmlHeaderResolver implements 
IComponentResolver
// head first.
if (container instanceof WebPage)
{
-   // Create a special header component which will 
gather
-   // additional input the  from 
'contributors'.
-   MarkupContainer header = 
newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
-   page.getAutoIndex(), tag);
+   HtmlHeaderContainer header = 
container.visitChildren(new IVisitor()
+   {
+   @Override
+   public void component(final Component 
component, final IVisit visit)
+   {
+   if (component instanceof 
HtmlHeaderContainer)
+   {
+   
visit.stop((HtmlHeaderContainer) component);
+   } else if (component instanceof 
TransparentWebMarkupContainer == false)
+   {
+   visit.dontGoDeeper();
+   }
+   }
+   });
 
// It is . Because they do not 
provide any
// additional functionality they are merely a 
means of surrounding relevant
// markup. Thus we simply create a 
WebMarkupContainer to handle
// the tag.
-   WebMarkupContainer header2 = new 
TransparentWebMarkupContainer(
-   HtmlHeaderSectionHandler.HEADER_ID);
+   WebMarkupContainer wicketHeadContainer = new 
WicketHeadContainer();
 
-   header2.setRenderBodyOnly(true);
-   header.add(header2);
+   if (header == null)
+   {
+   // Create a special header component 
which will gather
+   // additional input the  from 
'contribu

[1/4] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 625470588 -> c0d2ef035


WICKET-5531 Create new placeholder tag to indicate where header contributions 
should appear

Simplify the code by extracting local variables for commonly used things.

No functional changes!


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/685f04cf
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/685f04cf
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/685f04cf

Branch: refs/heads/wicket-6.x
Commit: 685f04cfcbf9983fb0a143bd2500b09e2c79ee4c
Parents: 6254705
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 15:37:03 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 15:37:03 2014 +0200

--
 .../org/apache/wicket/markup/MergedMarkup.java  | 33 ++--
 1 file changed, 17 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/685f04cf/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
index eb1a6b9..d4c14d2 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/MergedMarkup.java
@@ -16,11 +16,13 @@
  */
 package org.apache.wicket.markup;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.parser.XmlTag;
 import org.apache.wicket.markup.parser.XmlTag.TagType;
 import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
+import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -133,6 +135,10 @@ public class MergedMarkup extends Markup
// into  and add it as well.
WicketTag childTag = null;
int baseIndex = 0;
+   MarkupResourceStream markupResourceStream = 
baseMarkup.getMarkupResourceStream();
+   IResourceStream resource = markupResourceStream.getResource();
+   Class markupClass = 
markupResourceStream.getMarkupClass();
+
for (; baseIndex < baseMarkup.size(); baseIndex++)
{
MarkupElement element = baseMarkup.get(baseIndex);
@@ -147,10 +153,9 @@ public class MergedMarkup extends Markup
 
// Make sure all tags of the base markup remember where 
they are
// from
-   if ((baseMarkup.getMarkupResourceStream().getResource() 
!= null) &&
-   (tag.getMarkupClass() == null))
+   if (resource != null && tag.getMarkupClass() == null)
{
-   
tag.setMarkupClass(baseMarkup.getMarkupResourceStream().getMarkupClass());
+   tag.setMarkupClass(markupClass);
}
 
if (element instanceof WicketTag)
@@ -160,8 +165,7 @@ public class MergedMarkup extends Markup
// Found org.apache.wicket.child in base 
markup. In case of 3+
// level inheritance make sure the child tag is 
not from one of
// the deeper levels
-   if (wtag.isChildTag() &&
-   (tag.getMarkupClass() == 
baseMarkup.getMarkupResourceStream().getMarkupClass()))
+   if (wtag.isChildTag() && tag.getMarkupClass() 
== markupClass)
{
if (wtag.isOpenClose())
{
@@ -169,8 +173,7 @@ public class MergedMarkup extends Markup
childTag = wtag;
WicketTag childOpenTag = 
(WicketTag)wtag.mutable();

childOpenTag.getXmlTag().setType(TagType.OPEN);
-   
childOpenTag.setMarkupClass(baseMarkup.getMarkupResourceStream()
-   .getMarkupClass());
+   
childOpenTag.setMarkupClass(markupClass);
addMarkupElement(childOpenTag);
break;
}
@@ -282,7 +285,7 @@ public class MergedMarkup extends Markup
  

[4/4] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread mgrigorov
WICKET-5531 Create new placeholder tag to indicate where header contributions 
should appear


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c0d2ef03
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c0d2ef03
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c0d2ef03

Branch: refs/heads/wicket-6.x
Commit: c0d2ef035efbcf9244206507731764372a121372
Parents: 686030c
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 16:17:27 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 16:17:27 2014 +0200

--
 .../HtmlHeaderItemsContainerTest.java   | 43 
 1 file changed, 43 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/c0d2ef03/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
--
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
index f1602cc..03f2da6 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
@@ -154,4 +154,47 @@ public class HtmlHeaderItemsContainerTest extends 
WicketTestCase
{
tester.startPage(PageWithHeaderItemsOutOfHead.class);
}
+
+   /**
+* Verifies that all header contributions from  containers
+* and IHeaderResponse are rendered exactly once
+*
+* https://issues.apache.org/jira/browse/WICKET-5531
+*/
+   @Test
+   public void withHeaderItemsWithWicketHeadNoDuplicates()
+   {
+   tester.startPage(SubPageWithHeaderItemsAndWicketHead.class);
+   String responseAsString = tester.getLastResponseAsString();
+
+   {
+   int idxMetaPanelWicketHead = 
responseAsString.indexOf("meta name=\"panel-wicket-head\"");
+   int lastIdxMetaPanelWicketHead = 
responseAsString.lastIndexOf("meta name=\"panel-wicket-head\"");
+   assertEquals(idxMetaPanelWicketHead, 
lastIdxMetaPanelWicketHead);
+   }
+
+   {
+   int idxWicketAjaxJs = 
responseAsString.indexOf("wicket-ajax-jquery.js");
+   int lastIdxWicketAjaxJs = 
responseAsString.lastIndexOf("wicket-ajax-jquery.js");
+   assertEquals(idxWicketAjaxJs, lastIdxWicketAjaxJs);
+   }
+
+   {
+   int idxTitleElement = 
responseAsString.indexOf("Apache Wicket Quickstart");
+   int lastIdxTitleElement = 
responseAsString.lastIndexOf("Apache Wicket Quickstart");
+   assertEquals(idxTitleElement, lastIdxTitleElement);
+   }
+
+   {
+   int idxMetaFromBasePage = 
responseAsString.indexOf("

[jira] [Commented] (WICKET-5435) Ajaxified version of WebSession#getClientInfo should be added

2014-03-13 Thread Martin Grigorov (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933228#comment-13933228
 ] 

Martin Grigorov commented on WICKET-5435:
-

Yes. Any #write() method for Servlet response's writer and outputStream.
What is the stacktrace ?

> Ajaxified version of WebSession#getClientInfo should be added
> -
>
> Key: WICKET-5435
> URL: https://issues.apache.org/jira/browse/WICKET-5435
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.13.0
>Reporter: Maxim Solodovnik
>Assignee: Martin Grigorov
>  Labels: features, patch
> Fix For: 6.13.0, 7.0.0
>
>
> It would be nice to have Ajaxified version of WebSession#getClientInfo of of 
> the box
> here is the link to the discussion: 
> http://markmail.org/message/ex3hxtynnmnktzgy
> My implementation based on wicket quickstart is here: 
> https://github.com/solomax/ajax-client-info/blob/master/src/main/java/org/ajax/ClientInfoBehavior.java
> Thanks in advance



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (WICKET-5435) Ajaxified version of WebSession#getClientInfo should be added

2014-03-13 Thread Ufuk Altin (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933226#comment-13933226
 ] 

Ufuk Altin commented on WICKET-5435:


Hey Martin,

I set the breakpoints in the above mentioned Methodods, non of those where 
called. There is a method write(CharSequence sequence) which is called. Do you 
mean this one as well?

> Ajaxified version of WebSession#getClientInfo should be added
> -
>
> Key: WICKET-5435
> URL: https://issues.apache.org/jira/browse/WICKET-5435
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.13.0
>Reporter: Maxim Solodovnik
>Assignee: Martin Grigorov
>  Labels: features, patch
> Fix For: 6.13.0, 7.0.0
>
>
> It would be nice to have Ajaxified version of WebSession#getClientInfo of of 
> the box
> here is the link to the discussion: 
> http://markmail.org/message/ex3hxtynnmnktzgy
> My implementation based on wicket quickstart is here: 
> https://github.com/solomax/ajax-client-info/blob/master/src/main/java/org/ajax/ClientInfoBehavior.java
> Thanks in advance



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (WICKET-5435) Ajaxified version of WebSession#getClientInfo should be added

2014-03-13 Thread Martin Grigorov (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933194#comment-13933194
 ] 

Martin Grigorov commented on WICKET-5435:
-

There must be something writing to HttpServletResponse' output (either 
#getWriter().write() or #getOutputStream.write()) before the call to 
#sendRedirect().

> Ajaxified version of WebSession#getClientInfo should be added
> -
>
> Key: WICKET-5435
> URL: https://issues.apache.org/jira/browse/WICKET-5435
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.13.0
>Reporter: Maxim Solodovnik
>Assignee: Martin Grigorov
>  Labels: features, patch
> Fix For: 6.13.0, 7.0.0
>
>
> It would be nice to have Ajaxified version of WebSession#getClientInfo of of 
> the box
> here is the link to the discussion: 
> http://markmail.org/message/ex3hxtynnmnktzgy
> My implementation based on wicket quickstart is here: 
> https://github.com/solomax/ajax-client-info/blob/master/src/main/java/org/ajax/ClientInfoBehavior.java
> Thanks in advance



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Comment Edited] (WICKET-5435) Ajaxified version of WebSession#getClientInfo should be added

2014-03-13 Thread Ufuk Altin (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933153#comment-13933153
 ] 

Ufuk Altin edited comment on WICKET-5435 at 3/13/14 12:11 PM:
--

What we further do and figured out is the following in WicketApplication.init()

getRequestCycleListeners().add(new AbstractRequestCycleListener() {
@Override
public void onRequestHandlerResolved(final RequestCycle 
cycle, final RequestHandler handler) {
super.onRequestHandlerResolved(cycle, handler);

if (!("server".equals(environment)) && handler instanceof 
IPageRequestHandler) {
// if the line below is outcommented no error... with this 
line error...

IRequestablePage page = ((IPageRequestHandler) 
handler).getPage();

.. some more code ..
} else {


updateJob.validateIfUpdateIsActive(cycle.getRequest().getOriginalUrl().getHost());

}

}
});



was (Author: ualtin):
What we further do and figured out is the following in WicketApplication.init()

getRequestCycleListeners().add(new AbstractRequestCycleListener() {
@Override
public void onRequestHandlerResolved(final RequestCycle 
cycle, final IRequestHandler handler) {
super.onRequestHandlerResolved(cycle, handler);

if (!("server".equals(environment)) && handler instanceof 
IPageRequestHandler) {
// if the line below is outcommented no error... with this line error...
IRequestablePage page = ((IPageRequestHandler) 
handler).getPage();
.. some more code ..
} else {

updateJob.validateIfUpdateIsActive(cycle.getRequest().getOriginalUrl().getHost());
}
}


});

> Ajaxified version of WebSession#getClientInfo should be added
> -
>
> Key: WICKET-5435
> URL: https://issues.apache.org/jira/browse/WICKET-5435
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.13.0
>Reporter: Maxim Solodovnik
>Assignee: Martin Grigorov
>  Labels: features, patch
> Fix For: 6.13.0, 7.0.0
>
>
> It would be nice to have Ajaxified version of WebSession#getClientInfo of of 
> the box
> here is the link to the discussion: 
> http://markmail.org/message/ex3hxtynnmnktzgy
> My implementation based on wicket quickstart is here: 
> https://github.com/solomax/ajax-client-info/blob/master/src/main/java/org/ajax/ClientInfoBehavior.java
> Thanks in advance



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (WICKET-5435) Ajaxified version of WebSession#getClientInfo should be added

2014-03-13 Thread Ufuk Altin (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933153#comment-13933153
 ] 

Ufuk Altin commented on WICKET-5435:


What we further do and figured out is the following in WicketApplication.init()

getRequestCycleListeners().add(new AbstractRequestCycleListener() {
@Override
public void onRequestHandlerResolved(final RequestCycle 
cycle, final IRequestHandler handler) {
super.onRequestHandlerResolved(cycle, handler);

if (!("server".equals(environment)) && handler instanceof 
IPageRequestHandler) {
// if the line below is outcommented no error... with this line error...
IRequestablePage page = ((IPageRequestHandler) 
handler).getPage();
.. some more code ..
} else {

updateJob.validateIfUpdateIsActive(cycle.getRequest().getOriginalUrl().getHost());
}
}


});

> Ajaxified version of WebSession#getClientInfo should be added
> -
>
> Key: WICKET-5435
> URL: https://issues.apache.org/jira/browse/WICKET-5435
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.13.0
>Reporter: Maxim Solodovnik
>Assignee: Martin Grigorov
>  Labels: features, patch
> Fix For: 6.13.0, 7.0.0
>
>
> It would be nice to have Ajaxified version of WebSession#getClientInfo of of 
> the box
> here is the link to the discussion: 
> http://markmail.org/message/ex3hxtynnmnktzgy
> My implementation based on wicket quickstart is here: 
> https://github.com/solomax/ajax-client-info/blob/master/src/main/java/org/ajax/ClientInfoBehavior.java
> Thanks in advance



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (WICKET-5435) Ajaxified version of WebSession#getClientInfo should be added

2014-03-13 Thread Ufuk Altin (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933129#comment-13933129
 ] 

Ufuk Altin commented on WICKET-5435:


I put the breakpoints in where you said, but non of those first three methods 
has been called. Only the the sendRedirect as following:
1st Call -  url:./wicket/page?1
2nd Call -  url:../../
3rd Call -  url:./org.apache.wicket.markup.html.pages.BrowserInfoPage?2
and the 3rd time it crashes. 
at the thired time the calling stack trace looks like:

BufferedWebResponse.sendRedirect(String) line: 559  
HeaderBufferingWebResponse.sendRedirect(String) line: 117   
WebPageRenderer.redirectTo(Url, RequestCycle) line: 158 
WebPageRenderer.respond(RequestCycle) line: 317 
RenderPageRequestHandler.respond(IRequestCycle) line: 165   
RequestCycle$HandlerExecutor.respond(IRequestHandler) line: 861 
RequestCycle$HandlerExecutor(RequestHandlerStack).execute(IRequestHandler) 
line: 64 
RequestCycle.execute(IRequestHandler) line: 261 
RequestCycle.processRequest() line: 218 
RequestCycle.processRequestAndDetach() line: 289
WicketFilter.processRequestCycle(RequestCycle, WebResponse, HttpServletRequest, 
HttpServletResponse, FilterChain) line: 259 
WicketFilter.processRequest(ServletRequest, ServletResponse, FilterChain) line: 
201 
WicketFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 282   
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 
243  
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 210  
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 330 
FilterSecurityInterceptor.invoke(FilterInvocation) line: 118
FilterSecurityInterceptor.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 84   
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
ExceptionTranslationFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 113 
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
SessionManagementFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 103
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
AnonymousAuthenticationFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 113  
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
SecurityContextHolderAwareRequestFilter.doFilter(ServletRequest, 
ServletResponse, FilterChain) line: 154
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
RequestCacheAwareFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 45 
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
LSGTamRequestHeaderAuthenticationFilter(AbstractPreAuthenticatedProcessingFilter).doFilter(ServletRequest,
 ServletResponse, FilterChain) line: 94   
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
WebAsyncManagerIntegrationFilter.doFilterInternal(HttpServletRequest, 
HttpServletResponse, FilterChain) line: 50
WebAsyncManagerIntegrationFilter(OncePerRequestFilter).doFilter(ServletRequest, 
ServletResponse, FilterChain) line: 108 
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
SecurityContextPersistenceFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 87
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) 
line: 342 
FilterChainProxy.doFilterInternal(ServletRequest, ServletResponse, FilterChain) 
line: 192   
FilterChainProxy.doFilter(ServletRequest, ServletResponse, FilterChain) line: 
160   
DelegatingFilterProxy.invokeDelegate(Filter, ServletRequest, ServletResponse, 
FilterChain) line: 344
DelegatingFilterProxy.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 261  
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 
243  
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 210  
StandardWrapperValve.invoke(Request, Response) line: 222
StandardContextValve.invoke(Request, Response) line: 123
StandardHostValve.invoke(Request, Response) line: 168   
ErrorReportValve.invoke(Request, Response) line: 99 
AccessLogValve.invoke(Request, Response) line: 929  
StandardEngineValve.invoke(Request, Response) line: 118 
CoyoteAdapter.service(Request, Response) line: 407  
Http11Processor(AbstractHttp11Processor).process(SocketWrapper) line: 
1002
Http11Protocol$Http11ConnectionHandler(AbstractProtocol$AbstractConnectionHandler).process(SocketWrapper,
 SocketStatus) line: 585   
JIoEndpoint$SocketProcessor.run() line: 312 
Th

git commit: WICKET-5522 Failing HTTPS redirect to RequireHttps annotated pages with ONE_PASS_RENDER strategy

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/master 233b9d390 -> 5b730c0b4


WICKET-5522 Failing HTTPS redirect to RequireHttps annotated pages with 
ONE_PASS_RENDER strategy


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/5b730c0b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/5b730c0b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/5b730c0b

Branch: refs/heads/master
Commit: 5b730c0b41d6261be5bdd7810cdc59ebebf1d1ef
Parents: 233b9d3
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 12:09:17 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 12:09:17 2014 +0200

--
 .../request/handler/render/WebPageRenderer.java | 25 +++-
 .../handler/render/WebPageRendererTest.java | 43 +++-
 2 files changed, 65 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/5b730c0b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
 
b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
index 1b98bed..0b5dee4 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
@@ -33,6 +33,7 @@ import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.util.lang.Objects;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -338,11 +339,12 @@ public class WebPageRenderer extends PageRenderer
return false;
}
 
-   return neverRedirect(getRedirectPolicy())
+   return (compatibleProtocols(currentUrl.getProtocol(), 
targetUrl.getProtocol())) &&
+   (neverRedirect(getRedirectPolicy())
|| ((isOnePassRender() && 
notForcedRedirect(getRedirectPolicy())) || (targetUrl
.equals(currentUrl) && 
notNewAndNotStatelessPage(isNewPageInstance(),
isPageStateless( || 
(targetUrl.equals(currentUrl) && isRedirectToRender())
-   || (shouldPreserveClientUrl(cycle) && 
notForcedRedirect(getRedirectPolicy()));
+   || (shouldPreserveClientUrl(cycle) && 
notForcedRedirect(getRedirectPolicy(;
}
 
private static boolean notNewAndNotStatelessPage(boolean 
newPageInstance, boolean pageStateless)
@@ -365,4 +367,23 @@ public class WebPageRenderer extends PageRenderer
return !alwaysRedirect(redirectPolicy);
}
 
+   /**
+* Compares the protocols of two {@link Url}s
+*
+* @param p1
+*  the first protocol
+* @param p2
+*  the second protocol
+* @return {@code false} if the protocols are both non-null and not 
equal,
+*  {@code true} - otherwise
+*/
+   protected boolean compatibleProtocols(String p1, String p2)
+   {
+   if (p1 != null && p2 != null)
+   {
+   return Objects.equal(p1, p2);
+   }
+
+   return true;
+   }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/5b730c0b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
--
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
index 78e16e8..afe6928 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
@@ -45,7 +45,7 @@ import org.junit.Test;
 /**
  * Tests for the calculation whether or not to redirect or directly render a 
page
  */
-public class WebPageRendererTest
+public class WebPageRendererTest extends Assert
 {
 
private RenderPageRequestHandler handler;
@@ -105,6 +105,47 @@ public class WebPageRendererTest
}
 
/**
+* Tests that when {@link 
org.apache.wicket.settings.RequestCycleSettings.RenderStrategy#ONE_PASS_RENDER}
+* is configured there will be a redirect issued if the protocols of 
the current and target urls
+* are different
+*

git commit: WICKET-5522 Failing HTTPS redirect to RequireHttps annotated pages with ONE_PASS_RENDER strategy

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 98825c887 -> 625470588


WICKET-5522 Failing HTTPS redirect to RequireHttps annotated pages with 
ONE_PASS_RENDER strategy


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/62547058
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/62547058
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/62547058

Branch: refs/heads/wicket-6.x
Commit: 625470588754680d6b256473e8f218c981a0808c
Parents: 98825c8
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 12:08:35 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 12:08:35 2014 +0200

--
 .../request/handler/render/WebPageRenderer.java | 24 ++-
 .../handler/render/WebPageRendererTest.java | 43 +++-
 2 files changed, 65 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/62547058/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
 
b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
index c641b58..75bc5d7 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
@@ -33,6 +33,7 @@ import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.util.lang.Objects;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -200,7 +201,8 @@ public class WebPageRenderer extends PageRenderer
// if there is saved response for this URL render it

bufferedResponse.writeTo((WebResponse)requestCycle.getResponse());
}
-   else if (isAjax == false && (//
+   else if ((isAjax == false)
+   && 
(compatibleProtocols(currentUrl.getProtocol(), targetUrl.getProtocol())) && (//
getRedirectPolicy() == 
RedirectPolicy.NEVER_REDIRECT //
|| (isOnePassRender() && 
getRedirectPolicy() != RedirectPolicy.ALWAYS_REDIRECT) //
|| 
((targetUrl.equals(currentUrl) && !getPageProvider().isNewPageInstance() && 
!getPage()
@@ -318,4 +320,24 @@ public class WebPageRenderer extends PageRenderer
}
}
}
+
+   /**
+* Compares the protocols of two {@link Url}s
+*
+* @param p1
+*  the first protocol
+* @param p2
+*  the second protocol
+* @return {@code false} if the protocols are both non-null and not 
equal,
+*  {@code true} - otherwise
+*/
+   protected boolean compatibleProtocols(String p1, String p2)
+   {
+   if (p1 != null && p2 != null)
+   {
+   return Objects.equal(p1, p2);
+   }
+
+   return true;
+   }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/62547058/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
--
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
index 3c6ce7e..2200b14 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
@@ -46,7 +46,7 @@ import org.junit.Test;
 /**
  * Tests for the calculation whether or not to redirect or directly render a 
page
  */
-public class WebPageRendererTest
+public class WebPageRendererTest extends Assert
 {
 
private RenderPageRequestHandler handler;
@@ -112,6 +112,47 @@ public class WebPageRendererTest
}
 
/**
+* Tests that when {@link 
IRequestCycleSettings.RenderStrategy#ONE_PASS_RENDER} is configured
+* there will be a redirect issued if the protocols of the current and 
target urls
+* are different
+*
+* https://issues.apache.org/jira/browse/WICKET-5522
+*/
+   @Test
+   public void testOnePassRenderDifferentProtocols()
+   {
+   final 

[jira] [Resolved] (WICKET-5522) Failing HTTPS redirect to RequireHttps annotated pages with ONE_PASS_RENDER strategy

2014-03-13 Thread Martin Grigorov (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-5522?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Grigorov resolved WICKET-5522.
-

Resolution: Fixed

> Failing HTTPS redirect to RequireHttps annotated pages with ONE_PASS_RENDER 
> strategy
> 
>
> Key: WICKET-5522
> URL: https://issues.apache.org/jira/browse/WICKET-5522
> Project: Wicket
>  Issue Type: Bug
>  Components: wicket
>Affects Versions: 6.13.0, 6.14.0
>Reporter: Dmitriy Neretin
>Assignee: Martin Grigorov
>  Labels: RequireHttps,, redirect
> Attachments: WICKET-5522.patch, renderstrategyproblem.zip
>
>
> Activated JS: Start the quickstart -> Press the submit buttons -> See the 
> secured page with https!
> Deactivates JS: (NoScript Firefox Plugin): Start the quickstart -> Press the 
> submit buttons -> See the secured page BUT with HTTP!
> There was no proper https redirect.
> If I change the rendering strategy to REDIRECT_TO_BUFFER everything works 
> fine, but if I change the strategy to ONE_PASS_RENDER the https forwarding 
> does't work anymore. But only if I deactivate all scripts...
> Regards,
> Dmitriy



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (WICKET-5522) Failing HTTPS redirect to RequireHttps annotated pages with ONE_PASS_RENDER strategy

2014-03-13 Thread Martin Grigorov (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-5522?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Grigorov updated WICKET-5522:


Fix Version/s: 6.15.0
   7.0.0

> Failing HTTPS redirect to RequireHttps annotated pages with ONE_PASS_RENDER 
> strategy
> 
>
> Key: WICKET-5522
> URL: https://issues.apache.org/jira/browse/WICKET-5522
> Project: Wicket
>  Issue Type: Bug
>  Components: wicket
>Affects Versions: 6.13.0, 6.14.0
>Reporter: Dmitriy Neretin
>Assignee: Martin Grigorov
>  Labels: RequireHttps,, redirect
> Fix For: 7.0.0, 6.15.0
>
> Attachments: WICKET-5522.patch, renderstrategyproblem.zip
>
>
> Activated JS: Start the quickstart -> Press the submit buttons -> See the 
> secured page with https!
> Deactivates JS: (NoScript Firefox Plugin): Start the quickstart -> Press the 
> submit buttons -> See the secured page BUT with HTTP!
> There was no proper https redirect.
> If I change the rendering strategy to REDIRECT_TO_BUFFER everything works 
> fine, but if I change the strategy to ONE_PASS_RENDER the https forwarding 
> does't work anymore. But only if I deactivate all scripts...
> Regards,
> Dmitriy



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Reopened] (WICKET-5531) Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread Martin Grigorov (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-5531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Grigorov reopened WICKET-5531:
-


> Create new placeholder tag to indicate where header contributions should 
> appear
> ---
>
> Key: WICKET-5531
> URL: https://issues.apache.org/jira/browse/WICKET-5531
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.14.0
>Reporter: Jesse Long
>Assignee: Martin Grigorov
>Priority: Minor
> Fix For: 7.0.0, 6.15.0
>
> Attachments: wicket-5531.tar.gz
>
>
> It would be easier to manage exactly where header contributions are 
> positioned in the head of the document if there was a placeholder tag which 
> could be used to indicate the position. Much in the same way as wicket:child 
> indicates where the child markup is positioned.
> This idea from Martin-G.
> See discussion at 
> http://mail-archives.apache.org/mod_mbox/wicket-dev/201304.mbox/%3CCAMomwMqRds-PhWkR_%3DR1x-4HH9sSW41H1nARacU%2BN15uJHh9SA%40mail.gmail.com%3E



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (WICKET-5531) Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread Jesse Long (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-5531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jesse Long updated WICKET-5531:
---

Attachment: wicket-5531.tar.gz

quickstart which shows all header items duplicated.

> Create new placeholder tag to indicate where header contributions should 
> appear
> ---
>
> Key: WICKET-5531
> URL: https://issues.apache.org/jira/browse/WICKET-5531
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.14.0
>Reporter: Jesse Long
>Assignee: Martin Grigorov
>Priority: Minor
> Fix For: 7.0.0, 6.15.0
>
> Attachments: wicket-5531.tar.gz
>
>
> It would be easier to manage exactly where header contributions are 
> positioned in the head of the document if there was a placeholder tag which 
> could be used to indicate the position. Much in the same way as wicket:child 
> indicates where the child markup is positioned.
> This idea from Martin-G.
> See discussion at 
> http://mail-archives.apache.org/mod_mbox/wicket-dev/201304.mbox/%3CCAMomwMqRds-PhWkR_%3DR1x-4HH9sSW41H1nARacU%2BN15uJHh9SA%40mail.gmail.com%3E



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (WICKET-5531) Create new placeholder tag to indicate where header contributions should appear

2014-03-13 Thread Jesse Long (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933040#comment-13933040
 ] 

Jesse Long commented on WICKET-5531:


Hi Martin,

I am testing with 6.15.0-SNAPSHOT, but it seems that the header items all 
appear twice:



Apache Wicket Quickstart
















> Create new placeholder tag to indicate where header contributions should 
> appear
> ---
>
> Key: WICKET-5531
> URL: https://issues.apache.org/jira/browse/WICKET-5531
> Project: Wicket
>  Issue Type: Improvement
>  Components: wicket
>Affects Versions: 6.14.0
>Reporter: Jesse Long
>Assignee: Martin Grigorov
>Priority: Minor
> Fix For: 7.0.0, 6.15.0
>
>
> It would be easier to manage exactly where header contributions are 
> positioned in the head of the document if there was a placeholder tag which 
> could be used to indicate the position. Much in the same way as wicket:child 
> indicates where the child markup is positioned.
> This idea from Martin-G.
> See discussion at 
> http://mail-archives.apache.org/mod_mbox/wicket-dev/201304.mbox/%3CCAMomwMqRds-PhWkR_%3DR1x-4HH9sSW41H1nARacU%2BN15uJHh9SA%40mail.gmail.com%3E



--
This message was sent by Atlassian JIRA
(v6.2#6252)


git commit: Upgrade YUI compressor plugin

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/master 0d277e299 -> 233b9d390


Upgrade YUI compressor plugin

(cherry picked from commit 98825c8875e19de6a8657fbf097f115e40b66168)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/233b9d39
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/233b9d39
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/233b9d39

Branch: refs/heads/master
Commit: 233b9d39090f3ed3bf04101805f87f5c647891eb
Parents: 0d277e2
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 11:05:06 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 11:15:26 2014 +0200

--
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/233b9d39/pom.xml
--
diff --git a/pom.xml b/pom.xml
index 23a6fdc..173cf80 100644
--- a/pom.xml
+++ b/pom.xml
@@ -878,7 +878,7 @@

net.alchim31.maven

yuicompressor-maven-plugin
-   1.3.2
+   1.4.0

true
false



git commit: Upgrade YUI compressor plugin

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 3ce9f61b2 -> 98825c887


Upgrade YUI compressor plugin


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/98825c88
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/98825c88
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/98825c88

Branch: refs/heads/wicket-6.x
Commit: 98825c8875e19de6a8657fbf097f115e40b66168
Parents: 3ce9f61
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 11:05:06 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 11:05:23 2014 +0200

--
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/98825c88/pom.xml
--
diff --git a/pom.xml b/pom.xml
index c73464d..7b74c1a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -839,7 +839,7 @@

net.alchim31.maven

yuicompressor-maven-plugin
-   1.3.0
+   1.4.0

true
false



[jira] [Assigned] (WICKET-5522) Failing HTTPS redirect to RequireHttps annotated pages with ONE_PASS_RENDER strategy

2014-03-13 Thread Martin Grigorov (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-5522?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Grigorov reassigned WICKET-5522:
---

Assignee: Martin Grigorov

> Failing HTTPS redirect to RequireHttps annotated pages with ONE_PASS_RENDER 
> strategy
> 
>
> Key: WICKET-5522
> URL: https://issues.apache.org/jira/browse/WICKET-5522
> Project: Wicket
>  Issue Type: Bug
>  Components: wicket
>Affects Versions: 6.13.0, 6.14.0
>Reporter: Dmitriy Neretin
>Assignee: Martin Grigorov
>  Labels: RequireHttps,, redirect
> Attachments: WICKET-5522.patch, renderstrategyproblem.zip
>
>
> Activated JS: Start the quickstart -> Press the submit buttons -> See the 
> secured page with https!
> Deactivates JS: (NoScript Firefox Plugin): Start the quickstart -> Press the 
> submit buttons -> See the secured page BUT with HTTP!
> There was no proper https redirect.
> If I change the rendering strategy to REDIRECT_TO_BUFFER everything works 
> fine, but if I change the strategy to ONE_PASS_RENDER the https forwarding 
> does't work anymore. But only if I deactivate all scripts...
> Regards,
> Dmitriy



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Resolved] (WICKET-5527) Inefficient DefaultPageStore.SerializedPagesCache

2014-03-13 Thread Martin Grigorov (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-5527?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Grigorov resolved WICKET-5527.
-

   Resolution: Fixed
Fix Version/s: 7.0.0

> Inefficient DefaultPageStore.SerializedPagesCache
> -
>
> Key: WICKET-5527
> URL: https://issues.apache.org/jira/browse/WICKET-5527
> Project: Wicket
>  Issue Type: Bug
>  Components: wicket
>Affects Versions: 6.14.0
>Reporter: Martin Grigorov
>Assignee: Martin Grigorov
> Fix For: 7.0.0
>
>
> We have identified some problems in 
> org.apache.wicket.pageStore.DefaultPageStore.SerializedPagesCache.
> Some history first: 
> At https://cwiki.apache.org/confluence/display/WICKET/Page+Storage I have 
> explained how the page storage management works in Wicket 1.5+ 
> In brief:
> First level cache/store is the HttpSession - here Wicket saves the live 
> instances of all touched pages in the last request cycle.
> Second level cache/store is DefaultPageStore.SerializedPagesCache - here 
> Wicket saves the last N 
> (org.apache.wicket.settings.StoreSettings#getInmemoryCacheSize) used pages in 
> the whole application (by default 40 pages)
> Third level cache/store is DiskDataStore - here Wicket stores all pages and 
> depending on org.apache.wicket.settings.StoreSettings#getMaxSizePerSession it 
> will "recycle" the file contents
> The identified problems:
> - org.apache.wicket.pageStore.DefaultPageStore.SerializedPagesCache uses 
> ArrayList as a data structure to keep SerializedPage instances. When the 
> limit N (StoreSettings#getInmemoryCacheSize) is reached the ArrayList uses 
> #remove() to remove the oldest entry. The #remove(0) operation internally 
> uses System.arraycopy() to compact the internal array structure. As you 
> already realize this ArrayList is constantly being recompacted in any 
> application in production.
> -  DefaultPageStore.SerializedPagesCache#cache (the same ArrayList) is used 
> as synchronization monitor for every operation (read/write/remove). I.e. we 
> have synchronization on application level !!
> - at the moment DefaultPageStore.SerializedPagesCache stores 
> org.apache.wicket.pageStore.DefaultPageStore.SerializedPage. This is a 
> structure of {String sessionId, int pageId, byte[] data}. 
> Since this data is stored in the application scope it is never replicated, so 
> there is no need to serialize the live page instance to byte[] at all. Only 
> the third level cache (IDataStore) should work with byte[]
> A workaround to avoid the slowness caused by this is to set 0 or negative 
> value to org.apache.wicket.settings.StoreSettings#setInmemoryCacheSize



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[8/9] git commit: WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

2014-03-13 Thread mgrigorov
WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

Use ConcurrentHashMap for the sessions. There is no need to track their age so 
no need to use ConcurrentSkipListMap.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/961e46ae
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/961e46ae
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/961e46ae

Branch: refs/heads/master
Commit: 961e46ae67ecda7c11fb1c58c2cfa98b06f98693
Parents: 2380d65
Author: Martin Tzvetanov Grigorov 
Authored: Wed Mar 12 11:14:55 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Wed Mar 12 11:14:55 2014 +0200

--
 .../java/org/apache/wicket/pageStore/PerSessionPageStore.java   | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/961e46ae/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
index 632cea9..fdfe92d 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
@@ -20,6 +20,7 @@ import java.lang.ref.SoftReference;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ConcurrentSkipListMap;
 
@@ -144,7 +145,7 @@ public class PerSessionPageStore extends 
AbstractCachingPageStore>> cache;
+   private final ConcurrentMap>> cache;
 
/**
 * Constructor.
@@ -155,7 +156,7 @@ public class PerSessionPageStore extends 
AbstractCachingPageStore();
+   cache = new ConcurrentHashMap<>();
}
 
/**



[3/9] git commit: WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

2014-03-13 Thread mgrigorov
WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

Extract AbstractCachingPageStore - an AbstractPageStore that uses 
SecondLevelPageCache to manage the caching


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/583e03cf
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/583e03cf
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/583e03cf

Branch: refs/heads/master
Commit: 583e03cf8f282c6c02d21c614594eaf1eecc15ae
Parents: 65bd82f
Author: Martin Tzvetanov Grigorov 
Authored: Mon Mar 10 17:45:16 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Mon Mar 10 17:45:16 2014 +0200

--
 .../pageStore/AbstractCachingPageStore.java | 105 +++
 .../wicket/pageStore/AbstractPageStore.java |   4 +-
 .../wicket/pageStore/DefaultPageStore.java  |  61 +++
 .../wicket/pageStore/PerSessionPageStore.java   |  58 ++
 .../wicket/pageStore/SecondLevelPageCache.java  |   2 +
 5 files changed, 135 insertions(+), 95 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/583e03cf/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java
new file mode 100644
index 000..86b8d82
--- /dev/null
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/AbstractCachingPageStore.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.pageStore;
+
+import org.apache.wicket.page.IManageablePage;
+import org.apache.wicket.serialize.ISerializer;
+import org.apache.wicket.util.lang.Args;
+
+/**
+ * An abstract {@link org.apache.wicket.pageStore.IPageStore} that uses
+ * {@link org.apache.wicket.pageStore.SecondLevelPageCache} to cache the 
stored pages in memory
+ *
+ * @param 
+ *  The type of the page to be stored
+ */
+public abstract class AbstractCachingPageStore extends AbstractPageStore
+{
+   /**
+* The cache implementation
+*/
+   protected final SecondLevelPageCache pagesCache;
+
+   /**
+* Constructor.
+*
+* @param pageSerializer
+*  The serializer that will convert pages to/from byte[]
+* @param dataStore
+*  The third level page cache
+* @param pagesCache
+*  The cache to use as a second level store
+*/
+   protected AbstractCachingPageStore(ISerializer pageSerializer, 
IDataStore dataStore,
+  SecondLevelPageCache pagesCache)
+   {
+   super(pageSerializer, dataStore);
+
+   this.pagesCache = Args.notNull(pagesCache, "pagesCache");
+   }
+
+   @Override
+   public IManageablePage getPage(final String sessionId, final int pageId)
+   {
+   P fromCache = pagesCache.getPage(sessionId, pageId);
+   if (fromCache != null)
+   {
+   return convertToPage(fromCache);
+   }
+
+   byte[] data = getPageData(sessionId, pageId);
+   if (data != null)
+   {
+   return deserializePage(data);
+   }
+   return null;
+   }
+
+   @Override
+   public void removePage(final String sessionId, final int pageId)
+   {
+   pagesCache.removePage(sessionId, pageId);
+   removePageData(sessionId, pageId);
+   }
+
+   @SuppressWarnings("unchecked")
+   @Override
+   public void storePage(final String sessionId, final IManageablePage 
page)
+   {
+   byte[] data = serializePage(page);
+   if (data != null)
+   {
+   int pageId = page.getPageId();
+   pagesCache.storePage(sessionId, pageId,  (

Git Push Summary

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/5527-inefficient-DefaultDataStore [deleted] 961e46ae6


[9/9] git commit: Merge branch '5527-inefficient-DefaultDataStore'

2014-03-13 Thread mgrigorov
Merge branch '5527-inefficient-DefaultDataStore'


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0d277e29
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0d277e29
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0d277e29

Branch: refs/heads/master
Commit: 0d277e299109cb1a17a75e98eddd00b444149aa3
Parents: 3a44d2e 961e46a
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 13 11:04:42 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 13 11:04:42 2014 +0200

--
 .../wicket/DefaultPageManagerProvider.java  |   7 +-
 .../apache/wicket/page/AbstractPageManager.java |  27 +-
 .../apache/wicket/page/PageStoreManager.java|   2 +-
 .../pageStore/AbstractCachingPageStore.java | 105 ++
 .../wicket/pageStore/AbstractPageStore.java | 154 +
 .../wicket/pageStore/DefaultPageStore.java  | 308 ++
 .../org/apache/wicket/pageStore/IPageStore.java |   2 +-
 .../wicket/pageStore/PerSessionPageStore.java   | 326 +++
 .../wicket/pageStore/SecondLevelPageCache.java  |  42 +++
 .../wicket/protocol/http/WebApplication.java|   1 -
 .../wicket/pageStore/AbstractPageStoreTest.java | 131 
 .../wicket/pageStore/DefaultPageStoreTest.java  |  31 ++
 .../apache/wicket/pageStore/NoopDataStore.java  |  61 
 .../pageStore/PerSessionPageStoreTest.java  |  53 +++
 .../wicket/versioning/InMemoryPageStore.java|   6 +-
 15 files changed, 1020 insertions(+), 236 deletions(-)
--




[7/9] git commit: WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

2014-03-13 Thread mgrigorov
WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

Move the logic for updating PageValue's access time in its own #touch() method


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2380d65b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2380d65b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2380d65b

Branch: refs/heads/master
Commit: 2380d65b813143073dafdc57eb66270f087966af
Parents: 4ae0fb1
Author: Martin Tzvetanov Grigorov 
Authored: Tue Mar 11 14:52:11 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Tue Mar 11 14:52:11 2014 +0200

--
 .../wicket/pageStore/PerSessionPageStore.java  | 17 +++--
 1 file changed, 11 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/2380d65b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
index eaff550..632cea9 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
@@ -104,7 +104,15 @@ public class PerSessionPageStore extends 
AbstractCachingPageStore> iterator = 
pages.entrySet().iterator();
-   while (iterator.hasNext())
+   for (Map.Entry entry : pages.entrySet())
{
-   Map.Entry entry = iterator.next();
-
if 
(sample.equals(entry.getKey()))
{
// touch the 
entry
-   
entry.getKey().accessTime = System.nanoTime();
+   
entry.getKey().touch();
result = 
entry.getValue();
break;
}



[2/9] git commit: WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

2014-03-13 Thread mgrigorov
WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

Introduce PerSessionPageStore.
Extract the common logic between DefaultPageStore and PerSessionPageStore into 
AbstractPageStore.
Extract interface for SecondLevelPageCache implementations


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/65bd82fe
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/65bd82fe
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/65bd82fe

Branch: refs/heads/master
Commit: 65bd82fe9754d30ed103eba52aa1dc1e07f71bc0
Parents: 8908b8f2
Author: Martin Tzvetanov Grigorov 
Authored: Mon Mar 10 15:20:36 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Mon Mar 10 15:20:36 2014 +0200

--
 .../wicket/DefaultPageManagerProvider.java  |   2 +
 .../apache/wicket/page/AbstractPageManager.java |  23 +-
 .../apache/wicket/page/PageStoreManager.java|   2 +-
 .../wicket/pageStore/AbstractPageStore.java | 154 +
 .../wicket/pageStore/DefaultPageStore.java  | 144 +++-
 .../org/apache/wicket/pageStore/IPageStore.java |   2 +-
 .../wicket/pageStore/PerSessionPageStore.java   | 337 +++
 .../wicket/pageStore/SecondLevelPageCache.java  |  40 +++
 .../wicket/protocol/http/WebApplication.java|   1 -
 .../wicket/versioning/InMemoryPageStore.java|   6 +-
 10 files changed, 580 insertions(+), 131 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/65bd82fe/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java 
b/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
index 4d8adcb..3ce5f8c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
@@ -26,6 +26,7 @@ import org.apache.wicket.pageStore.DefaultPageStore;
 import org.apache.wicket.pageStore.DiskDataStore;
 import org.apache.wicket.pageStore.IDataStore;
 import org.apache.wicket.pageStore.IPageStore;
+import org.apache.wicket.pageStore.PerSessionPageStore;
 import org.apache.wicket.serialize.ISerializer;
 import org.apache.wicket.settings.StoreSettings;
 import org.apache.wicket.util.lang.Bytes;
@@ -71,6 +72,7 @@ public class DefaultPageManagerProvider implements 
IPageManagerProvider
int inmemoryCacheSize = 
getStoreSettings().getInmemoryCacheSize();
ISerializer pageSerializer = 
application.getFrameworkSettings().getSerializer();
return new DefaultPageStore(pageSerializer, dataStore, 
inmemoryCacheSize);
+// return new PerSessionPageStore(pageSerializer, dataStore, 
inmemoryCacheSize);
}
 
protected IDataStore newDataStore()

http://git-wip-us.apache.org/repos/asf/wicket/blob/65bd82fe/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java 
b/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
index da259e4..21eb1f1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
@@ -50,17 +50,9 @@ public abstract class AbstractPageManager implements 
IPageManager
 */
protected abstract RequestAdapter newRequestAdapter(IPageManagerContext 
context);
 
-   /**
-* 
-* @see org.apache.wicket.page.IPageManager#supportsVersioning()
-*/
@Override
public abstract boolean supportsVersioning();
 
-   /**
-* 
-* @see 
org.apache.wicket.page.IPageManager#sessionExpired(java.lang.String)
-*/
@Override
public abstract void sessionExpired(String sessionId);
 
@@ -75,7 +67,6 @@ public abstract class AbstractPageManager implements 
IPageManager
 
/**
 * @see #newRequestAdapter(IPageManagerContext)
-* 
 * @return the request adapter
 */
protected RequestAdapter getRequestAdapter()
@@ -89,41 +80,29 @@ public abstract class AbstractPageManager implements 
IPageManager
return adapter;
}
 
-   /**
-* @see org.apache.wicket.page.IPageManager#commitRequest()
-*/
@Override
public void commitRequest()
{
getRequestAdapter().commitRequest();
}
 
-   /**
-* @see org.apache.wicket.page.IPageManager#getPage(int)
-*/
@Override
public IManageablePage getPage(int id)
  

[1/9] git commit: WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

2014-03-13 Thread mgrigorov
Repository: wicket
Updated Branches:
  refs/heads/master 3a44d2e4a -> 0d277e299


WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

Replace the ArrayList with ConcurrentLinkedDeque.
Remove the synchronization on it


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8908b8f2
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8908b8f2
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8908b8f2

Branch: refs/heads/master
Commit: 8908b8f23d6a3e62eed021cac669d65cf9d0bf66
Parents: d269534
Author: Martin Tzvetanov Grigorov 
Authored: Thu Mar 6 16:26:52 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Thu Mar 6 16:26:52 2014 +0200

--
 .../wicket/pageStore/DefaultPageStore.java  | 93 
 1 file changed, 39 insertions(+), 54 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/8908b8f2/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
index 1e44ef0..96d4ff0 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
@@ -18,9 +18,8 @@ package org.apache.wicket.pageStore;
 
 import java.io.Serializable;
 import java.lang.ref.SoftReference;
-import java.util.ArrayList;
 import java.util.Iterator;
-import java.util.List;
+import java.util.concurrent.ConcurrentLinkedDeque;
 
 import org.apache.wicket.page.IManageablePage;
 import org.apache.wicket.serialize.ISerializer;
@@ -411,7 +410,7 @@ public class DefaultPageStore implements IPageStore
{
private final int size;
 
-   private final List> cache;
+   private final 
ConcurrentLinkedDeque> cache;
 
/**
 * Construct.
@@ -421,7 +420,7 @@ public class DefaultPageStore implements IPageStore
public SerializedPagesCache(final int size)
{
this.size = size;
-   cache = new ArrayList<>(size);
+   cache = new ConcurrentLinkedDeque<>();
}
 
/**
@@ -436,18 +435,15 @@ public class DefaultPageStore implements IPageStore
 
if (size > 0)
{
-   synchronized (cache)
+   for (Iterator> i 
= cache.iterator(); i.hasNext();)
{
-   for 
(Iterator> i = cache.iterator(); i.hasNext();)
+   SoftReference ref = 
i.next();
+   SerializedPage entry = ref.get();
+   if (entry != null && entry.getPageId() 
== id &&
+   
entry.getSessionId().equals(sessionId))
{
-   SoftReference 
ref = i.next();
-   SerializedPage entry = 
ref.get();
-   if (entry != null && 
entry.getPageId() == id &&
-   
entry.getSessionId().equals(sessionId))
-   {
-   i.remove();
-   return entry;
-   }
+   i.remove();
+   return entry;
}
}
}
@@ -466,16 +462,13 @@ public class DefaultPageStore implements IPageStore
 
if (size > 0)
{
-   synchronized (cache)
+   for (Iterator> i 
= cache.iterator(); i.hasNext();)
{
-   for 
(Iterator> i = cache.iterator(); i.hasNext();)
+   SoftReference ref = 
i.next();
+   SerializedPage entry = ref.get();
+   if (entry != null && 
entry.getSessionId().equals(sessionId))
{
-   SoftReference 
ref = i.next();
-   SerializedPage entry = 
re

[5/9] git commit: WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

2014-03-13 Thread mgrigorov
WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

Add tests and fix bugs in the new PerSessionPageStore impl


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/1c31627e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1c31627e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1c31627e

Branch: refs/heads/master
Commit: 1c31627e4bfc167bc6e2e29bd642991d6b5a1dcb
Parents: 25016d1
Author: Martin Tzvetanov Grigorov 
Authored: Tue Mar 11 12:17:55 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Tue Mar 11 12:17:55 2014 +0200

--
 .../wicket/pageStore/DefaultPageStore.java  |  46 ---
 .../wicket/pageStore/PerSessionPageStore.java   |  52 +---
 .../wicket/pageStore/AbstractPageStoreTest.java | 131 +++
 .../wicket/pageStore/DefaultPageStoreTest.java  |  31 +
 .../apache/wicket/pageStore/NoopDataStore.java  |  61 +
 .../pageStore/PerSessionPageStoreTest.java  |  53 
 6 files changed, 336 insertions(+), 38 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/1c31627e/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
index 393fac3..e574f37 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
@@ -303,18 +303,19 @@ public class DefaultPageStore extends 
AbstractCachingPageStore
{
-   private final int size;
+   private final int maxSize;
 
private final 
ConcurrentLinkedDeque> cache;
 
/**
-* Construct.
+* Constructor.
 * 
-* @param size
+* @param maxSize
+*  The maximum number of entries to cache
 */
-   public SerializedPagesCache(final int size)
+   public SerializedPagesCache(final int maxSize)
{
-   this.size = size;
+   this.maxSize = maxSize;
cache = new ConcurrentLinkedDeque<>();
}
 
@@ -327,17 +328,18 @@ public class DefaultPageStore extends 
AbstractCachingPageStore 0)
+   if (maxSize > 0)
{
Args.notNull(sessionId, "sessionId");
Args.notNull(pageId, "pageId");
 
+   SerializedPage sample = new 
SerializedPage(sessionId, pageId, null);
+
for (Iterator> i 
= cache.iterator(); i.hasNext();)
{
SoftReference ref = 
i.next();
SerializedPage entry = ref.get();
-   if (entry != null && entry.getPageId() 
== pageId &&
-   
entry.getSessionId().equals(sessionId))
+   if (sample.equals(entry))
{
i.remove();
return entry;
@@ -356,7 +358,7 @@ public class DefaultPageStore extends 
AbstractCachingPageStore 0)
+   if (maxSize > 0)
{
Args.notNull(sessionId, "sessionId");
 
@@ -385,17 +387,18 @@ public class DefaultPageStore extends 
AbstractCachingPageStore 0)
+   if (maxSize > 0)
{
Args.notNull(sessionId, "sessionId");
Args.notNull(pageId, "pageId");
 
+   SerializedPage sample = new 
SerializedPage(sessionId, pageId, null);
+
for (Iterator> i 
= cache.iterator(); i.hasNext();)
{
SoftReference ref = 
i.next();
SerializedPage entry = ref.get();
-   if (entry != null && entry.getPageId() 
== pageId &&
-   
entry.getSessionId().equals(sessionId))
+   if (sample.equals(entry))
{
i.remove();
result = entry;
@@ -406,7 +409,7 @@ 

[6/9] git commit: Fix the name of the JavaSerializer

2014-03-13 Thread mgrigorov
Fix the name of the JavaSerializer


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4ae0fb16
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4ae0fb16
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4ae0fb16

Branch: refs/heads/master
Commit: 4ae0fb16b61d9979d2b11c7a75fe2d284a9501c3
Parents: 1c31627
Author: Martin Tzvetanov Grigorov 
Authored: Tue Mar 11 12:21:38 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Tue Mar 11 12:21:38 2014 +0200

--
 .../java/org/apache/wicket/pageStore/AbstractPageStoreTest.java| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/4ae0fb16/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPageStoreTest.java
--
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPageStoreTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPageStoreTest.java
index 42cce39..0ab35fd 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPageStoreTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPageStoreTest.java
@@ -28,7 +28,7 @@ public abstract class AbstractPageStoreTest extends Assert
 {
protected final String sessionId = "1234567890";
protected final int pageId = 123;
-   protected final ISerializer serializer = new 
JavaSerializer(DefaultPageStore.class.getName());
+   protected final ISerializer serializer = new 
JavaSerializer(getClass().getName());
protected final IDataStore dataStore = new NoopDataStore();
protected int maxEntries = 1;
protected IPageStore pageStore = null;



[4/9] git commit: WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

2014-03-13 Thread mgrigorov
WICKET-5527 Inefficient DefaultPageStore.SerializedPagesCache

Clean up and javadoc


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/25016d10
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/25016d10
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/25016d10

Branch: refs/heads/master
Commit: 25016d10b9762682d783252b0ded2697def9e870
Parents: 583e03c
Author: Martin Tzvetanov Grigorov 
Authored: Mon Mar 10 17:55:05 2014 +0200
Committer: Martin Tzvetanov Grigorov 
Committed: Mon Mar 10 17:55:05 2014 +0200

--
 .../org/apache/wicket/DefaultPageManagerProvider.java|  7 ---
 .../java/org/apache/wicket/page/AbstractPageManager.java |  4 
 .../org/apache/wicket/pageStore/PerSessionPageStore.java | 11 ++-
 3 files changed, 14 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/25016d10/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java 
b/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
index 3ce5f8c..bb1640e 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
@@ -26,9 +26,9 @@ import org.apache.wicket.pageStore.DefaultPageStore;
 import org.apache.wicket.pageStore.DiskDataStore;
 import org.apache.wicket.pageStore.IDataStore;
 import org.apache.wicket.pageStore.IPageStore;
-import org.apache.wicket.pageStore.PerSessionPageStore;
 import org.apache.wicket.serialize.ISerializer;
 import org.apache.wicket.settings.StoreSettings;
+import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Bytes;
 
 /**
@@ -40,13 +40,14 @@ public class DefaultPageManagerProvider implements 
IPageManagerProvider
protected final Application application;
 
/**
-* Construct.
+* Constructor.
 * 
 * @param application
+*  The application instance
 */
public DefaultPageManagerProvider(Application application)
{
-   this.application = application;
+   this.application = Args.notNull(application, "application");
}
 
@Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/25016d10/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java 
b/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
index 21eb1f1..ca1cfe3 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
@@ -17,8 +17,6 @@
 package org.apache.wicket.page;
 
 import org.apache.wicket.util.lang.Args;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Convenience class for {@link IPageManager} implementations. Subclass should 
extend
@@ -29,8 +27,6 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class AbstractPageManager implements IPageManager
 {
-   private static final Logger log = 
LoggerFactory.getLogger(AbstractPageManager.class);
-
private final IPageManagerContext context;
 
/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/25016d10/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
index f1d5d9a..8d0c631 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/pageStore/PerSessionPageStore.java
@@ -28,12 +28,21 @@ import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.time.Time;
 
 /**
+ * A page store that uses a SecondLevelPageCache with the last N used page 
instances
+ * per session.
  *
+ * Note: the size of the cache depends on the {@code 
cacheSize} constructor
+ * parameter multiplied by the number of the active http sessions.
+ *
+ * It depends on the application use cases but usually a reasonable value of
+ * {@code cacheSize} would be just a few pages (2-3). If the application don't 
expect many
+ * active http sessions and the work flow involves usage of the 
browser/application history
+ * then the {@code cacheSize} value may be increased to a bigger value.
  */
 public class PerSession

[jira] [Commented] (WICKET-5533) [Weblogic 12] MultipartFormInputStream - Error while reading servlet request multi-part data

2014-03-13 Thread Martin Grigorov (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5533?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13932966#comment-13932966
 ] 

Martin Grigorov commented on WICKET-5533:
-

You can try:
- with older versions of Wicket
- with different browsers (I see you use some flavor of WebKit)

Wicket uses apache commons-fileupload to deal with multipart form submits. 
commons-fileupload is pretty much the standard in JVM space for this 
functionality. Since WebLogic is not open source product I'd recommend you to 
ask their support for help.

> [Weblogic 12] MultipartFormInputStream - Error while reading servlet request 
> multi-part data
> 
>
> Key: WICKET-5533
> URL: https://issues.apache.org/jira/browse/WICKET-5533
> Project: Wicket
>  Issue Type: Bug
>  Components: wicket
>Affects Versions: 6.14.0
> Environment: Weblogic 12c
>Reporter: Ilia Naryzhny
>  Labels: multipart/form-data
>
> Guys,
> In case of multipart form usage on weblogic I can see following error:
> org.apache.wicket.util.upload.MultipartFormInputStream skipPreamble
> SEVERE: Error while reading servlet request multi-part data: Stream ended 
> unexpectedly. boundary='--WebKitFormBoundaryFC53Qc4d6X14dkcmcm'; 
> bufSize=4096
> I'm aware about following issue: 
> https://issues.apache.org/jira/browse/WICKET-4469
> But weblogic seems to be more corporate used and, unfortunatly, can't be 
> easily patched and etc. And more over: might be reason of this error not in 
> Weblogic especially, but in latest wicket.
> If can give me some guidence on code where to check remotely what's going on 
> and what container behaviour might be a reson: that will be very appriciated.
> I'm debugging org.apache.wicket.util.upload.MultipartFormInputStream and 
> can't find exact reason why preamble can't successfully skiped.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (WICKET-5517) IE11 returns false for Wicket.Browser.isIE()

2014-03-13 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/WICKET-5517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13932954#comment-13932954
 ] 

ASF GitHub Bot commented on WICKET-5517:


Github user asfgit closed the pull request at:

https://github.com/apache/wicket/pull/70


> IE11 returns false for Wicket.Browser.isIE()
> 
>
> Key: WICKET-5517
> URL: https://issues.apache.org/jira/browse/WICKET-5517
> Project: Wicket
>  Issue Type: Bug
>  Components: wicket
>Affects Versions: 6.14.0
> Environment: Internet Explorer 11, tested on Windows 7 and 8.
>Reporter: Luke Niesink
>Assignee: Emond Papegaaij
>Priority: Minor
> Fix For: 7.0.0, 6.15.0
>
>
> As of Internet Explorer 11 this statement returns false instead of true (like 
> it did prior to version 11):
> typeof(document.all) !== "undefined"
> This statement is used on line 56 of wicket-event-jquery.js which means 
> Wicket.Browser.isIE() will return false in IE11.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Resolved] (WICKET-5517) IE11 returns false for Wicket.Browser.isIE()

2014-03-13 Thread Emond Papegaaij (JIRA)

 [ 
https://issues.apache.org/jira/browse/WICKET-5517?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Emond Papegaaij resolved WICKET-5517.
-

   Resolution: Fixed
Fix Version/s: 6.15.0
   7.0.0

I've merged your pull request and picked the commits in wicket 7. All Wicket 
scripts now use 'compliant' behavior for IE11+ but isIE() still returns true 
for IE11.

> IE11 returns false for Wicket.Browser.isIE()
> 
>
> Key: WICKET-5517
> URL: https://issues.apache.org/jira/browse/WICKET-5517
> Project: Wicket
>  Issue Type: Bug
>  Components: wicket
>Affects Versions: 6.14.0
> Environment: Internet Explorer 11, tested on Windows 7 and 8.
>Reporter: Luke Niesink
>Assignee: Emond Papegaaij
>Priority: Minor
> Fix For: 7.0.0, 6.15.0
>
>
> As of Internet Explorer 11 this statement returns false instead of true (like 
> it did prior to version 11):
> typeof(document.all) !== "undefined"
> This statement is used on line 56 of wicket-event-jquery.js which means 
> Wicket.Browser.isIE() will return false in IE11.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[2/2] git commit: WICKET-5517 Use Wicket.Browser.isIELessThan11() as the behaviour of Wicket.Browser.isIE() has changed

2014-03-13 Thread papegaaij
WICKET-5517 Use Wicket.Browser.isIELessThan11() as the behaviour of 
Wicket.Browser.isIE() has changed

Conflicts:
wicket-core/src/test/js/event.js


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/3a44d2e4
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/3a44d2e4
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/3a44d2e4

Branch: refs/heads/master
Commit: 3a44d2e4a7a6d1573753a579920fa44fb74a5d5b
Parents: 4a37da9
Author: Luke Niesink 
Authored: Tue Feb 25 16:16:35 2014 +0100
Committer: Emond Papegaaij 
Committed: Thu Mar 13 08:20:05 2014 +0100

--
 .../ajax/res/js/wicket-ajax-jquery-debug.js |  2 +-
 .../wicket/ajax/res/js/wicket-ajax-jquery.js|  4 ++--
 wicket-core/src/test/js/event.js|  4 ++--
 .../html/autocomplete/wicket-autocomplete.js|  2 +-
 .../ajax/markup/html/modal/res/modal.js | 22 ++--
 5 files changed, 17 insertions(+), 17 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/3a44d2e4/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
index d9089d1..573b6ac 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
@@ -179,7 +179,7 @@
 
 
// Special style for Internet 6 and 7 
in quirks mode
-   if (Wicket.Browser.isIE() && 
(Wicket.Browser.isIEQuirks() || !Wicket.Browser.isIE7())) {
+   if (Wicket.Browser.isIELessThan11() && 
(Wicket.Browser.isIEQuirks() || !Wicket.Browser.isIE7())) {
html +=
"http://git-wip-us.apache.org/repos/asf/wicket/blob/3a44d2e4/wicket-core/src/test/js/event.js
--
diff --git a/wicket-core/src/test/js/event.js b/wicket-core/src/test/js/event.js
index 9ccba5e..08efb58 100644
--- a/wicket-core/src/test/js/event.js
+++ b/wicket-core/src/test/js/event.js
@@ -327,7 +327,7 @@ jQuery(document).ready(function() {
 
stop();
 
-   if (Wicket.Browser.isIE()) {
+   if (Wicket.Browser.isIELessThan11()) {
expect(3);
} else {
expect(1);
@@ -338,7 +338,7 @@ jQuery(document).ready(function() {
ok(true, "inputchange event is triggered!");
});
 
-   if (Wicket.Browser.isIE()) {
+   if (Wicket.Browser.isIELessThan11()) {
$input.trigger("paste");
$input.trigger("keyup");
$input.trigger("cut");

http://git-wip-us.apache.org/repos/asf/wicket/blob/3a44d2e4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
--
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
index 95229a3..7444edc 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
@@ -683,7 +683,7 @@
hideIndicator();
 
// hack for a focus issue in IE, WICKET-2279
-   if (Wicket.Browser.isIE()) {
+   if (Wicket.Browser.isIELessThan11()) {
var range = document.selection.createRange();
if (range !== null) {
range.select();

http://git-wip-us.apache.org/repos/asf/wicket/blob/3a44d2e4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
--
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
index 159b4b5..befc625 100644
--- 
a/wicket-extensions/src/main/java/o

[1/2] git commit: WICKET-5517 Added support for detection of IE11 in Wicket.Browser.isIE()

2014-03-13 Thread papegaaij
Repository: wicket
Updated Branches:
  refs/heads/master d970656fc -> 3a44d2e4a


WICKET-5517 Added support for detection of IE11 in Wicket.Browser.isIE()


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4a37da92
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4a37da92
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4a37da92

Branch: refs/heads/master
Commit: 4a37da9214d091c554bbfda358b1aeddc536a161
Parents: d970656
Author: Luke Niesink 
Authored: Tue Feb 25 16:15:06 2014 +0100
Committer: Emond Papegaaij 
Committed: Thu Mar 13 08:19:10 2014 +0100

--
 .../java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js  | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/4a37da92/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
index b914fdb..898bbdb 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
@@ -53,7 +53,7 @@
},
 
isIE: function () {
-   return !Wicket.Browser.isSafari() && 
typeof(document.all) !== "undefined" && typeof(window.opera) === "undefined";
+   return !Wicket.Browser.isSafari() && 
(typeof(document.all) !== "undefined" || 
window.navigator.userAgent.indexOf("Trident/")>-1) && typeof(window.opera) === 
"undefined";
},
 
isIEQuirks: function () {
@@ -78,6 +78,10 @@
var version = 
parseFloat(window.navigator.userAgent.substring(index + 5));
return Wicket.Browser.isIE() && version < 9;
},
+   
+   isIELessThan11: function () {
+   return !Wicket.Browser.isSafari() && 
typeof(document.all) !== "undefined" && typeof(window.opera) === "undefined";
+   },
 
isIE11: function () {
var userAgent = window.navigator.userAgent;



[1/3] git commit: WICKET-5517 Added support for detection of IE11 in Wicket.Browser.isIE()

2014-03-13 Thread papegaaij
Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 622f1b069 -> 3ce9f61b2


WICKET-5517 Added support for detection of IE11 in Wicket.Browser.isIE()


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a8fcba33
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a8fcba33
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a8fcba33

Branch: refs/heads/wicket-6.x
Commit: a8fcba33b2ae33ccadfd6885ac05812143cbd5c9
Parents: dfd1218
Author: Luke Niesink 
Authored: Tue Feb 25 16:15:06 2014 +0100
Committer: Luke Niesink 
Committed: Tue Feb 25 16:15:06 2014 +0100

--
 .../java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js  | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/a8fcba33/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
index 76c8091..15639a8 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
@@ -53,7 +53,7 @@
},
 
isIE: function () {
-   return !Wicket.Browser.isSafari() && 
typeof(document.all) !== "undefined" && typeof(window.opera) === "undefined";
+   return !Wicket.Browser.isSafari() && 
(typeof(document.all) !== "undefined" || 
window.navigator.userAgent.indexOf("Trident/")>-1) && typeof(window.opera) === 
"undefined";
},
 
isIEQuirks: function () {
@@ -78,6 +78,10 @@
var version = 
parseFloat(window.navigator.userAgent.substring(index + 5));
return Wicket.Browser.isIE() && version < 9;
},
+   
+   isIELessThan11: function () {
+   return !Wicket.Browser.isSafari() && 
typeof(document.all) !== "undefined" && typeof(window.opera) === "undefined";
+   },
 
isIE11: function () {
var userAgent = window.navigator.userAgent;



[2/3] git commit: WICKET-5517 Use Wicket.Browser.isIELessThan11() as the behaviour of Wicket.Browser.isIE() has changed

2014-03-13 Thread papegaaij
WICKET-5517 Use Wicket.Browser.isIELessThan11() as the behaviour of 
Wicket.Browser.isIE() has changed


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a6565b62
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a6565b62
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a6565b62

Branch: refs/heads/wicket-6.x
Commit: a6565b625581ea583006ac98e5d4dba9c7b730fc
Parents: a8fcba3
Author: Luke Niesink 
Authored: Tue Feb 25 16:16:35 2014 +0100
Committer: Luke Niesink 
Committed: Tue Feb 25 16:16:35 2014 +0100

--
 .../ajax/res/js/wicket-ajax-jquery-debug.js |  2 +-
 .../wicket/ajax/res/js/wicket-ajax-jquery.js|  4 ++--
 wicket-core/src/test/js/event.js|  4 ++--
 .../html/autocomplete/wicket-autocomplete.js|  2 +-
 .../ajax/markup/html/modal/res/modal.js | 22 ++--
 5 files changed, 17 insertions(+), 17 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/a6565b62/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
index d9089d1..573b6ac 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
@@ -179,7 +179,7 @@
 
 
// Special style for Internet 6 and 7 
in quirks mode
-   if (Wicket.Browser.isIE() && 
(Wicket.Browser.isIEQuirks() || !Wicket.Browser.isIE7())) {
+   if (Wicket.Browser.isIELessThan11() && 
(Wicket.Browser.isIEQuirks() || !Wicket.Browser.isIE7())) {
html +=
"http://git-wip-us.apache.org/repos/asf/wicket/blob/a6565b62/wicket-core/src/test/js/event.js
--
diff --git a/wicket-core/src/test/js/event.js b/wicket-core/src/test/js/event.js
index b2e908c..8ea4f97 100644
--- a/wicket-core/src/test/js/event.js
+++ b/wicket-core/src/test/js/event.js
@@ -325,7 +325,7 @@ jQuery(document).ready(function() {
 
test('inputchange', function() {
stop();
-   if (Wicket.Browser.isIE()) {
+   if (Wicket.Browser.isIELessThan11()) {
expect(3);
} else {
expect(1);
@@ -336,7 +336,7 @@ jQuery(document).ready(function() {
ok(true, "inputchange event is triggered!");
});
 
-   if (Wicket.Browser.isIE()) {
+   if (Wicket.Browser.isIELessThan11()) {
$input.trigger("paste");
$input.trigger("keyup");
$input.trigger("cut");

http://git-wip-us.apache.org/repos/asf/wicket/blob/a6565b62/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
--
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
index 31176fa..4c7b552 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
@@ -696,7 +696,7 @@
hideIndicator();
 
// hack for a focus issue in IE, WICKET-2279
-   if (Wicket.Browser.isIE()) {
+   if (Wicket.Browser.isIELessThan11()) {
var range = document.selection.createRange();
if (range !== null) {
range.select();

http://git-wip-us.apache.org/repos/asf/wicket/blob/a6565b62/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
--
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
index 65eebf8..34dce41 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wic

[3/3] git commit: Merge branch 'wicket-6.x' of https://github.com/niesink/wicket into wicket-6.x

2014-03-13 Thread papegaaij
Merge branch 'wicket-6.x' of https://github.com/niesink/wicket into wicket-6.x


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/3ce9f61b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/3ce9f61b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/3ce9f61b

Branch: refs/heads/wicket-6.x
Commit: 3ce9f61b24974e0e841cd05ab050ba3586fc36af
Parents: 622f1b0 a6565b6
Author: Emond Papegaaij 
Authored: Thu Mar 13 08:18:12 2014 +0100
Committer: Emond Papegaaij 
Committed: Thu Mar 13 08:18:12 2014 +0100

--
 .../ajax/res/js/wicket-ajax-jquery-debug.js |  2 +-
 .../wicket/ajax/res/js/wicket-ajax-jquery.js|  4 ++--
 .../wicket/ajax/res/js/wicket-event-jquery.js   |  6 +-
 wicket-core/src/test/js/event.js|  4 ++--
 .../html/autocomplete/wicket-autocomplete.js|  2 +-
 .../ajax/markup/html/modal/res/modal.js | 22 ++--
 6 files changed, 22 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/3ce9f61b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
--
diff --cc 
wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index 23663a6,162c850..9d6fe0f
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@@ -2107,11 -2055,16 +2107,11 @@@
// serialize the style to string
var content = 
Wicket.DOM.serializeNodeChildren(node);
  
 -  // create style element
 -  var style = 
Wicket.Head.createElement("style");
 -
 -  // copy id attribute
 -  style.id = 
node.getAttribute("id");
 -
// create stylesheet
-   if (Wicket.Browser.isIE()) {
+   if 
(Wicket.Browser.isIELessThan11()) {
try  {

document.createStyleSheet().cssText = content;
 +  return 
FunctionsExecuter.DONE;
}
catch (ignore) {
var run = 
function() {

http://git-wip-us.apache.org/repos/asf/wicket/blob/3ce9f61b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
--