You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wicket.apache.org by Martin Grigorov <mg...@apache.org> on 2017/03/27 15:38:45 UTC

Re: wicket git commit: WICKET-6347 added #detach() to all renderers

Hi Sven,

One minor issue: the renderer is optional (i.e. null-able) in some classes,
so you will have to check before calling its #detach() method. For example
in AjaxEditableChoiceLabel

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Mon, Mar 27, 2017 at 5:28 PM, <sv...@apache.org> wrote:

> Repository: wicket
> Updated Branches:
>   refs/heads/WICKET-6347-detachable-renderers [created] 0bc929d71
>
>
> WICKET-6347 added #detach() to all renderers
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0bc929d7
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0bc929d7
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0bc929d7
>
> Branch: refs/heads/WICKET-6347-detachable-renderers
> Commit: 0bc929d71865f052e895fd0918ea297acc7086fa
> Parents: 3179d34
> Author: Sven Meier <sv...@apache.org>
> Authored: Mon Mar 27 17:27:20 2017 +0200
> Committer: Sven Meier <sv...@apache.org>
> Committed: Mon Mar 27 17:27:20 2017 +0200
>
> ----------------------------------------------------------------------
>  .../wicket/markup/html/form/AbstractChoice.java      |  8 ++++++++
>  .../wicket/markup/html/form/IChoiceRenderer.java     | 15 ++++++++++++---
>  .../ajax/markup/html/AjaxEditableChoiceLabel.java    |  3 +++
>  .../html/autocomplete/AutoCompleteBehavior.java      |  7 +++++++
>  .../html/autocomplete/AutoCompleteTextField.java     |  8 ++++++++
>  .../html/autocomplete/IAutoCompleteRenderer.java     | 11 +++++++++--
>  .../extensions/markup/html/form/palette/Palette.java |  2 ++
>  .../markup/html/form/select/IOptionRenderer.java     | 12 ++++++++++--
>  .../markup/html/form/select/SelectOptions.java       |  8 ++++++++
>  9 files changed, 67 insertions(+), 7 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/AbstractChoice.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/AbstractChoice.java
> index 523116e..fd1cacf 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/AbstractChoice.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/AbstractChoice.java
> @@ -501,4 +501,12 @@ public abstract class AbstractChoice<T, E> extends
> FormComponent<T>
>                         "This class does not support type-conversion
> because it is performed "
>                                 + "exclusively by the IChoiceRenderer
> assigned to this component");
>         }
> +
> +       @Override
> +       protected void onDetach()
> +       {
> +               renderer.detach();
> +
> +               super.onDetach();
> +       };
>  }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/IChoiceRenderer.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/IChoiceRenderer.java
> index c8345d4..5fcc14e 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/IChoiceRenderer.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/IChoiceRenderer.java
> @@ -18,8 +18,8 @@ package org.apache.wicket.markup.html.form;
>
>  import java.util.List;
>
> +import org.apache.wicket.model.IDetachable;
>  import org.apache.wicket.model.IModel;
> -import org.apache.wicket.util.io.IClusterable;
>
>  /**
>   * Renders one choice. Separates the 'id' values used for internal
> representation from 'display
> @@ -30,7 +30,7 @@ import org.apache.wicket.util.io.IClusterable;
>   * @param <T>
>   *            The model object type
>   */
> -public interface IChoiceRenderer<T> extends IClusterable
> +public interface IChoiceRenderer<T> extends IDetachable
>  {
>         /**
>          * Get the value for displaying to an end user.
> @@ -70,4 +70,13 @@ public interface IChoiceRenderer<T> extends IClusterable
>          * @return A choice from the list that has this {@code id}
>          */
>         T getObject(String id, IModel<? extends List<? extends T>>
> choices);
> -}
> +
> +       /**
> +        * Override when needed.
> +        */
> +       @Override
> +       default void detach()
> +       {
> +       }
> +
> +}
> \ No newline at end of file
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> index 2afe6cf..221a42f 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> @@ -324,6 +324,9 @@ public class AjaxEditableChoiceLabel<T> extends
> AjaxEditableLabel<T>
>                 {
>                         choices.detach();
>                 }
> +
> +               renderer.detach();
> +
>                 super.onDetach();
>         }
>  }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> index 02472ac..5f5453a 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> @@ -19,6 +19,7 @@ package org.apache.wicket.extensions.
> ajax.markup.html.autocomplete;
>  import java.util.Iterator;
>
>  import org.apache.wicket.Application;
> +import org.apache.wicket.Component;
>  import org.apache.wicket.request.IRequestCycle;
>  import org.apache.wicket.request.IRequestHandler;
>  import org.apache.wicket.request.cycle.RequestCycle;
> @@ -129,4 +130,10 @@ public abstract class AutoCompleteBehavior<T> extends
> AbstractAutoCompleteBehavi
>          * @return iterator over all possible choice objects
>          */
>         protected abstract Iterator<T> getChoices(String input);
> +
> +       @Override
> +       public void detach(Component component)
> +       {
> +               renderer.detach();
> +       }
>  }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> index 79b86ea..70536e4 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> @@ -307,4 +307,12 @@ public abstract class AutoCompleteTextField<T>
> extends TextField<T>
>         {
>                 return renderer;
>         }
> +
> +       @Override
> +       protected void onDetach()
> +       {
> +               renderer.detach();
> +
> +               super.onDetach();
> +       }
>  }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> index c2d0a5f..55a0d6b 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> @@ -16,8 +16,8 @@
>   */
>  package org.apache.wicket.extensions.ajax.markup.html.autocomplete;
>
> +import org.apache.wicket.model.IDetachable;
>  import org.apache.wicket.request.Response;
> -import org.apache.wicket.util.io.IClusterable;
>
>  /**
>   * A renderer used to generate html output for the {@link
> AutoCompleteBehavior}.
> @@ -60,7 +60,7 @@ import org.apache.wicket.util.io.IClusterable;
>   * @author Janne Hietam&auml;ki (jannehietamaki)
>   *
>   */
> -public interface IAutoCompleteRenderer<T> extends IClusterable
> +public interface IAutoCompleteRenderer<T> extends IDetachable
>  {
>         /**
>          * Render the html fragment for the given completion object.
> Usually the html is written out by
> @@ -94,4 +94,11 @@ public interface IAutoCompleteRenderer<T> extends
> IClusterable
>          */
>         void renderFooter(Response response, int count);
>
> +       /**
> +        * Override when needed.
> +        */
> +       @Override
> +       default void detach()
> +       {
> +       }
>  }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/markup/html/form/palette/Palette.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/palette/Palette.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/palette/Palette.java
> index 5f8c5f5..93432f9 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/palette/Palette.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/palette/Palette.java
> @@ -671,6 +671,8 @@ public class Palette<T> extends
> FormComponentPanel<Collection<T>>
>                 // an alternative might be to attach it to one of the
> subcomponents
>                 choicesModel.detach();
>
> +               choiceRenderer.detach();
> +
>                 super.onDetach();
>         }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/markup/html/form/select/IOptionRenderer.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/IOptionRenderer.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/IOptionRenderer.java
> index e641c57..1854a19 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/IOptionRenderer.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/IOptionRenderer.java
> @@ -16,8 +16,8 @@
>   */
>  package org.apache.wicket.extensions.markup.html.form.select;
>
> +import org.apache.wicket.model.IDetachable;
>  import org.apache.wicket.model.IModel;
> -import org.apache.wicket.util.io.IClusterable;
>
>  /**
>   * @param <T>
> @@ -25,7 +25,7 @@ import org.apache.wicket.util.io.IClusterable;
>   * @author Igor Vaynberg (ivaynberg)
>   *
>   */
> -public interface IOptionRenderer<T> extends IClusterable
> +public interface IOptionRenderer<T> extends IDetachable
>  {
>         /**
>          * Get the value for displaying to the user.
> @@ -45,4 +45,12 @@ public interface IOptionRenderer<T> extends IClusterable
>          * @return model that will contain the value object
>          */
>         IModel<T> getModel(T value);
> +
> +       /**
> +        * Override when needed.
> +        */
> +       @Override
> +       default void detach()
> +       {
> +       }
>  }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/markup/html/form/select/SelectOptions.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/SelectOptions.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/SelectOptions.java
> index e0d338e..fdf22c1 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/SelectOptions.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/SelectOptions.java
> @@ -185,4 +185,12 @@ public class SelectOptions<T> extends RepeatingView
>                         tag.setType(TagType.OPEN);
>                 }
>         }
> +
> +       @Override
> +       protected void onDetach()
> +       {
> +               renderer.detach();
> +
> +               super.onDetach();
> +       }
>  }
>
>