Re: wicket git commit: render independently from web or tester

2017-12-07 Thread Sven Meier

Wow, you're fast :P

Sven


Am 07.12.2017 um 09:29 schrieb Maxim Solodovnik:

Hello Sven,

Is this correct import?
import com.google.common.base.Supplier;

On Thu, Dec 7, 2017 at 3:24 PM,   wrote:

Repository: wicket
Updated Branches:
   refs/heads/sandbox/component-renderer [created] 6e6c273fd


render independently from web or tester


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

Branch: refs/heads/sandbox/component-renderer
Commit: 6e6c273fd32325a447cc32c751d5ce0c083e7ed1
Parents: 693dad3
Author: Sven Meier 
Authored: Thu Dec 7 09:24:12 2017 +0100
Committer: Sven Meier 
Committed: Thu Dec 7 09:24:12 2017 +0100

--
  .../core/util/string/ComponentRenderer.java | 324 ++-
  .../ComponentRendererInstanceTest.java  |  52 +++
  2 files changed, 369 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/wicket/blob/6e6c273f/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
--
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
index 0cf63bf..e971bc2 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
@@ -16,35 +16,341 @@
   */
  package org.apache.wicket.core.util.string;

+import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
+
  import org.apache.wicket.Application;
  import org.apache.wicket.Component;
  import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
+import org.apache.wicket.RuntimeConfigurationType;
+import org.apache.wicket.Session;
  import org.apache.wicket.ThreadContext;
  import org.apache.wicket.core.request.handler.PageProvider;
  import org.apache.wicket.markup.IMarkupCacheKeyProvider;
  import org.apache.wicket.markup.IMarkupResourceStreamProvider;
  import org.apache.wicket.markup.MarkupNotFoundException;
  import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.mock.MockWebRequest;
  import org.apache.wicket.protocol.http.BufferedWebResponse;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.mock.MockServletContext;
+import org.apache.wicket.request.Request;
  import org.apache.wicket.request.Response;
+import org.apache.wicket.request.Url;
  import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.http.WebRequest;
+import org.apache.wicket.serialize.ISerializer;
+import org.apache.wicket.session.ISessionStore;
  import org.apache.wicket.util.resource.IResourceStream;
  import org.apache.wicket.util.resource.StringResourceStream;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;

+import com.google.common.base.Supplier;
+
  /**
   * A helper class for rendering components and pages.
- *
- * Note: {@link #renderComponent(Component)} does 
not
- * support rendering {@link org.apache.wicket.markup.html.panel.Fragment} 
instances!
+ * 
+ * With the static methods of this class components and pages can be rendered
+ * on a thread already processing an {@link Application}.
+ * 
+ * If you want to render independently from any web request processing (e.g. 
generating an email
+ * body on a worker thread), you can create an instance of this class.
+ * You may use an existing application, create a fresh one or just use the 
defaults of
+ * {@link #ComponentRenderer()} for a mocked application with sensible 
defaults.
+ * 
+ * Note: For performance instances can and should be reused, be sure to call 
{@link #destroy()}
+ * when they are no longer needed.
   */
  public class ComponentRenderer
  {
 private static final Logger LOGGER = 
LoggerFactory.getLogger(ComponentRenderer.class);

+   private WebApplication application;
+
+   /**
+* A renderer using a default mocked application, which
+* 
+* never shares anything in a session
+* never serializes anything
+* 
+*/
+   public ComponentRenderer()
+   {
+   this(new MockApplication()
+   {
+   @Override
+   public RuntimeConfigurationType getConfigurationType()
+   {
+   return RuntimeConfigurationType.DEPLOYMENT;
+   }
+
+   

Re: wicket git commit: render independently from web or tester

2017-12-07 Thread Maxim Solodovnik
Hello Sven,

Is this correct import?
import com.google.common.base.Supplier;

On Thu, Dec 7, 2017 at 3:24 PM,   wrote:
> Repository: wicket
> Updated Branches:
>   refs/heads/sandbox/component-renderer [created] 6e6c273fd
>
>
> render independently from web or tester
>
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6e6c273f
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6e6c273f
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6e6c273f
>
> Branch: refs/heads/sandbox/component-renderer
> Commit: 6e6c273fd32325a447cc32c751d5ce0c083e7ed1
> Parents: 693dad3
> Author: Sven Meier 
> Authored: Thu Dec 7 09:24:12 2017 +0100
> Committer: Sven Meier 
> Committed: Thu Dec 7 09:24:12 2017 +0100
>
> --
>  .../core/util/string/ComponentRenderer.java | 324 ++-
>  .../ComponentRendererInstanceTest.java  |  52 +++
>  2 files changed, 369 insertions(+), 7 deletions(-)
> --
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/6e6c273f/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
> --
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
>  
> b/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
> index 0cf63bf..e971bc2 100644
> --- 
> a/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
> +++ 
> b/wicket-core/src/main/java/org/apache/wicket/core/util/string/ComponentRenderer.java
> @@ -16,35 +16,341 @@
>   */
>  package org.apache.wicket.core.util.string;
>
> +import java.io.Serializable;
> +import java.util.List;
> +import java.util.Set;
> +
>  import org.apache.wicket.Application;
>  import org.apache.wicket.Component;
>  import org.apache.wicket.MarkupContainer;
> +import org.apache.wicket.Page;
> +import org.apache.wicket.RuntimeConfigurationType;
> +import org.apache.wicket.Session;
>  import org.apache.wicket.ThreadContext;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.markup.IMarkupCacheKeyProvider;
>  import org.apache.wicket.markup.IMarkupResourceStreamProvider;
>  import org.apache.wicket.markup.MarkupNotFoundException;
>  import org.apache.wicket.markup.html.WebPage;
> +import org.apache.wicket.mock.MockApplication;
> +import org.apache.wicket.mock.MockWebRequest;
>  import org.apache.wicket.protocol.http.BufferedWebResponse;
> +import org.apache.wicket.protocol.http.WebApplication;
> +import org.apache.wicket.protocol.http.mock.MockServletContext;
> +import org.apache.wicket.request.Request;
>  import org.apache.wicket.request.Response;
> +import org.apache.wicket.request.Url;
>  import org.apache.wicket.request.cycle.RequestCycle;
> +import org.apache.wicket.request.http.WebRequest;
> +import org.apache.wicket.serialize.ISerializer;
> +import org.apache.wicket.session.ISessionStore;
>  import org.apache.wicket.util.resource.IResourceStream;
>  import org.apache.wicket.util.resource.StringResourceStream;
>  import org.slf4j.Logger;
>  import org.slf4j.LoggerFactory;
>
> +import com.google.common.base.Supplier;
> +
>  /**
>   * A helper class for rendering components and pages.
> - *
> - * Note: {@link #renderComponent(Component)} does 
> not
> - * support rendering {@link org.apache.wicket.markup.html.panel.Fragment} 
> instances!
> + * 
> + * With the static methods of this class components and pages can be rendered
> + * on a thread already processing an {@link Application}.
> + * 
> + * If you want to render independently from any web request processing (e.g. 
> generating an email
> + * body on a worker thread), you can create an instance of this class.
> + * You may use an existing application, create a fresh one or just use the 
> defaults of
> + * {@link #ComponentRenderer()} for a mocked application with sensible 
> defaults.
> + * 
> + * Note: For performance instances can and should be reused, be sure to call 
> {@link #destroy()}
> + * when they are no longer needed.
>   */
>  public class ComponentRenderer
>  {
> private static final Logger LOGGER = 
> LoggerFactory.getLogger(ComponentRenderer.class);
>
> +   private WebApplication application;
> +
> +   /**
> +* A renderer using a default mocked application, which
> +* 
> +* never shares anything in a session
> +* never serializes anything
> +* 
> +*/
> +   public ComponentRenderer()
> +   {
> +   this(new MockApplication()
> +   {
> +   @Override
> +   public RuntimeConfigurationType getConfigurationType()
> +