<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
    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.	   
-->
<portlet-app version="1.0"
             xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             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">

  <portlet>
    <description lang="EN">MyFaces Portlet Bridge Demo Portlet</description>
    <portlet-name>${artifactId}</portlet-name>
    <display-name lang="EN">MyFaces Portlet Bridge Demo</display-name>
    <portlet-class>javax.portlet.faces.GenericFacesPortlet</portlet-class>

    <init-param>
      <name>javax.portlet.faces.defaultViewId.view</name>
      <value>/index.jsp</value>
    </init-param>

    <init-param>
      <name>javax.portlet.faces.defaltViewId.edit</name>
      <value>/edit.jsp</value>
    </init-param>

    <init-param>
      <name>javax.portlet.faces.defaultViewId.help</name>
      <value>/help.jsp</value>
    </init-param>

    <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>edit</portlet-mode>
      <portlet-mode>view</portlet-mode>
      <portlet-mode>help</portlet-mode>
    </supports>

    <supported-locale>en</supported-locale>

    <portlet-info>
      <title>MyFaces Portlet Bridge Demo</title>
      <short-title>Bridge Demo</short-title>
    </portlet-info>
  </portlet>
    
</portlet-app>
