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)));
+       }
+}

Reply via email to