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

#-----------------------------------------------------------------------------
# Shark configuration section
#-----------------------------------------------------------------------------

######################### NAME
enginename=Shark

# Location of the external repository
EXTERNAL_PACKAGES_REPOSITORY=framework/shark/xpdl

#------------------------- OFBiz custom -------------------------
RepositoryPersistenceManagerClassName=org.ofbiz.shark.repository.EntityRepositoryMgr
InstancePersistenceManagerClassName=org.ofbiz.shark.instance.EntityPersistentMgr
EventAuditManagerClassName=org.ofbiz.shark.audit.EntityAuditMgr
ParticipantMapPersistenceManagerClassName=org.ofbiz.shark.mapping.EntityParticipantMappingMgr
ApplicationMapPersistenceManagerClassName=org.ofbiz.shark.mapping.EntityApplicationMappingMgr
ScriptMapPersistenceManagerClassName=org.ofbiz.shark.mapping.EntityScriptMappingMgr
UserGroupManagerClassName=org.ofbiz.shark.user.PartyUserGroupMgr
AuthenticationManagerClassName=org.ofbiz.shark.auth.OfbizAuthenticationMgr
TransactionManagerClassName=org.ofbiz.shark.transaction.JtaSharkTransactionFactory
UserTransactionManagerClassName=org.ofbiz.shark.transaction.JtaUserTransactionFactory
#LoggingManagerClassName=org.ofbiz.shark.logging.DebugLoggingManager

#------------------------- Shark defaults -------------------------
SecurityManagerClassName=org.enhydra.shark.security.StandardSecurityManager
ScriptingManagerClassName=org.enhydra.shark.scripting.StandardScriptingManager
LimitAgentManagerClassName=org.enhydra.shark.limitagent.TimerLimitAgentManager
ToolAgentFactoryClassName=org.enhydra.shark.toolagent.ToolAgentFactoryImpl
SecurityManagerClassName=org.enhydra.shark.security.StandardSecurityManager
ScriptingManagerClassName=org.enhydra.shark.scripting.StandardScriptingManager
LoggingManagerClassName=org.enhydra.shark.logging.StandardLoggingManager

# Kernel configuration - OFBiz threaded kernel
ToolAgentManagerClassName=org.enhydra.shark.ThreadedToolAgentManager
ObjectFactoryClassName=org.enhydra.shark.SharkObjectFactory

#------------------------- Assignment -------------------------
AssignmentManagerClassName=org.enhydra.shark.assignment.StandardAssignmentManager
#Assignments.InitialReevaluation=false

#------------------------- Cache -------------------------
CacheManagerClassName=org.enhydra.shark.caching.LRUCacheMgr
#LRUProcessCache.Size=100
#LRUResourceCache.Size=100

#Cache.InitProcessCacheString=*
#Cache.InitResourceCacheString=*

#------------------------- Locking -------------------------
LockMasterClassName=org.enhydra.shark.processlocking.SimpleLockMaster
SimpleLockMaster.Timeout=-1
SimpleLockMaster.LockWaitTime=100

#=============================================================================
# TOOL AGENT SETTINGS
#
ToolAgent.ServiceToolAgent=org.ofbiz.shark.tool.ServiceToolAgent
ToolAgent.JavaClassToolAgent=org.enhydra.shark.toolagent.JavaClassToolAgent
ToolAgent.JavaScriptToolAgent=org.enhydra.shark.toolagent.JavaScriptToolAgent
ToolAgent.BshToolAgent=org.enhydra.shark.toolagent.BshToolAgent
ToolAgent.RuntimeApplicationToolAgent=org.enhydra.shark.toolagent.RuntimeApplicationToolAgent
ToolAgent.MailToolAgent=org.enhydra.shark.toolagent.MailToolAgent
ToolAgent.SOAPToolAgent=org.enhydra.shark.toolagent.SOAPToolAgent
DefaultToolAgent=org.enhydra.shark.toolagent.DefaultToolAgent

# Settings
Deadlines.pollingTime=300000
Limits.pollingTime=60000
