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

<!-- $Id$
     $Source$
     $Name$
  -->

<config>

  <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
  <jmx />

  <dataDir>${solr.data.dir:}</dataDir>

  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>

  <updateHandler class="solr.DirectUpdateHandler2">
  </updateHandler>

  <requestHandler name="/update"     class="solr.XmlUpdateRequestHandler" />

  <!-- test MCF Security Filter settings -->
  <searchComponent name="mcf-param" class="org.apache.solr.mcf.ManifoldCFSearchComponent" >
    <str name="AuthorityServiceBaseURL">http://localhost:8346/mcf-as</str>
    <int name="SocketTimeOut">3000</int>
    <str name="AllowAttributePrefix">aap-</str>
    <str name="DenyAttributePrefix">dap-</str>
  </searchComponent>

  <searchComponent name="mcf" class="org.apache.solr.mcf.ManifoldCFSearchComponent" >
    <str name="AuthorityServiceBaseURL">http://localhost:8346/mcf-as</str>
  </searchComponent>

  <requestHandler name="/mcf" class="solr.SearchHandler" startup="lazy">
    <lst name="invariants">
      <bool name="mcf">true</bool>
    </lst>
    <lst name="defaults">
      <str name="echoParams">all</str>
    </lst>
    <arr name="components">
      <str>query</str>
      <str>mcf</str>
    </arr>
  </requestHandler>

</config>
