Repository: wicket Updated Branches: refs/heads/master 241732267 -> 76726dc7f
Add Lambdas#onTag() Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/76726dc7 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/76726dc7 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/76726dc7 Branch: refs/heads/master Commit: 76726dc7fbb5db33ae6f24df559aad82c4cb7950 Parents: 2417322 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Fri Apr 1 14:17:08 2016 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Fri Apr 1 14:17:08 2016 +0200 ---------------------------------------------------------------------- .../java/org/apache/wicket/lambda/Lambdas.java | 31 ++++++++++++++++++ .../org/apache/wicket/lambda/LambdasTest.java | 33 ++++++++++++++++++++ 2 files changed, 64 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/76726dc7/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java b/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java index c5656d8..0b8f27a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java +++ b/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java @@ -18,6 +18,7 @@ package org.apache.wicket.lambda; import java.util.UUID; +import org.apache.wicket.Component; import org.apache.wicket.ajax.AbstractAjaxTimerBehavior; import org.apache.wicket.ajax.AjaxClientInfoBehavior; import org.apache.wicket.ajax.AjaxEventBehavior; @@ -32,6 +33,8 @@ import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox; import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; +import org.apache.wicket.behavior.Behavior; +import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.protocol.http.request.WebClientInfo; @@ -623,4 +626,32 @@ public class Lambdas } }; } + + /** + * Creates a {@link Behavior} that uses the given {@link WicketConsumer consumer} + * to do something with the component's tag. + * + * <p> + * Usage:<br/> + * <code>component.add(onTag(tag -> tag.put(key, value)));</code> + * </p> + * + * @param onTagConsumer + * the {@link WicketConsumer} that accepts the {@link ComponentTag} + * @return The created behavior + */ + public static Behavior onTag(WicketConsumer<ComponentTag> onTagConsumer) + { + Args.notNull(onTagConsumer, "onTagConsumer"); + + return new Behavior() + { + @Override + public void onComponentTag(Component component, ComponentTag tag) + { + super.onComponentTag(component, tag); + onTagConsumer.accept(tag); + } + }; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/76726dc7/wicket-core/src/test/java/org/apache/wicket/lambda/LambdasTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/lambda/LambdasTest.java b/wicket-core/src/test/java/org/apache/wicket/lambda/LambdasTest.java new file mode 100644 index 0000000..37ee41f --- /dev/null +++ b/wicket-core/src/test/java/org/apache/wicket/lambda/LambdasTest.java @@ -0,0 +1,33 @@ +package org.apache.wicket.lambda; + +import static org.apache.wicket.lambda.Lambdas.onTag; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; + +import org.apache.wicket.MockPageWithOneComponent; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTestCase; +import org.junit.Test; + +/** + * Tests for {@link Lambdas} + */ +public class LambdasTest extends WicketTestCase +{ + @Test + public void onTagTest() + { + WebMarkupContainer component = new WebMarkupContainer(MockPageWithOneComponent.COMPONENT_ID); + MockPageWithOneComponent page = new MockPageWithOneComponent(); + page.add(component); + String value = "value"; + String key = "key"; + component.add(onTag(tag -> tag.put(key, value))); + + tester.startPage(page); + + TagTester tagTester = tester.getTagByWicketId(MockPageWithOneComponent.COMPONENT_ID); + assertThat(tagTester.getAttribute(key), is(equalTo(value))); + } +}
