#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.
#---------------------------------------------------------------
# The default configuration for OpenWebBeans
#
# The default configuration is intended for a JDK and a simple ServletContainer
# like jetty, resin or tomcat.
#
#---------------------------------------------------------------


################################################################################################
################################### DEFAULT SPI CONFIGURATION SECTION ##########################
################################################################################################

# this is the basic configuration, thus it has a very low ordinal of 10
configuration.ordinal=10

################################### Default Container Lifecycle ################################
#Default implementation of org.apache.webbeans.corespi.ContainerLifecycle.
org.apache.webbeans.spi.ContainerLifecycle=org.apache.webbeans.lifecycle.StandaloneLifeCycle
################################################################################################

################################### Default Container Lifecycle ################################
# Use a specific DefiningClassService
# By default we try sun.misc.Unsafe, and if this is not allowed, we do use
# org.apache.webbeans.service.ClassLoaderProxyService as fallback
# org.apache.webbeans.spi.DefiningClassService=org.apache.webbeans.service.ClassLoaderProxyService
################################################################################################

################################### Default JNDI Service #######################################
#Default implementation of org.apache.webbeans.corespi.JNDIService.
org.apache.webbeans.spi.JNDIService=org.apache.webbeans.corespi.se.DefaultJndiService
################################################################################################

################################### Default Bean Definition Archive Service ####################################
org.apache.webbeans.spi.BeanArchiveService=org.apache.webbeans.xml.DefaultBeanArchiveService
################################################################################################

########################### Default ApplicationBoundary Service ################################
# Default implementation of the ApplicationBoundaryService.
# This service defines the 'outer boundary' classloader of each Application.
# For a WAR it is the WebAppClassLoader, for EARs it is the Ear ClassLoader.
# This is to e.g. prevent a producer method for a @RequestScoped EntityManager to use the
# shared tomcat/tomee/etc ClassLoader to be used for loading the generated proxy class
# as this would create mem leaks.
#
org.apache.webbeans.spi.ApplicationBoundaryService=org.apache.webbeans.corespi.se.DefaultApplicationBoundaryService
################################################################################################

################################### Default Scanner Service ####################################
#Default implementation of org.apache.webbeans.corespi.ScannerService.
org.apache.webbeans.spi.ScannerService=org.apache.webbeans.corespi.se.DefaultScannerService
################################################################################################

################################### Default Contexts Service ####################################
#Default implementation of org.apache.webbeans.corespi.ContextsService.
org.apache.webbeans.spi.ContextsService=org.apache.webbeans.corespi.se.DefaultContextsService
################################################################################################

################################### Default Contexts Service ####################################
# Default SecurityService implementation which directly invokes underlying classes
# without using a SecurityManager
org.apache.webbeans.spi.SecurityService=org.apache.webbeans.corespi.security.SimpleSecurityService
################################################################################################

################################ Default Implementation-Loader Service ###########################################
# Service which encapsulates the Service-Loader of Java 1.6+ to allow custom implementations to support Java 1.5
org.apache.webbeans.spi.LoaderService=org.apache.webbeans.service.DefaultLoaderService

################################################################################################
#################################### SEVERAL CONFIGURATION PARAMETERS ##########################
################################################################################################

#################################### Proxy forbidden packages ##################################
# which packages are forbidden for proxies, note that the defaults are always enforced
# so you don't need to add them when you append custom packages
# org.apache.webbeans.generator.proxyReservedPackages = java,javax,sun.misc
################################################################################################

#################################### Use Embedded OpenEJB Discovery ############################
#If it is true, it checks every bean class whether or not represent EJB Bean
org.apache.webbeans.spi.deployer.useEjbMetaDataDiscoveryService=false
################################################################################################


################################################################################################
# The maximum number of threads to use for BeansDeployer validation of our beans.
# We detect how many CPU cores we do have and then for each 300 or so beans, we use a new thread.
# But we will always stay below the max number of CPU cores and configured maxThreads.
org.apache.webbeans.deployer.maxThreads = 8
################################################################################################

################################################################################################
# The maximum number of threads to use for the ScannerService.
# We detect how many CPU cores we do have and use that as maximum threads or the configured maxThreads.
org.apache.webbeans.scanner.maxThreads = 8
################################################################################################

################################################################################################
# Archives bigger than this size (in bytes) get scanned concurrently by slices of about this size
# so a single big jar does not bound the scan time. Zero or negative disables the slicing.
org.apache.webbeans.scanner.sliceSize = 1048576
################################################################################################


################# Force not having Checked Exceptions in lifecycle methods  ####################
# If it is true, OWB forces that lifecycle methods like @PreDestroy and @PostConstruct must not
# throw any checked exceptions. This is the behaviour which is defined in the EE interceptor
# spec. Since this is sometimes way too restrictive, we allow to relax this rule by configuration
# The default value is 'true' internally.
# ATTENTION: this property works container wide!
# org.apache.webbeans.forceNoCheckedExceptions=true
################################################################################################

################################### Default Conversation Service ###############################
# Default implementation of org.apache.webbeans.corespi.ConversationService.
# This one does not support conversation propagation. It's basically a no-op implementation
# This will get overwritten in the web and jsf plugins
org.apache.webbeans.spi.ConversationService=org.apache.webbeans.conversation.DefaultConversationService
################################################################################################


############################### Implicit Injection Points ######################################
# By default CDI requires to use the @jakarta.inject.Inject annotation on any injection point.
# OpenWebBeans supports a smarter mode by automatically enable fields as injection points
# if they have a valid Qualifier.
org.apache.webbeans.spi.InjectionPointService=org.apache.webbeans.service.DefaultInjectionPointService
# This feature is off by default for performance reasons
org.apache.webbeans.service.DefaultInjectionPointService.implicitSupport = false
################################################################################################

####################### Archive Centric Beans.xml Scanning #####################################
# If true, will enable decorators, interceptors and alternatives based on the beans.xml
# of the appropriate archive.
org.apache.webbeans.useBDABeansXMLScanner=false
################################################################################################

########################### Proxy Implementation Mapping ######################################
# This allows mapping a Scope Annotation class to a specific InterceptorProxy which are
# typically sub classes of NormalScopedBeanInterceptorHandler
#
# org.apache.webbeans.proxy.mapping.jakarta.enterprise.context.RequestScoped=org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler
org.apache.webbeans.proxy.mapping.jakarta.enterprise.context.ApplicationScoped=org.apache.webbeans.intercept.ApplicationScopedBeanInterceptorHandler
org.apache.webbeans.proxy.mapping.jakarta.enterprise.context.RequestScoped=org.apache.webbeans.intercept.RequestScopedBeanInterceptorHandler
org.apache.webbeans.proxy.mapping.jakarta.enterprise.context.SessionScoped=org.apache.webbeans.intercept.SessionScopedBeanInterceptorHandler
################################################################################################

################################################################################################

############################ Eager Session Initialisation ######################################
# By default we do _not_ force session creation in our WebBeansConfigurationListener. We only create the
# Session if we really need the SessionContext. E.g. when we create a Contextual Instance in it.
# Sometimes this creates a problem as the HttpSession can only be created BEFORE anything got written back
# to the client.
# With this configuration you can choose between 3 settings
#  * true: the Session will _always_ eagerly be created at the begin of a request
#  * false: the Session will _never_ eagerly be created but only lazily when the first @SessionScoped bean gets used
#  * any other value will be interpreted as Java regular expression for request URIs which need eager Session initialization
org.apache.webbeans.web.eagerSessionInitialisation=false
################################################################################################


###################### Default Bean Discovery Mode for empty beans.xml #########################
# Default bean discovery mode for empty beans.xml
# There was a really wicked change in the CDI-4.0 specification which will break many applications.
# They switched the bean-discovery-mode of an empty beans.xml file (or a beans.xml without any version)
# from ALL to ANNOTATED (Despite warnings that his is totally backward incompatible and could easily have been avoided).
#
# The default in OWB is still ALL, but it can be configured to any other bean-discovery-mode with this config switch
################################################################################################
org.apache.webbeans.defaultBeanDiscoveryMode=ALL

######################### Java version for generated proxy classes #############################
# The Java Version to use for the generated proxy classes.
# If "auto" then we will pick the version of the current JVM.
# The default is set to "1.6" as some tools in jetty/tomcat/etc still
# cannot properly handle Java8 (mostly due to older Eclipse JDT versions).
# org.apache.webbeans.generator.javaVersion=1.6
################################################################################################

############################# Are Extension jar scanned ################################
# In CDI 1.0 it was done but no more in next versions.
# To avoid any impacting breaking change we still scan by default these jars
# but you can enforce the spec behavior setting that property to false.
# org.apache.webbeans.scanExtensionJars = true
################################################################################################

############################# Ignored CDI Extension class names ################################
# A comma separated list of CDI Extension class names which should get ignored.
# Each listed class name must be fully qualified.
# org.apache.webbeans.ignoredExtensions=org.acme.FooExtension
################################################################################################


######################### Bean Scanning ########################################################
# A list of known JARs/paths which should not be scanned for beans
# if they don't have an explicit META-INF/beans.xml
org.apache.webbeans.scanExclusionPaths=/jre/lib, \
        /Contents/Home/, \
        /dt.jar, \
        /tools.jar, \
        /bootstrap.jar, \
        /asm, \
        /javassist, \
        /xbean-, \
        /jconsole.jar, \
        /geronimo-connector,\
        /geronimo-j2ee-,\
        /geronimo-jpa_,\
        /geronimo-javamail,\
        /geronimo-transaction,\
        /commons-, \
        /arquillian-, \
        /bsh-, \
        /shrinkwrap-, \
        /junit-, \
        /testng-, \
        /openjpa-, \
        /bcel, \
        /hamcrest, \
        /mysql-connector, \
        /testng, \
        /idea_rt, \
        /eclipse, \
        /jcommander, \
        /tomcat, \
        /catalina, \
        /jasper, \
        /jsp-api, \
        /myfaces-api, \
        /myfaces-impl, \
        /jakarta.faces, \
        /servlet-api, \
        /javax, \
        /annotation-api, \
        /el-api, \
        /mojarra, \
        /sisu-guice-, \
        /sisu-inject-, \
        /aether-, \
        /plexus-, \
        /maven-, \
        /guava-, \
        /openwebbeans-, \
        /bcprov-jdk14-, \
        /bcmail-jdk14-, \
        /bctsp-jdk14-, \
        /bcmail-jdk14-, \
        /bcprov-jdk15on-, \
        /bcpkix-jdk15on-, \
        /ss_css2-, \
        /itext-, \
        /pd4ml-, \
        /xmlpull-, \
        /log4j-, \
        /slf4j-, \
        /logkit, \
        /gson-, \
        /xstream-, \
        /httpclient-, \
        /httpcore-, \
        /backport-util-concurrent-, \
        /xml-apis, \
        /xpp3_min-, \
        /bval-core, \
        /bval-jsr, \
        /hsqldb, \
        /quartz-2, \
        /jetty-, \
        /plexus-, \
        /surefire-, \
        /byte-buddy-, \
        /cglib-, \
        /okhttp-, \
        /htmlunit-, \
        /wagon-http-, \
        /wagon-provider-, \
        /wagon-file-, \
        /phantomjsdriver, \
        /error_prone_annotations-, \
        /j2objc-, \
        /xalan-, \
        /aopalliance-, \
        /owasp-, \
        /jdom2-, \
        /jfreechart-, \
        /stax-api-, \
        /jboss-logging-, \
        /barcode4j-, \
        /poi-, \
        /selenium-, \
        /graphene-, \
        /httpmime-, \
        /cssparser-, \
        /animal-sniffer-annotations-, \
        /objenesis-, \
        /xercesImpl-, \
        /neko-htmlunit-, \
        /checker-compat-qual-, \
        /awaitility-, \
        /okio-, \
        /jsr305-, \
        /guice-, \
        /jsoup-, \
        /classmate-, \
        /opentest4j-, \
        /apiguardian-, \
        /jcl-over-slf4j-, \
        /webdrivermanager-, \
        /lombok-, \
        /jackson-annotations-, \
        /jackson-core-, \
        /jackson-coreutils-, \
        /jackson-databind-, \
        /jackson-mapper-asl-, \
        /jackson-module-jaxb-annotations-, \
        /jna-, \
        /reactive-streams-, \
        /msg-simple-, \
        /jakarta.activation-api, \
        /jakarta.annotation-api, \
        /jakarta.el-api, \
        /jakarta.enterprise.cdi-api, \
        /jakarta.enterprise.lang-model, \
        /jakarta.inject-api, \
        /jakarta.interceptor-api
################################################################################################


######################### Bean Scanning ########################################################
# A list of known classes which might contain final methods but should be proxyable nonetheless
# Some of those classes are from the JDK and have been proxyable in older versions.
# This setting can be overridden as jvm param via -Djakarta.enterprise.inject.allowProxying.classes=...
# or an environment key with the name JAVAX_ENTERPRISE_INJECT_ALLOWPROXYING_CLASSES=...
jakarta.enterprise.inject.allowProxying.classes=\
        java.util.HashMap, \
        java.util.Calendar
################################################################################################

