<!DOCTYPE import-control PUBLIC
        "-//Puppy Crawl//DTD Import Control 1.1//EN"
        "http://www.puppycrawl.com/dtds/import_control_1_1.dtd">
<!--
 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.
-->

<import-control pkg="org.apache.kafka">

    <!-- THINK HARD ABOUT THE LAYERING OF THE PROJECT BEFORE CHANGING THIS FILE -->

    <!-- common library dependencies -->
    <allow pkg="java" />
    <allow pkg="javax.management" />
    <allow pkg="org.slf4j" />
    <allow pkg="org.junit" />
    <allow pkg="org.opentest4j" />
    <allow pkg="org.hamcrest" />
    <allow pkg="org.mockito" />
    <allow pkg="org.easymock" />
    <allow pkg="org.powermock" />
    <allow pkg="java.security" />
    <allow pkg="javax.net.ssl" />
    <allow pkg="javax.security" />
    <allow pkg="org.ietf.jgss" />
    <allow pkg="net.jqwik.api" />

    <!-- no one depends on the server -->
    <disallow pkg="kafka" />

    <!-- anyone can use public classes -->
    <allow pkg="org.apache.kafka.common" exact-match="true" />
    <allow pkg="org.apache.kafka.common.security" />
    <allow pkg="org.apache.kafka.common.serialization" />
    <allow pkg="org.apache.kafka.common.utils" />
    <allow pkg="org.apache.kafka.common.errors" exact-match="true" />
    <allow pkg="org.apache.kafka.common.memory" />

    <!-- persistent collection factories/non-library-specific wrappers -->
    <allow pkg="org.apache.kafka.server.immutable" exact-match="true" />

    <subpackage name="queue">
        <allow pkg="org.apache.kafka.test" />
    </subpackage>

    <subpackage name="server">
        <allow pkg="org.apache.kafka.common" />
        <allow pkg="joptsimple" />

        <subpackage name="common">
            <allow pkg="org.apache.kafka.server.common" />
        </subpackage>

        <subpackage name="immutable">
            <allow pkg="org.apache.kafka.server.util"/>
            <!-- only the factory package can use persistent collection library-specific wrapper implementations -->
            <!-- the library-specific wrapper implementation for PCollections -->
            <allow pkg="org.apache.kafka.server.immutable.pcollections" />
            <subpackage name="pcollections">
                <allow pkg="org.pcollections" />
            </subpackage>
        </subpackage>

        <subpackage name="metrics">
            <allow pkg="com.yammer.metrics" />
        </subpackage>
    </subpackage>

</import-control>
