<?xml version="1.0" encoding="UTF-8"?>
<!--
 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.
-->

<role-list>
  <!-- Define an interceptor service  -->
  <role
    name="org.apache.fulcrum.yaafi.interceptor.logging.LoggingInterceptorService"
    shorthand="LoggingInterceptorService"
    default-class="org.apache.fulcrum.yaafi.interceptor.logging.LoggingInterceptorServiceImpl"
    logger="tracing"
  />
  <role
    name="org.apache.fulcrum.yaafi.interceptor.performance.PerformanceInterceptorService"
    shorthand="PerformanceInterceptorService"
    default-class="org.apache.fulcrum.yaafi.interceptor.performance.PerformanceInterceptorServiceImpl"
    logger="performance"
  />
  <role
    name="org.apache.fulcrum.yaafi.interceptor.jamon.JamonInterceptorService"
    shorthand="JamonInterceptorService"
    default-class="org.apache.fulcrum.yaafi.interceptor.jamon.JamonInterceptorServiceImpl"
  />
  <role
    name="org.apache.fulcrum.yaafi.interceptor.javasimon.JavaSimonInterceptorService"
    shorthand="JavaSimonInterceptorService"
    default-class="org.apache.fulcrum.yaafi.interceptor.javasimon.JavaSimonInterceptorServiceImpl"
  />
  <!-- Use minimal role entry -->
  <role
    name="org.apache.fulcrum.yaafi.service.servicemanager.ServiceManagerService"
    default-class="org.apache.fulcrum.yaafi.service.servicemanager.ServiceManagerServiceImpl"
  />
  <role
    name="org.apache.fulcrum.yaafi.service.advice.AdviceService"
    shorthand="AdviceService"
    default-class="org.apache.fulcrum.yaafi.service.advice.AdviceServiceImpl"
  />
  <!-- For the rest of the services use a full-blown role entry -->
  <role
    name="org.apache.fulcrum.yaafi.service.systemproperty.SystemPropertyService"
    shorthand="SystemPropertyService"
    default-class="org.apache.fulcrum.yaafi.service.systemproperty.SystemPropertyServiceImpl"
    early-init="true"
    description="Copies name/value pairs into the SystemProperties"
  />
  <!--
    This ReconfigurationService is instantiated during the first access. Until
    then it is doing nothing.
  -->
  <role
    name="org.apache.fulcrum.yaafi.service.reconfiguration.ReconfigurationService"
    shorthand="ReconfigurationService"
    default-class="org.apache.fulcrum.yaafi.service.reconfiguration.ReconfigurationServiceImpl"
    early-init="false"
    component-type="avalon"
    component-flavour="yaafi"
    description="Monitors the componentConfiguration.xml to reconfigure YAAFI"
  />
  <role
    name="org.apache.fulcrum.yaafi.service.shutdown.ShutdownService"
    shorthand="ShutdownService"
    default-class="org.apache.fulcrum.yaafi.service.shutdown.ShutdownServiceImpl"
    early-init="true"
    component-type="avalon"
    component-flavour="yaafi"
    description="Monitors a resource to force a disposal of the Avalon container"
  />
  <role
    name="org.apache.fulcrum.yaafi.DependentTestComponent"
    shorthand="DependentTestComponent"
    default-class="org.apache.fulcrum.yaafi.DependentTestComponentImpl"
    early-init="true"
    description="A simple test component depending on TestComponent">
  </role>
  <role
    name="org.apache.fulcrum.yaafi.TestComponent"
    shorthand="TestComponent"
    default-class="org.apache.fulcrum.yaafi.TestComponentImpl"
    early-init="false"
    description="A simple test component">
  </role>
  <role
    name="org.apache.fulcrum.yaafi.baseservice.DerivedService"
    shorthand="DerivedService"
    default-class="org.apache.fulcrum.yaafi.baseservice.DerivedServiceImpl"
    early-init="false"
    description="A simple service deriving from BaseService"
  />
</role-list>