<?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.
-->
<!-- START SNIPPET: xbean -->
<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  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.0.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>

  <broker useJmx="false"  xmlns="http://activemq.apache.org/schema/core" persistent="false">

      <plugins>
		<simpleAuthenticationPlugin>
			<users>
				<authenticationUser username="jdoe" password="sunflower"
					groups="users"/>
				<authenticationUser username="admin" password="sunflower"
					groups="admin"/>
			</users>
		</simpleAuthenticationPlugin>

          <authorizationPlugin>
              <map>
                  <cachedLDAPAuthorizationMap
                      connectionURL="ldap://localhost:389"
                      connectionUsername="cn=admin,dc=activemq,dc=apache,dc=org"
                      connectionPassword="sunflower"
                      queueSearchBase="ou=Queue,ou=Destination,ou=ActiveMQ,dc=activemq,dc=apache,dc=org"
                      topicSearchBase="ou=Topic,ou=Destination,ou=ActiveMQ,dc=activemq,dc=apache,dc=org"
                      tempSearchBase="ou=Temp,ou=Destination,ou=ActiveMQ,dc=activemq,dc=apache,dc=org"
                      refreshInterval="300000"
                      legacyGroupMapping="false"
                  />
              </map>
          </authorizationPlugin>
      </plugins>


    <transportConnectors>
      <transportConnector uri="tcp://localhost:61616"/>
    </transportConnectors>

  </broker>

</beans>
<!-- END SNIPPET: xbean -->
