summaryrefslogtreecommitdiffstats
path: root/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes')
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/README8
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/pom.xml118
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/BaseActionBean.java33
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/HomeActionBean.java45
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldService.java25
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldServiceImpl.java28
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/StripesResources.properties73
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/log4j.properties48
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/home.jsp26
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/layout.jsp39
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/taglibs.jsp29
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.composite34
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.xml61
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/index.html24
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/README7
-rw-r--r--sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/itest/HelloworldTestCase.java53
16 files changed, 651 insertions, 0 deletions
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/README b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/README
new file mode 100644
index 0000000000..f331fb036c
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/README
@@ -0,0 +1,8 @@
+Sample implementation.web Stripes WebApp
+==========================================
+
+This sample contribution shows SCA components implemented in a webapp and
+accessed using a Stripes.
+
+See http://tuscany.apache.org/documentation-2x/20-beta-samples-documentation.html
+for more information \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/pom.xml b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/pom.xml
new file mode 100644
index 0000000000..fd96fc3367
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/pom.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-samples-implementation-webapp</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>sample-implementation-web-helloworld-stripes-webapp</artifactId>
+ <packaging>war</packaging>
+ <name>Apache Tuscany SCA Sample implementation.web Helloworld Stripes WebApp</name>
+
+ <dependencies>
+
+ <!-- Tuscany dependencies -->
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-stripes</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <!-- Stripes Framework dependencies -->
+ <dependency>
+ <groupId>net.sourceforge.stripes</groupId>
+ <artifactId>stripes</artifactId>
+ <version>1.5.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>taglibs</groupId>
+ <artifactId>standard</artifactId>
+ <version>1.1.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>net.sourceforge.htmlunit</groupId>
+ <artifactId>htmlunit</artifactId>
+ <version>2.6</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>helloworld-stripes</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty-plugin</artifactId>
+ <version>6.1.18</version>
+ <configuration>
+ <contextPath>helloworld-stripes</contextPath>
+ <stopKey>foo</stopKey>
+ <stopPort>9999</stopPort>
+ </configuration>
+ <executions>
+ <execution>
+ <id>start-jetty</id>
+ <phase>process-test-classes</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <scanIntervalSeconds>0</scanIntervalSeconds>
+ <daemon>true</daemon>
+ <connectors>
+ <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+ <port>8085</port>
+ </connector>
+ </connectors>
+ </configuration>
+ </execution>
+ <execution>
+ <id>stop-jetty</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>stop</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/BaseActionBean.java b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/BaseActionBean.java
new file mode 100644
index 0000000000..0ab02682ac
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/BaseActionBean.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 mystripes.action;
+
+import net.sourceforge.stripes.action.ActionBean;
+import net.sourceforge.stripes.action.ActionBeanContext;
+
+public class BaseActionBean implements ActionBean {
+ private ActionBeanContext context;
+
+ public ActionBeanContext getContext() {
+ return context;
+ }
+ public void setContext(ActionBeanContext context) {
+ this.context = context;
+ }
+}
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/HomeActionBean.java b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/HomeActionBean.java
new file mode 100644
index 0000000000..0385c92369
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/mystripes/action/HomeActionBean.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 mystripes.action;
+
+import net.sourceforge.stripes.action.DefaultHandler;
+import net.sourceforge.stripes.action.ForwardResolution;
+import net.sourceforge.stripes.action.Resolution;
+import net.sourceforge.stripes.action.UrlBinding;
+
+import org.oasisopen.sca.annotation.Reference;
+
+import sample.HelloworldService;
+
+@UrlBinding("/Home.htm")
+public class HomeActionBean extends BaseActionBean {
+
+ @Reference
+ HelloworldService service;
+
+ @DefaultHandler
+ public Resolution view() {
+ return new ForwardResolution("/WEB-INF/jsp/home.jsp");
+ }
+
+ public String getHello() {
+ return service.sayHello("world");
+ }
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldService.java b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldService.java
new file mode 100644
index 0000000000..53ff7a5ca1
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldService.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 sample;
+
+public interface HelloworldService {
+
+ String sayHello(String name);
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldServiceImpl.java b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldServiceImpl.java
new file mode 100644
index 0000000000..a22c095f29
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/java/sample/HelloworldServiceImpl.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 sample;
+
+
+public class HelloworldServiceImpl implements HelloworldService {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/StripesResources.properties b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/StripesResources.properties
new file mode 100644
index 0000000000..902842a19e
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/StripesResources.properties
@@ -0,0 +1,73 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#
+
+# Resource strings used by the <stripes:errors> tag when there are no nested tags
+stripes.errors.header=<div style="color:#b72222; font-weight: bold">Please fix the following errors:</div><ol>
+stripes.errors.beforeError=<li style="color: #b72222;">
+stripes.errors.afterError=</li>
+stripes.errors.footer=</ol>
+
+# Resource strings used by the <stripes:errors> tag when displaying errors for a
+# specific field (e.g. <stripes:errors field="password"/>). If not supplied the
+# values above will be used instead.
+stripes.fieldErrors.header=
+stripes.fieldErrors.beforeError=<span style="color: #b72222;">
+stripes.fieldErrors.afterError=</span><br />
+stripes.fieldErrors.footer=
+
+# Resource strings used by the stripes:messages tag
+stripes.messages.header=<ul class="messages">
+stripes.messages.beforeMessage=<li>
+stripes.messages.afterMessage=</li>
+stripes.messages.footer=</ul>
+
+# Validation error messages produced by Stripes' built-in converter classes. These
+# are default error messages and can be overridden on per-field and per-form levels.
+# Using the 'invalidNumber' error for a field 'age' of a form posting to
+# '/user/Profile.action', the keys looked for (in order) would be:
+# 1: /user/Profile.action.age.invalidNumber
+# 2: /user/Profile.action.age.errorMessage
+# 3: age.errorMessage
+# 4: /user/Profile.action.invalidNumber
+# 5: converter.number.invalidNumber
+converter.number.invalidNumber=The value ({1}) entered in field {0} must be a valid number
+converter.byte.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3}
+converter.short.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3}
+converter.integer.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3}
+converter.float.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3}
+converter.enum.notAnEnumeratedValue=The value "{1}" is not a valid value for field {0}
+converter.date.invalidDate=The value ({1}) entered in field {0} must be a valid date
+converter.email.invalidEmail=The value ({1}) entered is not a valid email address
+converter.creditCard.invalidCreditCard=The value ({1}) entered is not a valid credit card number
+
+# Validation error messages produced by Stripes' annotation based validations. These
+# are default error messages and can be overridden on per-field and per-form levels.
+# Using the 'valueNotPresent' required field error for a field 'username' of a form
+# posting to '/user/Register.action', the keys looked for (in order) would be:
+# 1: /user/Register.action.username.valueNotPresent
+# 2: /user/Register.action.username.errorMessage
+# 3: username.errorMessage
+# 4: /user/Register.action.valueNotPresent
+# 5: validation.required.valueNotPresent
+validation.required.valueNotPresent={0} is a required field
+validation.minlength.valueTooShort={0} must be at least {2} characters long
+validation.maxlength.valueTooLong={0} must be no more than {2} characters long
+validation.minvalue.valueBelowMinimum=The minimum allowed value for {0} is {2}
+validation.maxvalue.valueAboveMaximum=The maximum allowed value for {0} is {2}
+validation.mask.valueDoesNotMatch=<em>{1}</em> is not a valid {0}
+validation.expression.valueFailedExpression=The value supplied ({1}) for field {0} is invalid
+validation.file.postBodyTooBig=Total upload size of {3} KB exceeds the maximum size of {2} KB
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/log4j.properties b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/log4j.properties
new file mode 100644
index 0000000000..2741999098
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/resources/log4j.properties
@@ -0,0 +1,48 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.properties
+
+# Set up a logger to the console
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %-5p %c %x - %m%n
+
+# Use this to only see log messages beyond a certain threshold in the console
+#log4j.appender.stdout.Threshold=WARN
+
+# Set up a logger to a log file
+log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
+log4j.appender.logfile.layout.ConversionPattern=[%d{HH:mm:ss}] %-5p %c %x - %m%n
+log4j.appender.logfile.File=${user.home}/stripesquick.log
+log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
+
+# Use this to only see log messages beyond a certain threshold in the log file
+#log4j.appender.logfile.Threshold=WARN
+
+# Logger settings
+log4j.rootLogger=INFO, stdout, logfile
+
+# Valid levels are TRACE, DEBUG, INFO, WARN, ERROR, FATAL
+# Change to TRACE or DEBUG to see more log messages
+log4j.logger.net.sourceforge.stripes=WARN
+log4j.logger.org.stripesbook.quickstart=INFO
+log4j.logger.org.mortbay.log=INFO
+log4j.logger.org=WARN
+log4j.logger.com=WARN
+log4j.logger.net=WARN
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/home.jsp b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/home.jsp
new file mode 100644
index 0000000000..0681c1f2bf
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/home.jsp
@@ -0,0 +1,26 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<%@ include file="/WEB-INF/jsp/taglibs.jsp" %>
+
+<s:layout-render name="/WEB-INF/jsp/layout.jsp" title="Welcome">
+ <s:layout-component name="body">
+ <p>sayHello returns: ${actionBean.hello}</p>
+ <p>Congratulations, you've set up a Stripes SCA project!</p>
+ </s:layout-component>
+</s:layout-render>
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/layout.jsp b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/layout.jsp
new file mode 100644
index 0000000000..d0fb716b80
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/layout.jsp
@@ -0,0 +1,39 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<%@ include file="/WEB-INF/jsp/taglibs.jsp" %>
+
+<s:layout-definition>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head>
+ <title>${title}</title>
+ <link rel="stylesheet" type="text/css" href="${contextPath}/css/style.css">
+ <s:layout-component name="head">
+ </s:layout-component>
+ </head>
+ <body>
+ <div id="main">
+ <s:layout-component name="body">
+ </s:layout-component>
+ </div>
+ </body>
+</html>
+
+</s:layout-definition> \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/taglibs.jsp b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/taglibs.jsp
new file mode 100644
index 0000000000..f85602fcfa
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/jsp/taglibs.jsp
@@ -0,0 +1,29 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<%-- Stripes TLD --%>
+<%@ taglib prefix="s" uri="http://stripes.sourceforge.net/stripes.tld" %>
+<%@ taglib prefix="sdyn" uri="http://stripes.sourceforge.net/stripes-dynattr.tld" %>
+
+<%-- JSTL TLDs --%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<%-- This is so that you can conveniently refer to the context path with ${contextPath} --%>
+<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.composite b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.composite
new file mode 100644
index 0000000000..8976adde3c
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.composite
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://samples"
+ name="Helloworld">
+
+ <component name="foo">
+ <implementation.web web-uri=""/>
+ <reference name="service" target="HelloworldComponent"/>
+ </component>
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldServiceImpl"/>
+ </component>
+
+</composite>
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.xml b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..f01584cc2f
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ * Licensed to the Apache Software Foundation (ASF) under one * or more
+ contributor license agreements. See the NOTICE file * distributed with
+ this work for additional information * regarding copyright ownership.
+ The ASF licenses this file * to you 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 version="2.4" 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">
+
+ <display-name>Apache Tuscany Helloworld Stripes Sample</display-name>
+
+ <listener>
+ <listener-class>org.apache.tuscany.sca.host.webapp.TuscanyContextListener</listener-class>
+ </listener>
+
+ <filter>
+ <filter-name>StripesFilter</filter-name>
+ <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
+ <init-param>
+ <param-name>ActionResolver.Packages</param-name>
+ <param-value>mystripes.action</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Extension.Packages</param-name>
+ <param-value>org.apache.tuscany.sca.stripes</param-value>
+ </init-param>
+ </filter>
+
+ <servlet>
+ <servlet-name>DispatcherServlet</servlet-name>
+ <servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <filter-mapping>
+ <filter-name>StripesFilter</filter-name>
+ <servlet-name>DispatcherServlet</servlet-name>
+ <dispatcher>REQUEST</dispatcher>
+ <dispatcher>FORWARD</dispatcher>
+ </filter-mapping>
+
+ <servlet-mapping>
+ <servlet-name>DispatcherServlet</servlet-name>
+ <url-pattern>*.htm</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ </welcome-file-list>
+
+</web-app>
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/index.html b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/index.html
new file mode 100644
index 0000000000..c79d29e6a5
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/main/webapp/index.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+-->
+<html>
+ <head>
+ <meta http-equiv="refresh" content="0;url=Home.htm">
+ </head>
+</html>
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/README b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/README
new file mode 100644
index 0000000000..828aadb0f1
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/README
@@ -0,0 +1,7 @@
+The README in the <distribution-unpack-dir>/samples directory provides
+general instructions about building and running samples. (where
+distribution-unpack-dir is the directory in which you unpacked the tuscany
+binary distribution archive). Take a look there first (noting at you read it that this sample
+is not a new style sample).
+
+TODO - finish \ No newline at end of file
diff --git a/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/itest/HelloworldTestCase.java b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/itest/HelloworldTestCase.java
new file mode 100644
index 0000000000..7f4359fa43
--- /dev/null
+++ b/sandbox/sebastien/java/vhost/samples/learning-more/implementation-web/helloworld-stripes/src/test/java/itest/HelloworldTestCase.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 itest;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.Iterator;
+
+import org.junit.Test;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlParagraph;
+
+/**
+ */
+public class HelloworldTestCase {
+
+ @Test
+ public void testA() throws FailingHttpStatusCodeException, MalformedURLException, IOException {
+ HtmlPage page = (HtmlPage)new WebClient().getPage("http://localhost:8085/helloworld-stripes");
+ Iterator<?> ss = page.getAllHtmlChildElements().iterator();
+ while(ss.hasNext()) {
+ HtmlElement htmlElement = (HtmlElement) ss.next();
+ if( htmlElement instanceof HtmlParagraph) {
+ assertEquals("sayHello returns: Hello world", htmlElement.asText());
+ break;
+ }
+ }
+ }
+
+}