<!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="kafka">

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

  <!-- common library dependencies -->
  <allow pkg="java" />
  <allow pkg="scala" />
  <allow pkg="javax.management" />
  <allow pkg="org.slf4j" />
  <allow pkg="org.junit" />
  <allow pkg="org.easymock" />
  <allow pkg="java.security" />
  <allow pkg="javax.net.ssl" />
  <allow pkg="javax.security" />

  <allow pkg="kafka.common" />
  <allow pkg="kafka.utils" />
  <allow pkg="kafka.serializer" />
  <allow pkg="org.apache.kafka.common" />

  <!-- see KIP-544 for why KafkaYammerMetrics should be used instead of the global default yammer metrics registry
       https://cwiki.apache.org/confluence/display/KAFKA/KIP-544%3A+Make+metrics+exposed+via+JMX+configurable -->
  <disallow class="com.yammer.metrics.Metrics" />
  <allow pkg="com.yammer.metrics"/>

  <subpackage name="testkit">
    <allow pkg="kafka.metrics"/>
    <allow pkg="kafka.raft"/>
    <allow pkg="kafka.server"/>
    <allow pkg="kafka.tools"/>
    <allow pkg="org.apache.kafka.clients"/>
    <allow pkg="org.apache.kafka.controller"/>
    <allow pkg="org.apache.kafka.raft"/>
    <allow pkg="org.apache.kafka.test"/>
    <allow pkg="org.apache.kafka.metadata" />
    <allow pkg="org.apache.kafka.metalog" />
    <allow pkg="org.apache.kafka.server.common" />
  </subpackage>

  <subpackage name="tools">
    <allow pkg="org.apache.kafka.clients.admin" />
    <allow pkg="kafka.admin" />
    <allow pkg="joptsimple" />
    <allow pkg="org.apache.kafka.clients.consumer" />
  </subpackage>

  <subpackage name="coordinator">
    <allow class="kafka.server.MetadataCache" />
  </subpackage>

  <subpackage name="examples">
    <allow pkg="org.apache.kafka.clients" />
  </subpackage>

  <subpackage name="test">
    <allow pkg="org.apache.kafka.controller"/>
    <allow pkg="org.apache.kafka.metadata"/>
    <allow pkg="kafka.test.annotation"/>
    <allow pkg="kafka.test.junit"/>
    <allow pkg="kafka.network"/>
    <allow pkg="kafka.api"/>
    <allow pkg="kafka.server"/>
    <allow pkg="org.apache.kafka.clients.admin"/>
    <allow pkg="integration.kafka.server" class="IntegrationTestHelper"/>
    <subpackage name="annotation">
      <allow pkg="kafka.test"/>
    </subpackage>
    <subpackage name="junit">
      <allow pkg="kafka.test"/>
      <allow pkg="kafka.testkit"/>
      <allow pkg="org.apache.kafka.clients"/>
      <allow pkg="org.apache.kafka.metadata" />
    </subpackage>
  </subpackage>
</import-control>
