<?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.
  -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd"
       default-lazy-init="false">

  <context:property-placeholder system-properties-mode="OVERRIDE"/>


  <bean name="userConfiguration#default" class="org.apache.archiva.redback.configuration.DefaultUserConfiguration">
    <property name="registry" ref="test-conf"/>
  </bean>

  <bean name="commons-configuration" class="org.apache.archiva.components.registry.commons.CommonsConfigurationRegistry">
  </bean>

  <alias name="commons-configuration" alias="test-conf"/>

  <bean name= "rbacManager#cached" class="org.apache.archiva.redback.rbac.cached.CachedRbacManager">
    <property name="rbacImpl" ref="rbacManager#memory"/>
    <property name="effectiveRoleSetCache" ref="cache#effectiveRoleSet"/>
    <property name="operationsCache" ref="cache#operations"/>
    <property name="permissionsCache" ref="cache#permissions"/>
    <property name="resourcesCache" ref="cache#resources"/>
    <property name="rolesCache" ref="cache#roles"/>
    <property name="userAssignmentsCache" ref="cache#userAssignments"/>
    <property name="userPermissionsCache" ref="cache#userPermissions"/>
  </bean>

  <bean name="cache#userAssignments" class="org.apache.archiva.components.cache.ehcache.EhcacheCache"
      init-method="initialize">
    <property name="diskPersistent" value="false"/>
    <property name="eternal" value="false"/>
    <property name="maxElementsInMemory" value="1000"/>
    <property name="memoryEvictionPolicy" value="LRU"/>
    <property name="name" value="userAssignments"/>
    <property name="timeToIdleSeconds" value="300"/>
    <property name="timeToLiveSeconds" value="600"/>
  </bean>

  <bean name="cache#userPermissions" class="org.apache.archiva.components.cache.ehcache.EhcacheCache"
      init-method="initialize">
    <property name="diskPersistent" value="false"/>
    <property name="eternal" value="false"/>
    <property name="maxElementsInMemory" value="1000"/>
    <property name="memoryEvictionPolicy" value="LRU"/>
    <property name="name" value="userPermissions"/>
    <property name="timeToIdleSeconds" value="300"/>
    <property name="timeToLiveSeconds" value="600"/>
  </bean>

  <!--
  *** jpa init ***
  Needed because of the dependency redback-user-cache -> redback-user-jpa
  ***
-->
  <bean name="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

    <property name="persistenceXmlLocation" value="classpath:META-INF/persistence-hsqldb.xml" />
    <property name="jpaPropertyMap">
      <map>
        <entry key="openjpa.ConnectionURL" value="jdbc:hsqldb:mem:redback_database" />
        <entry key="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver" />
        <entry key="openjpa.ConnectionUserName" value="sa" />
        <entry key="openjpa.ConnectionPassword" value="" />
        <entry key="openjpa.Log" value="slf4j" />
        <entry key="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" />
        <entry key="openjpa.jdbc.MappingDefaults"
               value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/>
      </map>
    </property>

  </bean>

  <bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" >
    <property name="entityManagerFactory" ref="entityManagerFactory" />
  </bean>

  <tx:annotation-driven />
  <!-- ****  jpa init *** -->

</beans>
