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

  <context:annotation-config/>
  <context:component-scan
      base-package="org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils"/>

  <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
    <property name="properties">
      <props>
        <prop key="org.quartz.scheduler.instanceName">scheduler1</prop>
        <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
        <prop key="org.quartz.threadPool.threadCount">2</prop>
        <prop key="org.quartz.threadPool.threadPriority">4</prop>
        <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
      </props>
    </property>
  </bean>

  <!-- wire up more basic configuration so it doesn't overwrite any config files -->
  <bean name="archivaConfiguration#default" class="org.apache.archiva.configuration.DefaultArchivaConfiguration">
    <property name="registry" ref="registry#default"/>
  </bean>

  <alias name="archivaConfiguration#default" alias="archivaConfiguration"/>

  <bean name="registry#default" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry">
    <property name="properties">
      <value>
        <![CDATA[
        <configuration>
          <system/>
          <xml fileName="${appserver.base}/conf/archiva.xml" config-forceCreate="true"
               config-optional="true"
               config-name="org.apache.archiva.base" config-at="org.apache.archiva"/>
        </configuration>
        ]]>
      </value>
    </property>
  </bean>

  <bean name="taskQueueExecutor#repository-scanning"
        class="org.apache.archiva.redback.components.taskqueue.execution.ThreadedTaskQueueExecutor" lazy-init="false">
    <property name="name" value="repository-scanning"/>
    <property name="executor" ref="taskExecutor#repository-scanning"/>
    <property name="queue" ref="taskQueue#repository-scanning"/>
  </bean>

  <bean id="repository" class="org.apache.jackrabbit.core.RepositoryImpl" destroy-method="shutdown">
    <constructor-arg ref="config"/>
  </bean>
  <bean id="config" class="org.apache.jackrabbit.core.config.RepositoryConfig" factory-method="create">
    <constructor-arg value="${basedir}/src/test/repository.xml"/>
    <constructor-arg value="${appserver.base}/jcr"/>
  </bean>

  <alias name="repositorySessionFactory#jcr" alias="repositorySessionFactory"/>
  <alias name="userConfiguration#archiva" alias="userConfiguration#default"/>
  <alias name="authorizer#rbac" alias="authorizer#default"/>
  <alias name="userManager#configurable" alias="userManager#default"/>

  <!--  ***
        JPA settings
        *** -->
  <bean name="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaVendorAdapter" >
      <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" />
    </property>
    <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="DefaultLevel=TRACE, Runtime=TRACE, Tool=INFO, SQL=TRACE" />
        <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 />
  <!--  ***
        End of JPA settings
        *** -->
</beans>