# -------------------------------------------------------------------
# $Id$
#
# This is the configuration file for Turbine.
#
# Note that strings containing "," (comma) characters must backslash
# escape the comma (i.e. '\,')
#
# -------------------------------------------------------------------

# -------------------------------------------------------------------
#
#  L O G 4 J - L O G G I N G
#
# -------------------------------------------------------------------

log4j.file = /conf/test/Log4j.properties
pipeline.default.descriptor = conf/turbine-classic-pipeline.xml


# If module.cache=true, then how large should we make the hashtables
# by default.

action.cache.size=20
layout.cache.size=10
navigation.cache.size=10
page.cache.size=5
screen.cache.size=50
scheduledjob.cache.size=10

# -------------------------------------------------------------------
#
#  M O D U L E  P A C K A G E S
#
# -------------------------------------------------------------------
# This is the "classpath" for Turbine.  In order to locate your own
# modules, you should add them to this path.  For example, if you have
# com.company.actions, com.company.screens, com.company.navigations,
# then this setting would be "com.company,org.apache.turbine.modules".
# This path is searched in order.  For example, Turbine comes with a
# screen module named "Login".  If you wanted to have your own screen
# module named "Login", then you would specify the path to your
# modules before the others.
#
# Note: org.apache.turbine.modules will always be added to the search
# path.  If it is not explictly added here, it will be added to the
# end.
#
# Default: org.apache.turbine.modules
# -------------------------------------------------------------------

module.packages=@MODULE_PACKAGES@


services.MerlinComponentService.classname=org.apache.turbine.services.avaloncomponent.TurbineMerlinComponentService
services.AvalonComponentService.classname=org.apache.turbine.services.avaloncomponent.TurbineAvalonComponentService
services.ComponentService.classname=org.apache.turbine.services.component.TurbineComponentService
services.PoolService.classname=org.apache.turbine.services.pool.TurbinePoolService
services.FactoryService.classname=org.apache.turbine.services.factory.TurbineFactoryService
services.RunDataService.classname=org.apache.turbine.services.rundata.TurbineRunDataService
services.ServletService.classname=org.apache.turbine.services.servlet.TurbineServletService
services.AssemblerBrokerService.classname=org.apache.turbine.services.assemblerbroker.TurbineAssemblerBrokerService
services.PullService.classname=org.apache.turbine.services.pull.TurbinePullService
services.TemplateService.classname=org.apache.turbine.services.template.TurbineTemplateService




services.RunDataService.default.run.data=org.apache.turbine.services.rundata.DefaultTurbineRunData
services.RunDataService.default.parameter.parser=org.apache.turbine.util.parser.DefaultParameterParser
services.RunDataService.default.cookie.parser=org.apache.turbine.util.parser.DefaultCookieParser

# -------------------------------------------------------------------
#
#  A S S E M B L E R  B R O K E R  S E R V I C E
#
# -------------------------------------------------------------------
# A list of AssemblerFactory classes that will be registered
# with TurbineAssemblerBrokerService
# -------------------------------------------------------------------

services.AssemblerBrokerService.screen=org.apache.turbine.services.assemblerbroker.util.java.JavaScreenFactory
#services.AssemblerBrokerService.screen=org.apache.turbine.services.assemblerbroker.util.python.PythonScreenFactory
services.AssemblerBrokerService.action=org.apache.turbine.services.assemblerbroker.util.java.JavaActionFactory
services.AssemblerBrokerService.layout=org.apache.turbine.services.assemblerbroker.util.java.JavaLayoutFactory
services.AssemblerBrokerService.page=org.apache.turbine.services.assemblerbroker.util.java.JavaPageFactory
services.AssemblerBrokerService.navigation=org.apache.turbine.services.assemblerbroker.util.java.JavaNavigationFactory
services.AssemblerBrokerService.scheduledjob=org.apache.turbine.services.assemblerbroker.util.java.JavaScheduledJobFactory


# -------------------------------------------------------------------
#
#  T E M P L A T E  S E R V I C E
#
# -------------------------------------------------------------------

# Roughly, the number of templates in each category.
#
# Defaults: layout=2, navigation=10, screen=50

services.TemplateService.layout.cache.size=2
services.TemplateService.navigation.cache.size=10
services.TemplateService.screen.cache.size=50

services.PullService.earlyInit= true

services.PullService.tools.per.request.refresh=true

tool.request.intake=org.apache.turbine.services.intake.IntakeTool
tool.request.l10n=org.apache.turbine.services.localization.LocalizationTool



services.AvalonComponentService.componentConfiguration = conf/test/fulcrumComponentConfiguration.xml
services.AvalonComponentService.componentRoles = conf/test/fulcrumRoleConfiguration.xml
services.AvalonComponentService.earlyInit=true
services.AvalonComponentService.lookup = org.apache.fulcrum.cache.GlobalCacheService


services.MerlinComponentService.earlyInit=true
services.MerlinComponentService.block.path=conf/test/merlin
services.MerlinComponentService.kernel=conf/test/merlin/kernel.xml
