<?xml version="1.0"  encoding="UTF-8"?>
<!--
  ============LICENSE_START==========================================
  org.onap.aai
  ===================================================================
  Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
  Copyright © 2017-2018 Amdocs
  ===================================================================
  Licensed 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.
  ============LICENSE_END============================================
  -->

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure id="ajsc-server" class="org.eclipse.jetty.server.Server">
	<!-- DO NOT REMOVE!!!! This is setting up the AJSC Context -->
	<New id="ajscContext" class="org.eclipse.jetty.webapp.WebAppContext">
		<Set name="contextPath"><SystemProperty name="AJSC_CONTEXT_PATH" /></Set>
		<Set name="extractWAR">true</Set>
		<Set name="tempDirectory"><SystemProperty name="AJSC_TEMP_DIR" /></Set>
		<Set name="war"><SystemProperty name="AJSC_WAR_PATH" /></Set>
		<Set name="descriptor"><SystemProperty name="AJSC_HOME" />/etc/runner-web.xml</Set>
		<Set name="overrideDescriptor"><SystemProperty name="AJSC_HOME" />/etc/ajsc-override-web.xml</Set>
		<Set name="throwUnavailableOnStartupException">true</Set>
		<Set name="servletHandler">
			<New class="org.eclipse.jetty.servlet.ServletHandler">
				<Set name="startWithUnavailable">false</Set>
			</New>
		</Set>
		<Set name="extraClasspath"><SystemProperty name="AJSC_HOME" />/extJars/httpclient-4.5.jar,<SystemProperty name="AJSC_HOME" />/extJars/httpcore-4.4.1.jar,<SystemProperty name="AJSC_HOME" />/extJars/json-20131018.jar</Set>
	</New>
	
	<Set name="handler">
		<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection">
			<Set name="Handlers">
				<Array type="org.eclipse.jetty.webapp.WebAppContext">
					<Item>
						<Ref refid="ajscContext" />
					</Item>
				</Array>
			</Set>
		</New>
	</Set>
	
	<Call name="addBean">
		<Arg>
			<New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
				<Set name="contexts">
					<Ref refid="Contexts" />
				</Set>
				<Call id="extAppHotDeployProvider" name="addAppProvider">
					<Arg>
						<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
							<Set name="monitoredDirName"><SystemProperty name="AJSC_HOME" />/extApps</Set>
							<Set name="scanInterval">10</Set>
							<Set name="extractWars">true</Set>
						</New>
					</Arg>
				</Call>
			</New>
		</Arg>
	</Call>
	
	<Call name="addConnector">
		<Arg>
			<New class="org.eclipse.jetty.server.ServerConnector">
				<Arg name="server">
					<Ref refid="ajsc-server" />
				</Arg>
				<Set name="port"><SystemProperty name="AJSC_HTTP_PORT" default="80" /></Set>
			</New>
		</Arg>
	</Call>
	
	<Get name="ThreadPool">
		<Set name="minThreads"><SystemProperty name="AJSC_JETTY_ThreadCount_MIN" /></Set>
		<Set name="maxThreads"><SystemProperty name="AJSC_JETTY_ThreadCount_MAX" /></Set>
		<Set name="idleTimeout"><SystemProperty name="AJSC_JETTY_IDLETIME_MAX" /></Set>
		<Set name="detailedDump">false</Set>
	</Get>
	
</Configure>
