<?xml version="1.0" encoding="UTF-8"?>
<!-- 
Copyright 2004 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.
-->
<portlet-app
    xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
    version="1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd
                        http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
  
  <!-- Test Portlet #1 ===================================================== -->
  
  <portlet>
    
    <description>TestSuiteDescription</description>
    <portlet-name>TestPortlet1</portlet-name>
    <display-name>Test Portlet #1</display-name>
    <portlet-class>org.apache.pluto.testsuite.TestPortlet</portlet-class>
    
    <init-param>
      <name>config</name>
      <value>/WEB-INF/testsuite-config.xml</value>
    </init-param>
    <init-param>
      <name>dummyName</name>
      <value>dummyValue</value>
    </init-param>
    
    <expiration-cache>-1</expiration-cache>
    
    <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>VIEW</portlet-mode>
      <portlet-mode>EDIT</portlet-mode>
      <portlet-mode>HELP</portlet-mode>
    </supports>
    
    <supported-locale>en</supported-locale>        
    <supported-locale>de</supported-locale>
    
    <portlet-info>
      <title>Test Portlet #1</title>
      <short-title>Test #1</short-title>
      <keywords>Test,Testing</keywords>
    </portlet-info>
    
    <portlet-preferences>
      <preference>
        <name>dummyName</name>
        <value>dummyValue</value>
        <read-only>false</read-only>
      </preference>
      <preference>
        <name>dummyName2</name>
        <value>dummyValue2</value>
      </preference>
      <preference>
        <name>readonly</name>
        <value>readonly</value>
        <read-only>true</read-only>
      </preference>
      <preference>
        <name>nameWithNoValue</name>
      </preference>
      <preferences-validator>org.apache.pluto.testsuite.validator.PreferencesValidatorImpl</preferences-validator>
    </portlet-preferences>
    
    <security-role-ref>
      <role-name>plutoTestRole</role-name>
      <role-link>tomcat</role-link>
    </security-role-ref>
  
  </portlet>
  
  
  
  <!-- Test Portlet #2 ===================================================== -->
  
	<portlet>
    
    <description>TestSuiteDescription</description>
    <portlet-name>TestPortlet2</portlet-name>
    <display-name>Test Portlet #2</display-name>
    <portlet-class>org.apache.pluto.testsuite.TestPortlet</portlet-class>
    
    <init-param>
      <name>config</name>
      <value>/WEB-INF/testsuite-2-config.xml</value>
    </init-param>
    <init-param>
      <name>dummyName</name>
      <value>dummyValue</value>
    </init-param>
    
    <expiration-cache>-1</expiration-cache>
    
    <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>VIEW</portlet-mode>
      <portlet-mode>EDIT</portlet-mode>
      <portlet-mode>HELP</portlet-mode>
    </supports>
    
    <supported-locale>en</supported-locale>
    <supported-locale>de</supported-locale>
    <resource-bundle>TestPortlet</resource-bundle>
    
    <portlet-preferences >
      <preference>
        <name>dummyName</name>
        <value>dummyValue</value>
        <read-only>false</read-only>
      </preference>
      <preference>
        <name>dummyName2</name>
        <value>dummyValue2</value>
      </preference>
      <preference>
        <name>readonly</name>
        <value>readonly</value>
        <read-only>true</read-only>
      </preference>
      <preference>
        <name>nameWithNoValue</name>
      </preference>
      <preferences-validator>org.apache.pluto.testsuite.validator.PreferencesValidatorImpl2</preferences-validator>
    </portlet-preferences>
    
    <security-role-ref>
      <role-name>plutoTestRole</role-name>
      <role-link>tomcat</role-link>
    </security-role-ref>
    
  </portlet>
  
</portlet-app>


