<?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>
    <!-- Torque Component Role Configuration -->
    <role name="org.apache.torque.avalon.Torque"
          shorthand="torque"
          default-class="org.apache.torque.avalon.TorqueComponent"
          early-init = "true" />
        
    <role
        name="org.apache.fulcrum.cache.GlobalCacheService"
        shorthand="cache"
        default-class="org.apache.fulcrum.cache.impl.DefaultGlobalCacheService"/>

    <role
        name="org.apache.fulcrum.mimetype.MimeTypeService"
        shorthand="mimetype"
        default-class="org.apache.fulcrum.mimetype.DefaultMimeTypeService"/>

    <role
        name="org.apache.fulcrum.crypto.CryptoService"
        shorthand="crypto"
        default-class="org.apache.fulcrum.crypto.DefaultCryptoService"/>

    <role
        name="org.apache.fulcrum.localization.LocalizationService"
        shorthand="localization"
        default-class="org.apache.fulcrum.localization.DefaultLocalizationService"/>

	<!-- Disable if you experience startup problems with Java8 -->
    <role
        name="org.apache.fulcrum.intake.IntakeService"
        shorthand="intake"
        default-class="org.apache.fulcrum.intake.IntakeServiceImpl"/>

    <role
        name="org.apache.fulcrum.factory.FactoryService"
        shorthand="factory"
        default-class="org.apache.fulcrum.factory.DefaultFactoryService"/>

    <role
        name="org.apache.fulcrum.pool.PoolService"
        shorthand="pool"
        default-class="org.apache.fulcrum.pool.DefaultPoolService"/>

    <role
        name="org.apache.fulcrum.parser.ParserService"
        shorthand="parser"
        default-class="org.apache.fulcrum.parser.DefaultParserService"/>
        
     <!-- using Jackson as mapper by default -->
    <role
        name="org.apache.fulcrum.json.JsonService"
        shorthand="json"
        default-class="org.apache.fulcrum.json.jackson.Jackson2MapperService"/>
        
    <role
        name="org.apache.fulcrum.xslt.XSLTService"
        shorthand="xslt"
        default-class="org.apache.fulcrum.xslt.DefaultXSLTService"/>
        
         <!-- These components belong to the Fulcrum-Security services -->        
    <role
        name="org.apache.fulcrum.security.SecurityService"
        shorthand="securityService"
        default-class="org.apache.fulcrum.security.BaseSecurityService"/>

    <role
        name="org.apache.fulcrum.security.UserManager"
        shorthand="userManager"
        early-init="true"
        default-class="org.apache.fulcrum.security.torque.turbine.TorqueTurbineUserManagerImpl"/>

    <role
        name="org.apache.fulcrum.security.GroupManager"
        shorthand="groupManager"
        default-class="org.apache.fulcrum.security.torque.turbine.TorqueTurbineGroupManagerImpl"/>

    <role
        name="org.apache.fulcrum.security.RoleManager"
        shorthand="roleManager"
        default-class="org.apache.fulcrum.security.torque.turbine.TorqueTurbineRoleManagerImpl"/>

    <role
        name="org.apache.fulcrum.security.PermissionManager"
        shorthand="permissionManager"
        default-class="org.apache.fulcrum.security.torque.turbine.TorqueTurbinePermissionManagerImpl"/>
        
    <role
        name="org.apache.fulcrum.security.torque.peer.PeerManager"
        shorthand="peerManager"
        default-class="org.apache.fulcrum.security.torque.peer.PeerManagerDefaultImpl"/>

    <role
        name="org.apache.fulcrum.security.ModelManager"
        shorthand="modelManager"
        default-class="org.apache.fulcrum.security.torque.turbine.TorqueTurbineModelManagerImpl"/>

    <role
        name="org.apache.fulcrum.security.authenticator.Authenticator"
        shorthand="authenticator"
        default-class="org.apache.fulcrum.security.authenticator.TextMatchAuthenticator"/>

    <role
        name="org.apache.fulcrum.security.model.ACLFactory"
        shorthand="aclFactory"
        default-class="org.apache.fulcrum.security.model.turbine.TurbineACLFactory"/>
        
    <!-- Service required for the QuartzSchedulerService -->
    <role
        name="org.apache.fulcrum.quartz.QuartzScheduler"
        shorthand="quartz"
        default-class="org.apache.fulcrum.quartz.impl.QuartzSchedulerImpl" />

    <!-- Add your services here -->
    
                
</role-list>
