<!-- 
	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.
-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

	<!--
		An example service which allows cookies to be dropped.
		Cookies sent by the client can be viewed with the exmaple "hello world" service
	-->
	<bean name="cookieDrop"
		class="org.apache.asyncweb.examples.cookie.CookieExample">

		<property name="form">
			<value>
				<![CDATA[
                    <body style="font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;">
                    <h2>Submit a new cookie</h2>
                    <form action="cookieDrop" method="GET">
                      <table>
                        <tr><td>Cookie Name</td><td><input name="cookieName"/></td></tr>
                        <tr><td>Cookie Value</td><td><input name="cookieValue"/></td></tr>
                        <tr><td>Cookie Path</td><td><input name="cookiePath"/></td></tr>
                        <tr><td>Cookie Expiry</td><td><input name="cookieExpiry"/></td></tr>
                        <tr><td>&nbsp;</td><td align="right"><input value="Add cookie" type="submit"/></td></tr>
                      <table>
                    </form>
              ]]>
			</value>
		</property>

	</bean>

</beans>
