You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2007/03/03 23:37:16 UTC

svn commit: r514258 - in /tapestry/tapestry5/tapestry-spring-integration/trunk: ./ src/test/conf/ src/test/java/org/apache/tapestry/spring/ src/test/java/org/example/ src/test/java/org/example/testapp/ src/test/java/org/example/testapp/pages/ src/test/...

Author: hlship
Date: Sat Mar  3 14:37:15 2007
New Revision: 514258

URL: http://svn.apache.org/viewvc?view=rev&rev=514258
Log:
Build an integration application to demonstrate the ability to inject an Spring bean.

Added:
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/webdefault.xml
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/apache/tapestry/spring/
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/apache/tapestry/spring/TapestrySpringIntegrationTest.java
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/pages/
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/pages/Start.java
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/AppModule.java
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/Upcase.java
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/UpcaseImpl.java
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/resources/
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/resources/log4j.properties
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/Start.html
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/applicationContext.xml
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/web.xml
Modified:
    tapestry/tapestry5/tapestry-spring-integration/trunk/.classpath
    tapestry/tapestry5/tapestry-spring-integration/trunk/pom.xml
    tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/testng.xml

Modified: tapestry/tapestry5/tapestry-spring-integration/trunk/.classpath
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/.classpath?view=diff&rev=514258&r1=514257&r2=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/.classpath (original)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/.classpath Sat Mar  3 14:37:15 2007
@@ -5,5 +5,6 @@
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="lib" path="src/main/resources"/>
+	<classpathentry kind="lib" path="src/test/resources"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

Modified: tapestry/tapestry5/tapestry-spring-integration/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/pom.xml?view=diff&rev=514258&r1=514257&r2=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/pom.xml (original)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/pom.xml Sat Mar  3 14:37:15 2007
@@ -28,28 +28,21 @@
       <artifactId>tapestry-core</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.tapestry</groupId>
+      <artifactId>tapestry-test</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-web</artifactId>
       <version>1.2.8</version>
       <scope>provided</scope>
     </dependency>
-    <dependency>
-      <groupId>org.testng</groupId>
-      <artifactId>testng</artifactId>
-      <version>5.1</version>
-      <classifier>jdk15</classifier>
-      <scope>test</scope>
-    </dependency>
 
     <dependency>
       <groupId>org.easymock</groupId>
       <artifactId>easymock</artifactId>
     </dependency>
 
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-    </dependency>
   </dependencies>
   <build>
     <plugins>

Modified: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/testng.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/testng.xml?view=diff&rev=514258&r1=514257&r2=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/testng.xml (original)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/testng.xml Sat Mar  3 14:37:15 2007
@@ -15,10 +15,12 @@
    limitations under the License.
 -->
 
-<suite name="Tapestry Spring Integration" parallel="false" thread-count="10" annotations="1.5" verbose="2">
+<suite name="Tapesty Spring Integration" parallel="false" thread-count="10" annotations="1.5" verbose="2">
   <test name="Tapestry Spring Integration">
+    <parameter name="tapestry.integration-webapp" value="src/test/webapp"/>
     <packages>
       <package name="org.apache.tapestry.internal.spring"/>
+      <package name="org.apache.tapestry.spring"/>
     </packages>
   </test>
 </suite>

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/webdefault.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/webdefault.xml?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/webdefault.xml (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/conf/webdefault.xml Sat Mar  3 14:37:15 2007
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+   Copyright 2007 The Apache Software Foundation
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<web-app 
+   xmlns="http://java.sun.com/xml/ns/j2ee" 
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
+   version="2.4"> 
+
+  <description>
+    Default web.xml file.  
+    This file is applied to a Web application before it's own WEB_INF/web.xml file
+  </description>
+
+
+
+  <!-- ==================================================================== -->
+  <!-- Context params to control Session Cookies                            -->
+  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
+  <!-- UNCOMMENT TO ACTIVATE
+  <context-param>
+    <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
+    <param-value>127.0.0.1</param-value>
+  </context-param>
+
+  <context-param>
+    <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
+    <param-value>/</param-value>
+  </context-param>
+
+  <context-param>
+    <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
+    <param-value>-1</param-value>
+  </context-param>
+  -->
+
+
+
+  <!-- ==================================================================== -->
+  <!-- The default servlet.                                                 -->
+  <!-- This servlet, normally mapped to /, provides the handling for static -->
+  <!-- content, OPTIONS and TRACE methods for the context.                  -->
+  <!-- The following initParameters are supported:                          -->
+  <!--                                                                      -->
+  <!--   acceptRanges     If true, range requests and responses are         -->
+  <!--                    supported                                         -->
+  <!--                                                                      -->
+  <!--   dirAllowed       If true, directory listings are returned if no    -->
+  <!--                    welcome file is found. Else 403 Forbidden.        -->
+  <!--                                                                      -->
+  <!--   putAllowed       If true, the PUT method is allowed                -->
+  <!--                                                                      -->
+  <!--   delAllowed       If true, the DELETE method is allowed             -->
+  <!--                                                                      -->
+  <!--   redirectWelcome  If true, redirect welcome file requests           -->
+  <!--                    else use request dispatcher forwards              -->
+  <!--                                                                      -->
+  <!--   minGzipLength    If set to a positive integer, then static content -->
+  <!--                    larger than this will be served as gzip content   -->
+  <!--                    encoded if a matching resource is found ending    -->
+  <!--                    with ".gz"                                        -->
+  <!--                                                                      -->
+  <!--   resoureBase      Can be set to replace the context resource base   -->
+  <!--                                                                      -->
+  <!--   relativeResourceBase                                               -->
+  <!--                    Set with a pathname relative to the base of the   -->
+  <!--                    servlet context root. Useful for only serving     -->
+  <!--                    static content from only specific subdirectories. -->
+  <!--                                                                      -->
+  <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
+  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
+  <servlet>
+    <servlet-name>default</servlet-name>
+    <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
+    <init-param>
+      <param-name>acceptRanges</param-name>
+      <param-value>true</param-value>
+    </init-param>
+    <init-param>
+      <param-name>dirAllowed</param-name>
+      <param-value>true</param-value>
+    </init-param>
+    <init-param>
+      <param-name>putAllowed</param-name>
+      <param-value>false</param-value>
+    </init-param>
+    <init-param>
+      <param-name>delAllowed</param-name>
+      <param-value>false</param-value>
+    </init-param>
+    <init-param>
+      <param-name>redirectWelcome</param-name>
+      <param-value>false</param-value>
+    </init-param>
+    <init-param>
+      <param-name>minGzipLength</param-name>
+      <param-value>8192</param-value>
+    </init-param>
+    <load-on-startup>0</load-on-startup>
+  </servlet> 
+
+
+  <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
+
+  <!-- ==================================================================== -->
+  <session-config>
+    <session-timeout>30</session-timeout>
+  </session-config>
+
+
+  <!-- ==================================================================== -->
+  <welcome-file-list>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.htm</welcome-file>
+  </welcome-file-list>
+
+  <!-- ==================================================================== -->
+  <locale-encoding-mapping-list>
+    <locale-encoding-mapping><locale>ar</locale><encoding>ISO-8859-6</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>be</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>bg</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ca</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>cs</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>da</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>de</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>el</locale><encoding>ISO-8859-7</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>en</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>es</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>et</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>fi</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>fr</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>hr</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>hu</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>is</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>it</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>iw</locale><encoding>ISO-8859-8</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ja</locale><encoding>Shift_JIS</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ko</locale><encoding>EUC-KR</encoding></locale-encoding-mapping>     
+    <locale-encoding-mapping><locale>lt</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>lv</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>mk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>nl</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>no</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>pl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>pt</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ro</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ru</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sh</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sk</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sq</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sr</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sv</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>tr</locale><encoding>ISO-8859-9</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>uk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>zh</locale><encoding>GB2312</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>zh_TW</locale><encoding>Big5</encoding></locale-encoding-mapping>   
+  </locale-encoding-mapping-list>
+
+  
+
+</web-app>
+

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/apache/tapestry/spring/TapestrySpringIntegrationTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/apache/tapestry/spring/TapestrySpringIntegrationTest.java?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/apache/tapestry/spring/TapestrySpringIntegrationTest.java (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/apache/tapestry/spring/TapestrySpringIntegrationTest.java Sat Mar  3 14:37:15 2007
@@ -0,0 +1,32 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.spring;
+
+import org.apache.tapestry.test.AbstractIntegrationTestSuite;
+import org.testng.annotations.Test;
+
+public class TapestrySpringIntegrationTest extends AbstractIntegrationTestSuite
+{
+  @Test
+  public void integration_test() throws Exception
+  {
+    open(BASE_URL);
+
+    type("input", "paris in the springtime");
+    clickAndWait("//input[@value='Convert']");
+
+    assertFieldValue("input", "PARIS IN THE SPRINGTIME");
+  }
+}

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/pages/Start.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/pages/Start.java?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/pages/Start.java (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/pages/Start.java Sat Mar  3 14:37:15 2007
@@ -0,0 +1,44 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.example.testapp.pages;
+
+import org.apache.tapestry.annotations.Inject;
+import org.apache.tapestry.annotations.Retain;
+import org.example.testapp.services.Upcase;
+
+public class Start
+{
+  @Retain
+  private String _input;
+
+  @Inject("spring:upcase")
+  private Upcase _upcaseBean;
+
+  void onSuccess()
+  {
+    _input = _upcaseBean.toUpperCase(_input);
+  }
+
+  public String getInput()
+  {
+    return _input;
+  }
+
+  public void setInput(String input)
+  {
+    _input = input;
+  }
+
+}

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/AppModule.java?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/AppModule.java (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/AppModule.java Sat Mar  3 14:37:15 2007
@@ -0,0 +1,29 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.example.testapp.services;
+
+import org.apache.tapestry.ioc.annotations.SubModule;
+import org.apache.tapestry.spring.SpringModule;
+
+/**
+ * The SubModule is not normally needed, except that during tests of tapestry-spring, the necessary
+ * JAR Manifest does not yet exist, so we force the tapestry.spring module into the registry
+ * explicitly.
+ */
+@SubModule(SpringModule.class)
+public class AppModule
+{
+
+}

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/Upcase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/Upcase.java?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/Upcase.java (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/Upcase.java Sat Mar  3 14:37:15 2007
@@ -0,0 +1,23 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.example.testapp.services;
+
+/**
+ * Test interface for an injectble Spring bean.
+ */
+public interface Upcase
+{
+  String toUpperCase(String input);
+}

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/UpcaseImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/UpcaseImpl.java?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/UpcaseImpl.java (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/java/org/example/testapp/services/UpcaseImpl.java Sat Mar  3 14:37:15 2007
@@ -0,0 +1,25 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.example.testapp.services;
+
+public class UpcaseImpl implements Upcase
+{
+
+  public String toUpperCase(String input)
+  {
+    return input.toUpperCase();
+  }
+
+}

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/resources/log4j.properties?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/resources/log4j.properties (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/resources/log4j.properties Sat Mar  3 14:37:15 2007
@@ -0,0 +1,31 @@
+# Copyright 2005, 2006 The Apache Software Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+log4j.rootCategory=WARN, A1
+
+# A1 is set to be a ConsoleAppender. 
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
+
+log4j.category.org.apache.tapestry.TapestryFilter=info
+log4j.category.org.apache.tapestry=error
+log4j.category.tapestry=error
+log4j.category.tapestry.ioc.ClassFactory=error
+
+log4j.category.app=info
+log4j.category.org.apache.tapestry.integration.app1=error
+log4j.category.org.apache.tapestry.corelib=error

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/Start.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/Start.html?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/Start.html (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/Start.html Sat Mar  3 14:37:15 2007
@@ -0,0 +1,17 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+  <head>
+    <title>Start Page</title>
+  </head>
+  <body>
+    <p>
+      This is a silly application for converting text to uppercase.
+    </p>
+    <t:form>
+      <t:errors/>
+      <t:label for="input"/>
+      <input t:type="textfield" t:id="input" size="40"/>
+      <br/>
+      <input type="submit" value="Convert"/>
+    </t:form>
+  </body>
+</html>
\ No newline at end of file

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/applicationContext.xml?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/applicationContext.xml (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/applicationContext.xml Sat Mar  3 14:37:15 2007
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+   Copyright 2007 The Apache Software Foundation
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans>  
+  <bean id="upcase" class="org.example.testapp.services.UpcaseImpl"/>
+</beans>
+

Added: tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/web.xml?view=auto&rev=514258
==============================================================================
--- tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/web.xml (added)
+++ tapestry/tapestry5/tapestry-spring-integration/trunk/src/test/webapp/WEB-INF/web.xml Sat Mar  3 14:37:15 2007
@@ -0,0 +1,39 @@
+<!DOCTYPE web-app
+      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+      "http://java.sun.com/dtd/web-app_2_3.dtd">      
+<!-- 
+  Copyright 2007 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->      
+<web-app>
+  <display-name>Tapestry-Spring Integration Test Application</display-name>
+  <context-param>
+    <param-name>tapestry.app-package</param-name>
+    <param-value>org.example.testapp</param-value>
+  </context-param>
+  <filter>
+    <filter-name>app</filter-name>
+    <filter-class>org.apache.tapestry.TapestryFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>app</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+  <!-- 
+  This is where the Spring support is configured.
+   -->
+  <listener>
+    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+  </listener>  
+</web-app>