<?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.
-->
<!--
	This configuration file for Avalon components is used for testing the Fulcrum components
	with Turbine.
-->

<componentConfig>
    <!-- Torque Component -->
    <torque>
       <configfile>src/test/conf/torque/TorqueTest.properties</configfile>
    </torque>
    <cache cacheInitialSize="20" cacheCheckFrequency="5"/>
    <mimetype/>
    <crypto>
      <algorithm>
      	<unix>org.apache.fulcrum.crypto.provider.UnixCrypt</unix>
        <clear>org.apache.fulcrum.crypto.provider.ClearCrypt</clear>
        <java>org.apache.fulcrum.crypto.provider.JavaCrypt</java>
        <oldjava>org.apache.fulcrum.crypto.provider.OldJavaCrypt</oldjava>
      </algorithm>
    </crypto>
  
    <factory/>
    <pool/>
    <parser>
        <parameterEncoding>utf-8</parameterEncoding>
        <automaticUpload>true</automaticUpload>
    </parser>

    <!-- These components belong to the Fulcrum-Security services -->
    <securityService/>
    <authenticator/>
    <modelManager/>
    <aclFactory/>
     
   <userManager class="${package}">
        <className>${package}.om.TurbineUser</className>
        <peerClassName>${package}.om.TurbineUserPeerImpl</peerClassName>
        <userGroupRoleManager>
            <!--className${package}.om.TurbineUserGroupRole</className-->
            <peerClassName>${package}.om.TurbineUserGroupRolePeerImpl</peerClassName>
        </userGroupRoleManager>        
    </userManager>
    <groupManager>
        <className>${package}.om.TurbineGroup</className>
        <peerClassName>${package}.om.TurbineGroupPeerImpl</peerClassName>
    </groupManager>
    <roleManager>
        <className>${package}.om.TurbineRole</className>
        <peerClassName>${package}.om.TurbineRolePeerImpl</peerClassName>
    </roleManager>
    <permissionManager>
        <className>${package}.om.TurbinePermission</className>
        <peerClassName>${package}.om.TurbinePermissionPeerImpl</peerClassName>
    </permissionManager>
     <peerManager/>

  

</componentConfig>
