# ***************************************************************************************************************************
# * 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.                                              *
# ***************************************************************************************************************************

#=======================================================================================================================
# Basic configuration file for SaaS microservices
# Subprojects can use this as a starting point.
#=======================================================================================================================

# What to do when the config file is saved.
# Possible values:
# 	NOTHING - Don't do anything. 
#	RESTART_SERVER - Restart the Jetty server.
#	RESTART_SERVICE - Shutdown and exit with code '3'.
saveConfigAction = RESTART_SERVER

#=======================================================================================================================
# Jetty settings
#=======================================================================================================================
[Jetty]

# Path of the jetty.xml file used to configure the Jetty server.
config = files/jetty.xml

# Resolve Juneau variables in the jetty.xml file.
resolveVars = true

# Port to use for the jetty server.
# You can specify multiple ports.  The first available will be used.  '0' indicates to try a random port.
# The resulting available port gets set as the system property "availablePort" which can be referenced in the 
# jetty.xml file as "$S{availablePort}" (assuming resolveVars is enabled).
port = 10000,0,0,0

#=======================================================================================================================
# REST settings
#=======================================================================================================================
[REST]

staticFiles = htdocs:files/htdocs

# Stylesheet to use for HTML views.
theme = servlet:/htdocs/themes/devops.css

headerIcon = servlet:/htdocs/images/juneau.png
headerLink = http://juneau.apache.org
footerIcon = servlet:/htdocs/images/asf.png
footerLink = http://www.apache.org

favicon = $C{REST/headerIcon}
header = <a href='$U{$C{REST/headerLink}}'><img src='$U{$C{REST/headerIcon}}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/></a>
footer = <a href='$U{$C{REST/footerLink}}'><img style='float:right;padding-right:20px;height:32px' src='$U{$C{REST/footerIcon}}'>

#=======================================================================================================================
# Console settings
#=======================================================================================================================
[Console]

enabled = true

# List of available console commands.
# These are classes that implements ConsoleCommand that allow you to submit commands to the microservice via
# the console.
# When listed here, the implementations must provide a no-arg constructor.
# They can also be provided dynamically by overriding the Microservice.createConsoleCommands() method.
commands = 
	org.apache.juneau.microservice.console.ExitCommand,
	org.apache.juneau.microservice.console.RestartCommand,
	org.apache.juneau.microservice.console.HelpCommand,
	org.apache.juneau.examples.rest.command.EchoCommand

#=======================================================================================================================
# Logger settings
#-----------------------------------------------------------------------------------------------------------------------
# See FileHandler Java class for details.
#=======================================================================================================================
[Logging]

# The directory where to create the log file.
# Default is "."
logDir = ./target/logs

# The name of the log file to create for the main logger.
# The logDir and logFile make up the pattern that's passed to the FileHandler
# constructor.
# If value is not specified, then logging to a file will not be set up.
logFile = microservice.%g.log

# Whether to append to the existing log file or create a new one.
append = false

# The SimpleDateFormat format to use for dates.
dateFormat = yyyy.MM.dd hh:mm:ss

# The log message format.
# The value can contain any of the following variables:
# 	{date} - The date, formatted per dateFormat.
#	{class} - The class name.
#	{method} - The method name.
#	{logger} - The logger name.
#	{level} - The log level name.
#	{msg} - The log message.
#	{threadid} - The thread ID.
#	{exception} - The localized exception message.
format = [{date} {level}] {msg}%n

# The maximum log file size.
# Suffixes available for numbers.
# See Config.getInt(String,int) for details.
limit = 1M

# Max number of log files.
count = 5

# Default log levels.
# Format is lax-JSON.
# Keys are logger names.
# Values are serialized Level POJOs (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)
levels = 
	{ 
		'': 'WARNING', 
		org.apache.juneau: 'WARNING', 
		org.eclipse.jetty: 'WARNING' 
	}

# Only print unique stack traces once and then refer to them by a simple 8 character hash identifier.
# Useful for preventing log files from filling up with duplicate stack traces.
useStackTraceHashes = true

# The default level for the console logger.
# Values are serialized Level POJOs (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)
consoleLevel = WARNING

# The default level for the file logger.
# Values are serialized Level POJOs (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)
# Default is INFO.
fileLevel = INFO

#=======================================================================================================================
# System properties
#-----------------------------------------------------------------------------------------------------------------------
# These are arbitrary system properties that can be set during startup.
#=======================================================================================================================
[SystemProperties]

# Configure Jetty for StdErrLog Logging
# org.eclipse.jetty.util.log.class = org.eclipse.jetty.util.log.StrErrLog

# Configure Jetty to log using java-util logging
org.eclipse.jetty.util.log.class = org.apache.juneau.microservice.JettyLogger

# Jetty logging level
org.eclipse.jetty.LEVEL = WARN

derby.stream.error.file = $C{Logging/logDir}/derby-errors.log

# Note that any configuration properties can also be set globally as system properties...

# Disable classpath resource caching.
# Useful if you're attached using a debugger and you're modifying classpath resources while running.
RestContext.useClasspathResourceCaching.b = false

#=======================================================================================================================
# DockerRegistryResource properties
#=======================================================================================================================
[DockerRegistry]
url = http://docker.apache.org:5000/v1

#=======================================================================================================================
# SqlQueryResource properties
#=======================================================================================================================
[SqlQueryResource]
driver = org.apache.derby.jdbc.EmbeddedDriver
directory = $S{user.dir}/target/derby/testDB
connectionUrl = jdbc:derby:$C{SqlQueryResource/directory};create=true
allowTempUpdates = true
includeRowNums = false

#=======================================================================================================================
# Source code location
#=======================================================================================================================
[Source]
gitHub = https://github.com/apache/juneau/blob/master/juneau-examples/juneau-examples-rest/src/main/java

#=======================================================================================================================
# TempDirResource properties
#=======================================================================================================================
[TempDirResource]
dir = $S{java.io.tmpdir}

#=======================================================================================================================
# PetStoreResource properties
#=======================================================================================================================
[PetStore]
headerImage = <a href='http://swagger.io'><img src='$U{servlet:/htdocs/cat.png}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/></a>
