summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wotonomy-test/pom.xml171
-rw-r--r--wotonomy-test/src/main/java/Application.java14
-rw-r--r--wotonomy-test/src/main/java/DirectAction.java71
-rw-r--r--wotonomy-test/src/main/java/Main.java54
-rw-r--r--wotonomy-test/src/main/java/Main.wo/Main.html22
-rw-r--r--wotonomy-test/src/main/java/Main.wo/Main.wod22
-rw-r--r--wotonomy-test/src/main/java/OtherAction.java21
-rw-r--r--wotonomy-test/src/main/java/Session.java10
-rw-r--r--wotonomy-test/src/main/webapp/Main.wo/Main.html22
-rw-r--r--wotonomy-test/src/main/webapp/Main.wo/Main.wod22
-rw-r--r--wotonomy-test/src/main/webapp/WEB-INF/classes/Application.java14
-rw-r--r--wotonomy-test/src/main/webapp/WEB-INF/classes/DirectAction.java71
-rw-r--r--wotonomy-test/src/main/webapp/WEB-INF/classes/Main.java54
-rw-r--r--wotonomy-test/src/main/webapp/WEB-INF/classes/Main.wo/Main.html22
-rw-r--r--wotonomy-test/src/main/webapp/WEB-INF/classes/Main.wo/Main.wod22
-rw-r--r--wotonomy-test/src/main/webapp/WEB-INF/classes/OtherAction.java21
-rw-r--r--wotonomy-test/src/main/webapp/WEB-INF/classes/Session.java10
-rw-r--r--wotonomy-test/src/main/webapp/WEB-INF/web.xml17
18 files changed, 660 insertions, 0 deletions
diff --git a/wotonomy-test/pom.xml b/wotonomy-test/pom.xml
new file mode 100644
index 0000000..c7074d6
--- /dev/null
+++ b/wotonomy-test/pom.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>com.ashardalon</groupId>
+ <artifactId>wotonomy-test</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ <packaging>war</packaging>
+
+ <name>Wotonomy test</name>
+ <description>This is a test of the Wotonomy framework</description>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.report.sourceEncoding>UTF-8</project.report.sourceEncoding>
+ <maven.compiler.release>11</maven.compiler.release>
+ <jakartaee-api.version>10.0.0</jakartaee-api.version>
+ <compiler-plugin.version>3.11.0</compiler-plugin.version>
+ <war-plugin.version>3.4.0</war-plugin.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>jakarta.platform</groupId>
+ <artifactId>jakarta.jakartaee-api</artifactId>
+ <version>${jakartaee-api.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>net.wotonomy</groupId>
+ <artifactId>wotonomy-datastore</artifactId>
+ <version>1.0-alpha5-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>net.wotonomy</groupId>
+ <artifactId>wotonomy-foundation</artifactId>
+ <version>1.0-alpha5-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>net.wotonomy</groupId>
+ <artifactId>wotonomy-persistence</artifactId>
+ <version>1.0-alpha5-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>net.wotonomy</groupId>
+ <artifactId>wotonomy-ui</artifactId>
+ <version>1.0-alpha5-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>net.wotonomy</groupId>
+ <artifactId>wotonomy-web</artifactId>
+ <version>1.0-alpha5-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>wotonomy-test</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${compiler-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>${war-plugin.version}</version>
+ <configuration>
+ <failOnMissingWebXml>true</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-site-plugin</artifactId>
+ <version>3.7.1</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-webdav-jackrabbit</artifactId>
+ <version>3.5.3</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-project-info-reports-plugin</artifactId>
+ <version>3.0.0</version>
+ </plugin>
+
+ <plugin>
+ <groupId>com.ashardalon</groupId>
+ <artifactId>slim-tomcat-maven-plugin</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ <configuration>
+ <serverURL>https://blog.ashardalon.com/</serverURL>
+ <serverName>ashardalon-tomcat</serverName>
+ <appPath>/wotonomy</appPath>
+ <update>true</update>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>deploy</phase>
+ <goals>
+ <goal>deploy</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>3.4.0</version>
+ <configuration></configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.22.1</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-changes-plugin</artifactId>
+ <version>2.12.1</version>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <distributionManagement>
+ <site>
+ <id>ashardalon-dav</id>
+ <url>dav:https://ashardalon.com/projects/wotonomy-test</url>
+ </site>
+ <snapshotRepository>
+ <id>ashardalon</id>
+ <name>Ashardalon Snapshots</name>
+ <url>https://repo.ashardalon.com/snapshots</url>
+ </snapshotRepository>
+ <repository>
+ <id>ashardalon</id>
+ <name>Ashardalon Releases</name>
+ <url>https://repo.ashardalon.com/releases</url>
+ </repository>
+ </distributionManagement>
+ <repositories>
+ <repository>
+ <id>ashardalon-forge</id>
+ <name>Ashardalon Forge</name>
+ <url>https://repo.ashardalon.com</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>ashardalon-forge</id>
+ <name>Ashardalon Forge</name>
+ <url>https://repo.ashardalon.com</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+</project>
diff --git a/wotonomy-test/src/main/java/Application.java b/wotonomy-test/src/main/java/Application.java
new file mode 100644
index 0000000..815e210
--- /dev/null
+++ b/wotonomy-test/src/main/java/Application.java
@@ -0,0 +1,14 @@
+// Decompiled by Jad v1.5.8c. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: packimports(3) fieldsfirst nonlb space
+// Source File Name: Application.java
+
+import java.io.PrintStream;
+import net.wotonomy.web.WOApplication;
+
+public class Application extends WOApplication {
+
+ public Application() {
+ System.out.println("Application()");
+ }
+}
diff --git a/wotonomy-test/src/main/java/DirectAction.java b/wotonomy-test/src/main/java/DirectAction.java
new file mode 100644
index 0000000..f5dc851
--- /dev/null
+++ b/wotonomy-test/src/main/java/DirectAction.java
@@ -0,0 +1,71 @@
+
+import java.io.PrintStream;
+import java.util.Date;
+import net.wotonomy.foundation.NSArray;
+import net.wotonomy.foundation.NSDictionary;
+import net.wotonomy.web.*;
+
+public class DirectAction extends WODirectAction {
+
+ private Date testing;
+
+ public DirectAction(WORequest aRequest) {
+ super(aRequest);
+ testing = new Date();
+ System.out.println("DirectAction()");
+ }
+
+ public WOActionResults defaultAction() {
+ return pageWithName("Main");
+ }
+
+ public Object getTesting() {
+ return testing;
+ }
+
+ public void setTesting(Date anObject) {
+ testing = anObject;
+ }
+
+ public WOActionResults testAction() {
+ System.out.println("DirectAction.testAction()");
+ takeFormValuesForKeyArray(request().formValues().allKeys());
+ WOResponse response = new WOResponse();
+ response.appendContentString("This is really just a test.");
+ response.appendContentString("<p>");
+ response.appendContentString(Application.application().name());
+ response.appendContentString("<p>");
+ response.appendContentHTMLString("<p>");
+ response.appendContentString("<p>");
+ response.appendContentString(getTesting().toString());
+ response.appendContentString("<p>");
+ response.appendContentString(request().formValues().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("browserLanguages: ");
+ response.appendContentString(request().browserLanguages().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("uri: ");
+ response.appendContentString(request().uri().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("adaptorPrefix: ");
+ response.appendContentString(request().adaptorPrefix().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("applicationName: ");
+ response.appendContentString(request().applicationName().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("requestHandlerKey: ");
+ response.appendContentString(request().requestHandlerKey().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("requestHandlerPath: ");
+ response.appendContentString(request().requestHandlerPath().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("requestHandlerPathArray: ");
+ response.appendContentString(request().requestHandlerPathArray().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("method: ");
+ response.appendContentString(request().method().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("content: ");
+ return response;
+ }
+}
diff --git a/wotonomy-test/src/main/java/Main.java b/wotonomy-test/src/main/java/Main.java
new file mode 100644
index 0000000..a12ca44
--- /dev/null
+++ b/wotonomy-test/src/main/java/Main.java
@@ -0,0 +1,54 @@
+import net.wotonomy.foundation.NSDate;
+import net.wotonomy.web.*;
+
+public class Main extends WOComponent {
+
+ private boolean showing;
+ private String textFieldValue;
+
+ public Main() {
+ super();
+ showing = true;
+ }
+
+ public NSDate getCurrentTime() {
+ return new NSDate();
+ }
+
+ public boolean getShowTime() {
+ return showing;
+ }
+ public void setShowTime(boolean value) {
+ showing = value;
+ }
+
+ public WOActionResults submit() {
+ System.out.println("Form Submitted");
+ System.out.println("textfield says '" + getTextValue() + "'");
+ return null;
+ }
+
+ public void takeValuesFromRequest(WORequest r, WOContext c) {
+ System.out.println("taking values from request");
+ if (r.formValueForKey("show") != null)
+ setShowTime(r.formValueForKey("show").equals("true"));
+ }
+
+ public String getTimeLinkString() {
+ return showing ? "Hide the time display" : "Show time display";
+ }
+
+ public void setTextValue(String value) {
+ textFieldValue = value;
+ }
+ public String getTextValue() {
+ return textFieldValue;
+ }
+
+ public WOComponent switchTime() {
+ System.out.println("switching time display");
+ setShowTime(!getShowTime());
+ return this;
+ }
+
+}
diff --git a/wotonomy-test/src/main/java/Main.wo/Main.html b/wotonomy-test/src/main/java/Main.wo/Main.html
new file mode 100644
index 0000000..6729a94
--- /dev/null
+++ b/wotonomy-test/src/main/java/Main.wo/Main.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD><TITLE>MyTest</TITLE></HEAD>
+<BODY>
+
+<WEBOBJECT NAME=showTime>
+The time is <WEBOBJECT NAME=time></WEBOBJECT>.
+<BR><BR>
+</WEBOBJECT>
+<WEBOBJECT NAME=timeLink></WEBOBJECT>
+
+<WEBOBJECT NAME=FORM>
+Here's a textfield: <WEBOBJECT NAME=textfield></WEBOBJECT>
+<WEBOBJECT NAME=submit></WEBOBJECT>
+</WEBOBJECT>
+
+<BR><BR>
+Here's a link to an <WEBOBJECT NAME=EXTLINK>external site</WEBOBJECT>.
+<BR>
+And here's a link to a <WEBOBJECT NAME=DIRLINK>direct action</WEBOBJECT>.
+
+</BODY>
+</HTML>
diff --git a/wotonomy-test/src/main/java/Main.wo/Main.wod b/wotonomy-test/src/main/java/Main.wo/Main.wod
new file mode 100644
index 0000000..16bd25e
--- /dev/null
+++ b/wotonomy-test/src/main/java/Main.wo/Main.wod
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD><TITLE>MyTest</TITLE></HEAD>
+<BODY>
+
+<WEBOBJECT NAME=showTime>
+The time is <WEBOBJECT NAME=time></WEBOBJECT>.
+<BR><BR>
+</WEBOBJECT>
+<WEBOBJECT NAME=timeLink></WEBOBJECT>
+
+<WEBOBJECT NAME=FORM>
+Here's a textfield: <WEBOBJECT NAME=textfield></WEBOBJECT>
+<WEBOBJECT NAME=submit></WEBOBJECT>
+</WEBOBJECT>
+
+<BR><BR>
+Here's a link to an <WEBOBJECT NAME=EXTLINK>external site</WEBOBJECT>.
+<BR>
+And here's a link to a <WEBOBJECT NAME=DIRLINK>direct action</WEBOBJECT> (not implemented yet).
+
+</BODY>
+</HTML>
diff --git a/wotonomy-test/src/main/java/OtherAction.java b/wotonomy-test/src/main/java/OtherAction.java
new file mode 100644
index 0000000..00a3155
--- /dev/null
+++ b/wotonomy-test/src/main/java/OtherAction.java
@@ -0,0 +1,21 @@
+//A direct action subclass, with only one method
+//that gets called from Main.wo
+
+import net.wotonomy.foundation.*;
+import net.wotonomy.web.*;
+
+public class OtherAction extends WODirectAction {
+
+ public OtherAction(WORequest r) {
+ super(r);
+ }
+
+ public WOActionResults linkTestAction() {
+ System.out.println("creating and configuring Main.wo");
+ WOComponent page = pageWithName("Main");
+ page.takeValueForKey(new Boolean(false), "showTime");
+ page.takeValueForKey("direct action called", "textValue");
+ return page;
+ }
+
+}
diff --git a/wotonomy-test/src/main/java/Session.java b/wotonomy-test/src/main/java/Session.java
new file mode 100644
index 0000000..e3e9de7
--- /dev/null
+++ b/wotonomy-test/src/main/java/Session.java
@@ -0,0 +1,10 @@
+//Empty session file
+
+import net.wotonomy.web.WOSession;
+
+public class Session extends WOSession {
+
+ public Session() {
+ }
+
+}
diff --git a/wotonomy-test/src/main/webapp/Main.wo/Main.html b/wotonomy-test/src/main/webapp/Main.wo/Main.html
new file mode 100644
index 0000000..6729a94
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/Main.wo/Main.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD><TITLE>MyTest</TITLE></HEAD>
+<BODY>
+
+<WEBOBJECT NAME=showTime>
+The time is <WEBOBJECT NAME=time></WEBOBJECT>.
+<BR><BR>
+</WEBOBJECT>
+<WEBOBJECT NAME=timeLink></WEBOBJECT>
+
+<WEBOBJECT NAME=FORM>
+Here's a textfield: <WEBOBJECT NAME=textfield></WEBOBJECT>
+<WEBOBJECT NAME=submit></WEBOBJECT>
+</WEBOBJECT>
+
+<BR><BR>
+Here's a link to an <WEBOBJECT NAME=EXTLINK>external site</WEBOBJECT>.
+<BR>
+And here's a link to a <WEBOBJECT NAME=DIRLINK>direct action</WEBOBJECT>.
+
+</BODY>
+</HTML>
diff --git a/wotonomy-test/src/main/webapp/Main.wo/Main.wod b/wotonomy-test/src/main/webapp/Main.wo/Main.wod
new file mode 100644
index 0000000..16bd25e
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/Main.wo/Main.wod
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD><TITLE>MyTest</TITLE></HEAD>
+<BODY>
+
+<WEBOBJECT NAME=showTime>
+The time is <WEBOBJECT NAME=time></WEBOBJECT>.
+<BR><BR>
+</WEBOBJECT>
+<WEBOBJECT NAME=timeLink></WEBOBJECT>
+
+<WEBOBJECT NAME=FORM>
+Here's a textfield: <WEBOBJECT NAME=textfield></WEBOBJECT>
+<WEBOBJECT NAME=submit></WEBOBJECT>
+</WEBOBJECT>
+
+<BR><BR>
+Here's a link to an <WEBOBJECT NAME=EXTLINK>external site</WEBOBJECT>.
+<BR>
+And here's a link to a <WEBOBJECT NAME=DIRLINK>direct action</WEBOBJECT> (not implemented yet).
+
+</BODY>
+</HTML>
diff --git a/wotonomy-test/src/main/webapp/WEB-INF/classes/Application.java b/wotonomy-test/src/main/webapp/WEB-INF/classes/Application.java
new file mode 100644
index 0000000..815e210
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/WEB-INF/classes/Application.java
@@ -0,0 +1,14 @@
+// Decompiled by Jad v1.5.8c. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: packimports(3) fieldsfirst nonlb space
+// Source File Name: Application.java
+
+import java.io.PrintStream;
+import net.wotonomy.web.WOApplication;
+
+public class Application extends WOApplication {
+
+ public Application() {
+ System.out.println("Application()");
+ }
+}
diff --git a/wotonomy-test/src/main/webapp/WEB-INF/classes/DirectAction.java b/wotonomy-test/src/main/webapp/WEB-INF/classes/DirectAction.java
new file mode 100644
index 0000000..f5dc851
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/WEB-INF/classes/DirectAction.java
@@ -0,0 +1,71 @@
+
+import java.io.PrintStream;
+import java.util.Date;
+import net.wotonomy.foundation.NSArray;
+import net.wotonomy.foundation.NSDictionary;
+import net.wotonomy.web.*;
+
+public class DirectAction extends WODirectAction {
+
+ private Date testing;
+
+ public DirectAction(WORequest aRequest) {
+ super(aRequest);
+ testing = new Date();
+ System.out.println("DirectAction()");
+ }
+
+ public WOActionResults defaultAction() {
+ return pageWithName("Main");
+ }
+
+ public Object getTesting() {
+ return testing;
+ }
+
+ public void setTesting(Date anObject) {
+ testing = anObject;
+ }
+
+ public WOActionResults testAction() {
+ System.out.println("DirectAction.testAction()");
+ takeFormValuesForKeyArray(request().formValues().allKeys());
+ WOResponse response = new WOResponse();
+ response.appendContentString("This is really just a test.");
+ response.appendContentString("<p>");
+ response.appendContentString(Application.application().name());
+ response.appendContentString("<p>");
+ response.appendContentHTMLString("<p>");
+ response.appendContentString("<p>");
+ response.appendContentString(getTesting().toString());
+ response.appendContentString("<p>");
+ response.appendContentString(request().formValues().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("browserLanguages: ");
+ response.appendContentString(request().browserLanguages().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("uri: ");
+ response.appendContentString(request().uri().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("adaptorPrefix: ");
+ response.appendContentString(request().adaptorPrefix().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("applicationName: ");
+ response.appendContentString(request().applicationName().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("requestHandlerKey: ");
+ response.appendContentString(request().requestHandlerKey().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("requestHandlerPath: ");
+ response.appendContentString(request().requestHandlerPath().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("requestHandlerPathArray: ");
+ response.appendContentString(request().requestHandlerPathArray().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("method: ");
+ response.appendContentString(request().method().toString());
+ response.appendContentString("<p>");
+ response.appendContentString("content: ");
+ return response;
+ }
+}
diff --git a/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.java b/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.java
new file mode 100644
index 0000000..a12ca44
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.java
@@ -0,0 +1,54 @@
+import net.wotonomy.foundation.NSDate;
+import net.wotonomy.web.*;
+
+public class Main extends WOComponent {
+
+ private boolean showing;
+ private String textFieldValue;
+
+ public Main() {
+ super();
+ showing = true;
+ }
+
+ public NSDate getCurrentTime() {
+ return new NSDate();
+ }
+
+ public boolean getShowTime() {
+ return showing;
+ }
+ public void setShowTime(boolean value) {
+ showing = value;
+ }
+
+ public WOActionResults submit() {
+ System.out.println("Form Submitted");
+ System.out.println("textfield says '" + getTextValue() + "'");
+ return null;
+ }
+
+ public void takeValuesFromRequest(WORequest r, WOContext c) {
+ System.out.println("taking values from request");
+ if (r.formValueForKey("show") != null)
+ setShowTime(r.formValueForKey("show").equals("true"));
+ }
+
+ public String getTimeLinkString() {
+ return showing ? "Hide the time display" : "Show time display";
+ }
+
+ public void setTextValue(String value) {
+ textFieldValue = value;
+ }
+ public String getTextValue() {
+ return textFieldValue;
+ }
+
+ public WOComponent switchTime() {
+ System.out.println("switching time display");
+ setShowTime(!getShowTime());
+ return this;
+ }
+
+}
diff --git a/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.wo/Main.html b/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.wo/Main.html
new file mode 100644
index 0000000..6729a94
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.wo/Main.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD><TITLE>MyTest</TITLE></HEAD>
+<BODY>
+
+<WEBOBJECT NAME=showTime>
+The time is <WEBOBJECT NAME=time></WEBOBJECT>.
+<BR><BR>
+</WEBOBJECT>
+<WEBOBJECT NAME=timeLink></WEBOBJECT>
+
+<WEBOBJECT NAME=FORM>
+Here's a textfield: <WEBOBJECT NAME=textfield></WEBOBJECT>
+<WEBOBJECT NAME=submit></WEBOBJECT>
+</WEBOBJECT>
+
+<BR><BR>
+Here's a link to an <WEBOBJECT NAME=EXTLINK>external site</WEBOBJECT>.
+<BR>
+And here's a link to a <WEBOBJECT NAME=DIRLINK>direct action</WEBOBJECT>.
+
+</BODY>
+</HTML>
diff --git a/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.wo/Main.wod b/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.wo/Main.wod
new file mode 100644
index 0000000..16bd25e
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/WEB-INF/classes/Main.wo/Main.wod
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD><TITLE>MyTest</TITLE></HEAD>
+<BODY>
+
+<WEBOBJECT NAME=showTime>
+The time is <WEBOBJECT NAME=time></WEBOBJECT>.
+<BR><BR>
+</WEBOBJECT>
+<WEBOBJECT NAME=timeLink></WEBOBJECT>
+
+<WEBOBJECT NAME=FORM>
+Here's a textfield: <WEBOBJECT NAME=textfield></WEBOBJECT>
+<WEBOBJECT NAME=submit></WEBOBJECT>
+</WEBOBJECT>
+
+<BR><BR>
+Here's a link to an <WEBOBJECT NAME=EXTLINK>external site</WEBOBJECT>.
+<BR>
+And here's a link to a <WEBOBJECT NAME=DIRLINK>direct action</WEBOBJECT> (not implemented yet).
+
+</BODY>
+</HTML>
diff --git a/wotonomy-test/src/main/webapp/WEB-INF/classes/OtherAction.java b/wotonomy-test/src/main/webapp/WEB-INF/classes/OtherAction.java
new file mode 100644
index 0000000..00a3155
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/WEB-INF/classes/OtherAction.java
@@ -0,0 +1,21 @@
+//A direct action subclass, with only one method
+//that gets called from Main.wo
+
+import net.wotonomy.foundation.*;
+import net.wotonomy.web.*;
+
+public class OtherAction extends WODirectAction {
+
+ public OtherAction(WORequest r) {
+ super(r);
+ }
+
+ public WOActionResults linkTestAction() {
+ System.out.println("creating and configuring Main.wo");
+ WOComponent page = pageWithName("Main");
+ page.takeValueForKey(new Boolean(false), "showTime");
+ page.takeValueForKey("direct action called", "textValue");
+ return page;
+ }
+
+}
diff --git a/wotonomy-test/src/main/webapp/WEB-INF/classes/Session.java b/wotonomy-test/src/main/webapp/WEB-INF/classes/Session.java
new file mode 100644
index 0000000..e3e9de7
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/WEB-INF/classes/Session.java
@@ -0,0 +1,10 @@
+//Empty session file
+
+import net.wotonomy.web.WOSession;
+
+public class Session extends WOSession {
+
+ public Session() {
+ }
+
+}
diff --git a/wotonomy-test/src/main/webapp/WEB-INF/web.xml b/wotonomy-test/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b505b52
--- /dev/null
+++ b/wotonomy-test/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE web-app
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
+ "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
+
+<web-app>
+ <servlet>
+ <servlet-name>ApplicatonServlet</servlet-name>
+ <servlet-class>Application</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>ApplicatonServlet</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+</web-app>