# HG changeset patch # User Jaroslav Tulach # Date 1358842787 -3600 # Node ID 08cd5a0c967e56a1de444094a5614aaf81f04202 # Parent 3119b93f1969f440eaaf31ff189fba78eb859cbe Archetype using the @Property model diff -r 3119b93f1969 -r 08cd5a0c967e javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Mon Jan 21 17:04:45 2013 +0100 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Tue Jan 22 09:19:47 2013 +0100 @@ -95,7 +95,7 @@ w.append("package " + pkg + ";\n"); w.append("import org.apidesign.bck2brwsr.htmlpage.api.*;\n"); w.append("final class ").append(className).append(" {\n"); - w.append(" private static boolean locked;\n"); + w.append(" private boolean locked;\n"); if (!initializeOnClick(className, (TypeElement) e, w, pp)) { return false; } diff -r 3119b93f1969 -r 08cd5a0c967e mojo/src/main/resources/META-INF/maven/archetype-metadata.xml --- a/mojo/src/main/resources/META-INF/maven/archetype-metadata.xml Mon Jan 21 17:04:45 2013 +0100 +++ b/mojo/src/main/resources/META-INF/maven/archetype-metadata.xml Tue Jan 22 09:19:47 2013 +0100 @@ -23,7 +23,7 @@ src/main/java - **/*.java + **/App.java @@ -32,6 +32,12 @@ **/*.xhtml + + src/test/java + + **/AppTest.java + + diff -r 3119b93f1969 -r 08cd5a0c967e mojo/src/main/resources/archetype-resources/pom.xml --- a/mojo/src/main/resources/archetype-resources/pom.xml Mon Jan 21 17:04:45 2013 +0100 +++ b/mojo/src/main/resources/archetype-resources/pom.xml Tue Jan 22 09:19:47 2013 +0100 @@ -53,5 +53,11 @@ javaquery.api 0.3-SNAPSHOT + + org.testng + testng + 6.5.2 + test + diff -r 3119b93f1969 -r 08cd5a0c967e mojo/src/main/resources/archetype-resources/src/main/java/App.java --- a/mojo/src/main/resources/archetype-resources/src/main/java/App.java Mon Jan 21 17:04:45 2013 +0100 +++ b/mojo/src/main/resources/archetype-resources/src/main/java/App.java Tue Jan 22 09:19:47 2013 +0100 @@ -3,15 +3,29 @@ import org.apidesign.bck2brwsr.htmlpage.api.*; import static org.apidesign.bck2brwsr.htmlpage.api.OnEvent.*; import org.apidesign.bck2brwsr.htmlpage.api.Page; +import org.apidesign.bck2brwsr.htmlpage.api.Property; +import org.apidesign.bck2brwsr.htmlpage.api.ComputedProperty; /** Edit the index.xhtml file. Use 'id' to name certain HTML elements. * Use this class to define behavior of the elements. */ -@Page(xhtml="index.xhtml", className="Index") +@Page(xhtml="index.xhtml", className="Index", properties={ + @Property(name="name", type=String.class) +}) public class App { + static { + Index model = new Index(); + model.setName("World"); + model.applyBindings(); + } + @On(event = CLICK, id="hello") - static void hello() { - Index.HELLO.setDisabled(true); - Element.alert("Hello World!"); + static void hello(Index m) { + Element.alert(m.getHelloMessage()); + } + + @ComputedProperty + static String helloMessage(String name) { + return "Hello " + name + "!"; } } diff -r 3119b93f1969 -r 08cd5a0c967e mojo/src/main/resources/archetype-resources/src/main/resources/index.xhtml --- a/mojo/src/main/resources/archetype-resources/src/main/resources/index.xhtml Mon Jan 21 17:04:45 2013 +0100 +++ b/mojo/src/main/resources/archetype-resources/src/main/resources/index.xhtml Tue Jan 22 09:19:47 2013 +0100 @@ -5,12 +5,14 @@ Bck2Brwsr's Hello World - +

Loading Bck2Brwsr's Hello World...

+ Your name: + diff -r 3119b93f1969 -r 08cd5a0c967e mojo/src/main/resources/archetype-resources/src/test/java/AppTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mojo/src/main/resources/archetype-resources/src/test/java/AppTest.java Tue Jan 22 09:19:47 2013 +0100 @@ -0,0 +1,24 @@ +package ${package}; + +import static org.testng.Assert.*; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +/** Demonstrating POJO testing of HTML page model. + * + * @author Jaroslav Tulach + */ +public class AppTest { + private Index model; + + + @BeforeMethod + public void initModel() { + model = new Index().applyBindings(); + } + + @Test public void testHelloMessage() { + model.setName("Joe"); + assertEquals(model.getHelloMessage(), "Hello Joe!", "Cleared after pressing +"); + } +}