<!--
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 xmlns="http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.2">
    
    <!-- This is where the files are accessed from. (aka - portletContext) -->
    <context-root>/debug-views</context-root>

    <security-realm-name>geronimo-admin</security-realm-name>
    <security xmlns="http://geronimo.apache.org/xml/ns/security-1.2">
        <role-mappings>
            <role role-name="admin">
                <principal class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" name="admin" />
            </role>
        </role-mappings>
    </security>
    <cross-context/>
    
    <!-- i18n support -->
    <gbean name="ConsoleResourceGBean" class="org.apache.geronimo.console.i18n.ConsoleResourceGBean">
        <reference name="ConsoleResourceRegistry">
            <name>ConsoleResourceRegistry</name>
        </reference>
    </gbean>

    <gbean name="JMXViewer" class="org.apache.geronimo.pluto.AdminConsoleExtensionGBean">
        <attribute name="pageTitle">5-3-1/Monitoring and Troubleshooting/Debug Views/JMX Viewer</attribute>
        <attribute name="portletContext">/debug-views</attribute>
        <attribute name="portletList">[JMXViewer]</attribute>
        <attribute name="icon">/images/ico_viewer_16x16.gif</attribute>
        <reference name="PortalContainerServices">
            <name>PlutoPortalServices</name>
        </reference>
    </gbean>

    <gbean name="LDAPViewer" class="org.apache.geronimo.pluto.AdminConsoleExtensionGBean">
        <attribute name="pageTitle">5-3-2/Monitoring and Troubleshooting/Debug Views/LDAP Viewer</attribute>
        <attribute name="portletContext">/debug-views</attribute>
        <attribute name="portletList">[LDAPViewer]</attribute>
        <attribute name="icon">/images/ico_viewer_16x16.gif</attribute>
        <reference name="PortalContainerServices">
            <name>PlutoPortalServices</name>
        </reference>
    </gbean>

    <gbean name="JNDIViewer" class="org.apache.geronimo.pluto.AdminConsoleExtensionGBean">
        <attribute name="pageTitle">5-3-3/Monitoring and Troubleshooting/Debug Views/JNDI Viewer</attribute>
        <attribute name="portletContext">/debug-views</attribute>
        <attribute name="portletList">[JNDIViewer]</attribute>
        <attribute name="icon">/images/ico_viewer_16x16.gif</attribute>
        <reference name="PortalContainerServices">
            <name>PlutoPortalServices</name>
        </reference>
    </gbean>

    <gbean name="DependencyViewer" class="org.apache.geronimo.pluto.AdminConsoleExtensionGBean">
        <attribute name="pageTitle">5-3-4/Monitoring and Troubleshooting/Debug Views/Dependency Viewer</attribute>
        <attribute name="portletContext">/debug-views</attribute>
        <attribute name="portletList">[DependencyViewer]</attribute>
        <attribute name="icon">/images/ico_viewer_16x16.gif</attribute>
        <reference name="PortalContainerServices">
            <name>PlutoPortalServices</name>
        </reference>
    </gbean>

</web-app>
