You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2016/04/01 14:18:29 UTC

wicket git commit: Add Lambdas#onTag()

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 <mg...@apache.org>
Authored: Fri Apr 1 14:17:08 2016 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
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)));
+	}
+}