<?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:jaxrs="http://cxf.apache.org/jaxrs"
       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://cxf.apache.org/jaxrs
           http://cxf.apache.org/schemas/jaxrs.xsd">

  <import resource="classpath*:META-INF/cxf/cxf.xml"/>
  <!--
  <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/>
  -->
  <import resource="classpath*:META-INF/cxf/cxf-servlet.xml"/>

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

  <bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
    <property name="mapper" ref="redbackJacksonJsonMapper"/>
  </bean>

  <bean id="v2.jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
    <property name="mapper" ref="v2.redbackJacksonJsonMapper"/>
  </bean>

  <bean id="xmlProvider" class="com.fasterxml.jackson.jaxrs.xml.JacksonJaxbXMLProvider">
    <property name="mapper" ref="redbackJacksonXMLMapper"/>
  </bean>

  <bean id="redbackJacksonJsonMapper" class="com.fasterxml.jackson.databind.ObjectMapper" >
  </bean>
  <bean id="v2.redbackJacksonJsonMapper" class="com.fasterxml.jackson.databind.ObjectMapper" >
  </bean>
  <bean id="redbackJacksonXMLMapper" class="com.fasterxml.jackson.dataformat.xml.XmlMapper" >
  </bean>
  <bean id="redbackJacksonJsonConfigurator" class="org.apache.archiva.redback.rest.services.interceptors.JacksonJsonConfigurator" />


  <!-- CXF OpenApiFeature -->
  <bean id="redbackOpenApiFeature" class="org.apache.cxf.jaxrs.openapi.OpenApiFeature">
    <property name="scanKnownConfigLocations" value="false"/>
    <property name="configLocation" value="redback/openapi-configuration.yaml"/>
    <property name="scan" value="false"/>
    <property name="useContextBasedConfig" value="true"/>
    <!-- <property name="scannerClass" value="io.swagger.v3.jaxrs2.integration.JaxrsApplicationScanner"/> -->
  </bean>

  <jaxrs:server name="redbackServices" address="/redbackServices">

    <jaxrs:serviceBeans>
      <ref bean="userService#rest"/>
      <ref bean="loginService#rest"/>
      <ref bean="roleManagementService#rest"/>
      <ref bean="utilServices#rest"/>
      <ref bean="passwordService#rest"/>
      <ref bean="ldapGroupMappingService#rest"/>
    </jaxrs:serviceBeans>

    <jaxrs:providers>
      <ref bean="jsonProvider"/>
      <ref bean="xmlProvider"/>
      <ref bean="authenticationInterceptor#rest"/>
      <ref bean="permissionInterceptor#rest"/>
      <ref bean="redbackServiceExceptionMapper"/>
      <ref bean="passwordRuleViolationExceptionMapper"/>
      <ref bean="requestValidationInterceptor#rest" />
      <ref bean="threadLocalUserCleaner#rest"/>
    </jaxrs:providers>
   </jaxrs:server>

  <jaxrs:server name="v2.redback" address="/v2/redback">
    <jaxrs:serviceBeans>
      <ref bean="v2.userService#rest"/>
      <ref bean="v2.authenticationService#rest"/>
      <ref bean="v2.roleService#rest"/>
      <ref bean="v2.groupService#rest"/>
    </jaxrs:serviceBeans>

    <jaxrs:providers>
      <ref bean="v2.jsonProvider"/>
      <ref bean="bearerAuthInterceptor#rest"/>
      <ref bean="permissionInterceptor#rest"/>
      <ref bean="redbackServiceExceptionMapper"/>
      <ref bean="v2.passwordRuleViolationExceptionMapper"/>
      <ref bean="requestValidationInterceptor#rest" />
      <ref bean="threadLocalUserCleaner#rest"/>
    </jaxrs:providers>
    <jaxrs:features>
      <ref bean="redbackOpenApiFeature" />
    </jaxrs:features>
  </jaxrs:server>

</beans>