<?xml version="1.0"?>
<!DOCTYPE import-control PUBLIC "-//Puppy Crawl//DTD Import Control 1.1//EN" "https://checkstyle.org/dtds/import_control_1_1.dtd">
<import-control pkg="org.springframework.boot">
	<allow pkg=".*" regex="true" />

	<subpackage name="autoconfigure">
		<subpackage name="web">
			<allow pkg="org.springframework.boot.web.server" />
			<allow pkg="org.springframework.boot.web.servlet.server" />
			<disallow pkg="org.springframework.boot.web" />
			<disallow pkg="org.springframework.web.servlet" />
			<disallow pkg="org.springframework.web.reactive" />
			<disallow pkg="javax.servlet" />
			<subpackage name="client">
				<allow pkg="org.springframework.boot.web.client" />
			</subpackage>
			<subpackage name="embedded">
				<allow pkg="org.springframework.boot.web.embedded" />
			</subpackage>
			<subpackage name="servlet">
				<allow pkg="javax.servlet" />
				<allow pkg="org.springframework.boot.web.embedded" />
				<allow pkg="org.springframework.boot.web.servlet" />
				<allow pkg="org.springframework.web.servlet" />
			</subpackage>
			<subpackage name="reactive">
				<allow pkg="org.springframework.boot.web.codec" />
				<allow pkg="org.springframework.boot.web.embedded" />
				<allow pkg="org.springframework.boot.web.reactive" />
				<allow pkg="org.springframework.web.reactive" />
			</subpackage>
		</subpackage>
	</subpackage>

	<!-- Endpoint infrastructure -->
	<subpackage name="actuate.endpoint">
		<disallow pkg="org.springframework.http" />
		<disallow pkg="org.springframework.web" />
		<subpackage name="web">
			<allow pkg="org.springframework.http" />
			<allow pkg="org.springframework.web" />
			<subpackage name="servlet">
				<disallow pkg="org.springframework.web.reactive" />
			</subpackage>
			<subpackage name="reactive">
				<disallow pkg="org.springframework.web.servlet" />
			</subpackage>
		</subpackage>
	</subpackage>

	<!-- Logging -->
	<subpackage name="logging">
		<disallow pkg="org.springframework.context" />
		<disallow pkg="org.springframework.boot.context" />
	</subpackage>

	<!-- Web related concerns -->
	<subpackage name="web">

		<!-- Lock things down -->
		<disallow pkg="org.springframework.boot.web" />
		<disallow pkg="org.springframework.web.servlet" />
		<disallow pkg="javax.servlet" />

		<!-- Common -->
		<subpackage name="client">
		</subpackage>
		<subpackage name="server">
			<disallow pkg="org.springframework.context" />
		</subpackage>
		<subpackage name="context">
			<allow pkg="org.springframework.boot.web.server" />
		</subpackage>

		<!-- Servlet -->
		<subpackage name="servlet">
			<allow pkg="javax.servlet" />
			<subpackage name="context">
				<allow pkg="org.springframework.boot.web.context" />
				<allow pkg="org.springframework.boot.web.server" />
				<allow pkg="org.springframework.boot.web.servlet.server" />
				<allow pkg="org.springframework.boot.web.servlet" />
			</subpackage>
			<subpackage name="filter">
				<allow pkg="javax.servlet" />
				<allow pkg="org.springframework.boot.web.servlet" />
			</subpackage>
			<subpackage name="server">
				<disallow pkg="org.springframework.context" />
				<allow pkg="org.springframework.boot.web.server" />
				<allow pkg="org.springframework.boot.web.servlet" />
			</subpackage>
			<subpackage name="support">
				<allow pkg="javax.servlet" />
				<allow pkg="org.springframework.boot.web.servlet" />
				<allow pkg="org.springframework.boot.web.server" />
			</subpackage>
			<subpackage name="view">
				<allow pkg="org.springframework.web.servlet" />
			</subpackage>
			<subpackage name="error">
				<allow pkg="org.springframework.web.servlet" />
			</subpackage>
		</subpackage>

		<!-- Reactive -->
		<subpackage name="reactive">
			<subpackage name="context">
				<allow pkg="org.springframework.boot.web.context" />
				<allow pkg="org.springframework.boot.web.server" />
				<allow pkg="org.springframework.boot.web.reactive.server" />
			</subpackage>
			<subpackage name="server">
				<allow pkg="org.springframework.boot.web.server" />
				<disallow pkg="org.springframework.context" />
			</subpackage>
			<subpackage name="result">
				<subpackage name="view">
					<allow pkg="org.springframework.boot.web.reactive.result.view" />
				</subpackage>
			</subpackage>
		</subpackage>

		<!-- Embedded Servers -->
		<subpackage name="embedded">
			<allow pkg="javax.servlet" />
			<allow pkg="org.springframework.boot.web.server" />
			<allow pkg="org.springframework.boot.web.servlet" />
			<allow pkg="org.springframework.boot.web.servlet.server" />
			<allow pkg="org.springframework.boot.web.reactive.server" />
		</subpackage>

	</subpackage>
</import-control>
