<?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:property-placeholder system-properties-mode="OVERRIDE"/>

  <context:annotation-config/>
  <context:component-scan
      base-package="org.apache.archiva.redback.keys,org.apache.archiva.webdav,org.apache.archiva.metadata.repository,org.apache.archiva.webdav.util,org.apache.archiva.common.plexusbridge"/>

  <bean name="scheduler" class="org.apache.archiva.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">1</prop>
        <prop key="org.quartz.threadPool.threadPriority">4</prop>
        <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
      </props>
    </property>
  </bean>

  <bean name="servletAuthenticator" class="org.apache.archiva.webdav.MockServletAuthenticator"/>

  <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.components.registry.commons.CommonsConfigurationRegistry">
    <property name="properties">
      <value>
        <![CDATA[
        <configuration>
          <system/>
        </configuration>
        ]]>
      </value>
    </property>
  </bean>
  <!--
  <bean name="davResourceFactory#archiva" class="org.apache.archiva.webdav.UnauthenticatedDavResourceFactory">
    <property name="servletAuth" ref="servletAuthenticator"/>
  </bean>
  -->
  <alias name="userConfiguration#redback" 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="${openjpa.Log:DefaultLevel=INFO,Runtime=ERROR,Tool=ERROR,SQL=ERROR,Schema=ERROR,MetaData=ERROR}" />
        <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>