<?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. -->  

<beans:beans xmlns="http://mina.apache.org/ftpserver/spring/v1"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
       http://mina.apache.org/ftpserver/spring/v1 https://mina.apache.org/ftpserver-project/ftpserver-1.0.xsd    
       ">
  <context:property-placeholder location="src/test/resources/spring-config/placeholder.properties"/>
    
  <server id="server">
    <listeners>
      <listener name="listener0">
        <beans:bean class="org.apache.ftpserver.config.spring.MyCustomListener">
          <beans:property name="port" value="${port1}"/>
        </beans:bean>
      </listener>

      <listener name="listener1">
        <beans:bean class="org.apache.ftpserver.config.spring.MyCustomListener">
          <beans:property name="port" value="${port2}"/>
        </beans:bean>
      </listener>
    </listeners>
  </server>
</beans:beans>
