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

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

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

################################# Conversation Support #########################################
org.apache.webbeans.application.supportsConversation=false
################################################################################################

################################# Injection Support #########################################
org.apache.webbeans.application.supportsImplicitQualifierInjection=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
################################################################################################

####################### 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.javax.enterprise.context.RequestScoped=org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler
org.apache.webbeans.proxy.mapping.javax.enterprise.context.ApplicationScoped=org.apache.webbeans.intercept.ApplicationScopedBeanInterceptorHandler
org.apache.webbeans.proxy.mapping.javax.enterprise.context.RequestScoped=org.apache.webbeans.intercept.RequestScopedBeanInterceptorHandler
org.apache.webbeans.proxy.mapping.javax.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
################################################################################################


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

############################# 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, \
        /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-, \
        /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-
################################################################################################


######################### 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 -Djavax.enterprise.inject.allowProxying.classes=...
# or an environment key with the name JAVAX_ENTERPRISE_INJECT_ALLOWPROXYING_CLASSES=...
javax.enterprise.inject.allowProxying.classes=\
        java.util.HashMap, \
        java.util.Calendar
################################################################################################

