<?xml version="1.0" ?>
<!--
    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.
	   
-->
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:md="http://myfaces.apache.org/bali/xml/metadata"
              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin" >
  <faces-config-extension>
    <mfp:event>
      <mfp:description>
        Event delivered when the "action" of the component has been
invoked;  for example, by clicking on a button.  The action may result
in page navigation.
      </mfp:description>
      <mfp:event-type>javax.faces.Action</mfp:event-type>
      <mfp:event-class>javax.faces.event.ActionEvent</mfp:event-class>
      <mfp:event-listener-class>javax.faces.event.ActionListener</mfp:event-listener-class>
      <mfp:event-source-interface>javax.faces.component.ActionSource</mfp:event-source-interface>
      <mfp:event-delivery-phases>Invoke Application,Apply Request Values</mfp:event-delivery-phases>
    </mfp:event>
  </faces-config-extension>
</faces-config>
