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

-->
<enunciate slug="lens" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://enunciate.webcohesion.com/schemas/enunciate-2.0.0-M.4.xsd">
  <namespaces>
    <namespace uri="https://git-wip-us.apache.org/repos/asf/lens.git" id="lens"/>
  </namespaces>
  <modules>
  <api-classes>
    <include pattern="org.apache.lens.server.query.*"/>
    <include pattern="org.apache.lens.server.query.save.*"/>
    <include pattern="org.apache.lens.server.metastore.*"/>
    <include pattern="org.apache.lens.server.quota.*"/>
    <include pattern="org.apache.lens.server.scheduler.*"/>
    <include pattern="org.apache.lens.server.session.*"/>
  </api-classes>
    <docs docsDir="target/enunciate/lens-server"/>
    <csharp disabled="true"/>
    <c disabled="true"/>
    <obj-c disabled="true"></obj-c>
    <java-json-client disabled="true"/>
  </modules>
</enunciate>
