<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~ 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.
  -->
<plexus>
  <components>
    <component>
      <role>org.codehaus.plexus.registry.Registry</role>
      <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
      <role-hint>commons-configuration</role-hint>
      <configuration>
        <properties>
          <system/>
          <jndi prefix="java:comp/env" config-optional="true"/>
          <xml fileName="${appserver.base}/conf/shared.xml" config-optional="true"
               config-name="org.apache.maven.shared.app.user" config-at="org.apache.maven.shared.app"
               config-forceCreate="true"/>
          <properties fileName="${appserver.base}/conf/security.properties" config-optional="true"
                      config-at="org.codehaus.plexus.redback"/>
          <!-- Defaults -->
          <properties fileName="org/apache/maven/continuum/security.properties" config-at="org.codehaus.plexus.redback"/>
        </properties>
      </configuration>
    </component>
  

    <!--
    | The mail notifier
    |-->
    <component>
      <role>org.apache.maven.continuum.notification.Notifier</role>
      <role-hint>mail</role-hint>
      <implementation>org.apache.maven.continuum.notification.mail.MailContinuumNotifier</implementation>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.velocity.VelocityComponent</role>
        </requirement>
        <requirement>
          <role>org.apache.continuum.dao.ProjectDao</role>
        </requirement>
        <requirement>
          <role>org.apache.continuum.dao.BuildResultDao</role>
        </requirement>
        <requirement>
          <role>mailSender</role>
          <role-hint>continuum</role-hint>
        </requirement>
        <requirement>
          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
        </requirement>
        <requirement>
          <role>org.apache.maven.continuum.Continuum</role>
        </requirement>
        <requirement>
          <role>org.apache.maven.continuum.reports.surefire.ReportTestSuiteGenerator</role>
          <field-name>reportTestSuiteGenerator</field-name>
          <role-hint>default</role-hint>
        </requirement>        
      </requirements>
      <configuration>
        <from-mailbox></from-mailbox>
        <from-name></from-name>
        <timestamp-format>EEE d MMM yyyy HH:mm:ss Z</timestamp-format>
        <!-- Customizable mail subject.  Use any combination of literal text, or state, project, or build attributes.
          Examples: 
            "[continuum] BUILD ${state}: ${project.groupId} ${project.name}"
              results in "[continuum] BUILD SUCCESSFUL: foo.bar Hello World"
            
            "[continuum] BUILD ${state}: ${project.name} ${project.scmTag}" 
              results in "[continuum] BUILD SUCCESSFULL: Hello World Branch001"
            
            "[continuum] BUILD ${state}: ${project.name} ${project.version}" 
              results in "[continuum] BUILD SUCCESSFUL: Hello World 2.1-SNAPSHOT"
            
            "[continuum] BUILD ${state}: ${project.name} ${build.durationTime}" 
              results in "[continuum] BUILD SUCCESSFUL: Hello World 2 sec"
            
            "[continuum] BUILD ${state}: ${project.name}, Build Def - ${build.buildDefinition.description}" 
              results in "[continuum] BUILD SUCCESSFUL: Hello World, Build Def - Nightly Test Build"
         -->
        <subject-format>[continuum] BUILD ${state}: ${project.projectGroup.name} - ${project.name} - ${build.buildDefinition.description}</subject-format>
        <includeBuildResult>true</includeBuildResult>
        <includeBuildSummary>true</includeBuildSummary>
        <includeTestSummary>true</includeTestSummary>
        <includeOutput>false</includeOutput>
        <alwaysSend>false</alwaysSend>
        <!--
        Setting this propery will make Continuum send all emails to
        this address instead the address specified in the project
        configuration
        -->        
        <toOverride></toOverride>
      </configuration>
    </component>
  
    <!-- TODO remove when redback will not use anymore plexus-mail -->
    <component>
      <role>org.codehaus.plexus.mailsender.MailSender</role>
      <implementation>org.codehaus.plexus.mailsender.javamail.JndiJavamailMailSender</implementation>
      <configuration>
        <jndiSessionName>java:comp/env/mail/Session</jndiSessionName>
      </configuration>
    </component>

    <!--
    | The jabber notifier
    |-->
    <component>
      <role>org.apache.maven.continuum.notification.Notifier</role>
      <role-hint>jabber</role-hint>
      <implementation>org.apache.maven.continuum.notification.jabber.JabberContinuumNotifier</implementation>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.jabber.JabberClient</role>
        </requirement>
        <requirement>
          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
        </requirement>
        <requirement>
          <role>org.apache.continuum.dao.ProjectDao</role>
        </requirement>
        <requirement>
          <role>org.apache.continuum.dao.BuildResultDao</role>
        </requirement>
      </requirements>
      <configuration>
        <alwaysSend>false</alwaysSend>
        <!-- from-address/>
        <from-password/>
        <host/>
        <port/>
        <sslConnection>true</sslConnection -->
      </configuration>
    </component>

    <component>
      <role>org.codehaus.plexus.jabber.JabberClient</role>
      <implementation>org.codehaus.plexus.jabber.DefaultJabberClient</implementation>
    </component>

    <!--
    | The MSN notifier
    |-->
    <component>
      <role>org.apache.maven.continuum.notification.Notifier</role>
      <role-hint>msn</role-hint>
      <implementation>org.apache.maven.continuum.notification.msn.MsnContinuumNotifier</implementation>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.msn.MsnClient</role>
        </requirement>
        <requirement>
          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
        </requirement>
        <requirement>
          <role>org.apache.continuum.dao.ProjectDao</role>
        </requirement>
        <requirement>
          <role>org.apache.continuum.dao.BuildResultDao</role>
        </requirement>
      </requirements>
      <configuration>
        <alwaysSend>false</alwaysSend>
        <!-- from-address/>
        <from-password/ -->
      </configuration>
    </component>

    <component>
      <role>org.codehaus.plexus.msn.MsnClient</role>
      <implementation>org.codehaus.plexus.msn.DefaultMsnClient</implementation>
    </component>

    <!--
    | Velocity component used by the mail notifier
    |-->
    <component>
      <role>org.codehaus.plexus.velocity.VelocityComponent</role>
      <implementation>org.codehaus.plexus.velocity.DefaultVelocityComponent</implementation>
      <configuration>
        <properties>
          <property>
            <name>resource.loader</name>
            <value>threadContext</value>
          </property>
          <property>
            <name>threadContext.resource.loader.class</name>
            <value>org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader</value>
          </property>
          <property>
            <name>velocimacro.library</name>
            <value>org/apache/maven/continuum/notification/mail/templates/common.vm</value>
          </property>
        </properties>
      </configuration>
    </component>

    <component>
      <role>org.apache.maven.continuum.web.util.WorkingCopyContentGenerator</role>
      <implementation>org.apache.maven.continuum.web.util.WorkingCopyContentGenerator</implementation>
    </component>

    <component>
      <role>org.apache.maven.continuum.utils.ContinuumUrlValidator</role>
      <role-hint>continuumUrl</role-hint>
      <implementation>org.apache.maven.continuum.utils.ContinuumUrlValidator</implementation>
      <configuration>
        <allowedSchemes>
          <allowedScheme>http</allowedScheme>
          <allowedScheme>https</allowedScheme>
          <allowedScheme>ftp</allowedScheme>
          <!-- <allowedScheme>file</allowedScheme> -->
        </allowedSchemes>
      </configuration>
    </component>

    <component>
      <role>org.codehaus.plexus.jdo.JdoFactory</role>
      <role-hint>users</role-hint>
      <implementation>org.codehaus.plexus.jdo.DataSourceConfigurableJdoFactory</implementation>
      <configuration>

        <connectionFactoryName>java:comp/env/jdbc/users</connectionFactoryName>
        <shutdownConnectionFactoryName>java:comp/env/jdbc/usersShutdown</shutdownConnectionFactoryName>

        <!-- JPOX and JDO configuration -->
        <persistenceManagerFactoryClass>org.jpox.PersistenceManagerFactoryImpl</persistenceManagerFactoryClass>
        <otherProperties>
          <property>
            <name>org.jpox.autoCreateSchema</name>
            <value>true</value>
          </property>
          <property>
            <name>org.jpox.validateTables</name>
            <value>false</value>
          </property>
          <property>
            <name>org.jpox.validateConstraints</name>
            <value>false</value>
          </property>
          <property>
            <name>org.jpox.validateColumns</name>
            <value>false</value>
          </property>
          <property>
            <name>org.jpox.autoStartMechanism</name>
            <value>None</value>
          </property>
          <property>
            <name>org.jpox.transactionIsolation</name>
            <value>READ_COMMITTED</value>
          </property>
          <property>
            <name>org.jpox.poid.transactionIsolation</name>
            <value>READ_COMMITTED</value>
          </property>
          <property>
            <name>org.jpox.rdbms.dateTimezone</name>
            <value>JDK_DEFAULT_TIMEZONE</value>
          </property>
<!--
          <property>
            <name>org.jpox.identifier.case</name>
            <value>PreserveCase</value>
          </property>
-->
        </otherProperties>
      </configuration>
    </component>

    <component>
      <role>org.codehaus.plexus.jdo.JdoFactory</role>
      <implementation>org.codehaus.plexus.jdo.DataSourceConfigurableJdoFactory</implementation>
      <role-hint>continuum</role-hint>
      <configuration>
        <connectionFactoryName>java:comp/env/jdbc/continuum</connectionFactoryName>
        <shutdownConnectionFactoryName>java:comp/env/jdbc/continuum_shutdown</shutdownConnectionFactoryName>

        <persistenceManagerFactoryClass>org.jpox.PersistenceManagerFactoryImpl</persistenceManagerFactoryClass>

        <otherProperties>
          <!-- uncomment this property for mssql support - CONTINUUM-697 -->
          <!-- property>
            <name>javax.jdo.option.Mapping</name>
            <value>mssql</value>
          </property -->
          <property>
            <name>org.jpox.autoCreateSchema</name>
            <value>true</value>
          </property>
          <property>
            <name>org.jpox.validateTables</name>
            <value>false</value>
          </property>
          <property>
            <name>org.jpox.validateColumns</name>
            <value>false</value>
          </property>
          <property>
            <name>org.jpox.validateConstraints</name>
            <value>false</value>
          </property>
          <property>
            <name>org.jpox.autoStartMechanism</name>
            <value>None</value>
          </property>
          <property>
            <name>org.jpox.transactionIsolation</name>
            <value>READ_COMMITTED</value>
          </property>
          <property>
            <name>org.jpox.poid.transactionIsolation</name>
            <value>READ_COMMITTED</value>
          </property>
          <!-- this is required for some MySQL versions and configurations, see CONTINUUM-1113 -->
          <property>
            <name>org.jpox.rdbms.stringDefaultLength</name>
            <value>255</value>
          </property>
          <property>
            <name>org.jpox.autoCreateColumns</name>
            <value>true</value>
          </property>
			
<!--
          <property>
            <name>org.jpox.identifier.case</name>
            <value>PreserveCase</value>
          </property>
-->
        </otherProperties>
      </configuration>
    </component>

    <component>
      <role>org.codehaus.plexus.scheduler.Scheduler</role>
      <implementation>org.codehaus.plexus.scheduler.DefaultScheduler</implementation>
      <role-hint>default</role-hint>
      <configuration>
        <properties>
          <property>
            <name>org.quartz.scheduler.instanceName</name>
            <value>continuumScheduler</value>
          </property>
          <property>
            <name>org.quartz.threadPool.class</name>
            <value>org.quartz.simpl.SimpleThreadPool</value>
          </property>
          <property>
            <name>org.quartz.threadPool.threadCount</name>
            <value>7</value>
          </property>
          <property>
            <name>org.quartz.threadPool.threadPriority</name>
            <value>4</value>
          </property>
          <property>
            <name>org.quartz.jobStore.class</name>
            <value>org.quartz.simpl.RAMJobStore</value>
          </property>
        </properties>
      </configuration>
    </component>

    <!--
     | Logger manager
     -->
    <component>
      <role>org.codehaus.plexus.logging.LoggerManager</role>
      <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>
      <lifecycle-handler>basic</lifecycle-handler>
    </component>

    <!-- START SNIPPET: ldap -->
    <!-- 
       Ldap Authentication can be enabled by setting enabling these components and setting the following configuration options in your security.properties file

       ============================================================
       user.manager.impl=ldap
       ldap.bind.authenticator.enabled=true
       redback.default.admin=admin
       redback.default.guest=guest
       security.policy.password.expiration.enabled=false

       ldap.config.hostname=ldap.hostname
       ldap.config.port=389
       ldap.config.base.dn=o=com
       ldap.config.context.factory=com.sun.jndi.ldap.LdapCtxFactory
       ldap.config.bind.dn=uid=myusername,o=com
       ldap.config.password=s3cr3t
       #ldap.config.authentication.method=
       ============================================================

       * ldap.config.hostname - The hostname of the ldap server
       * ldap.config.port - The port of the ldap server
       * ldap.config.base.dn - The baseDn of the ldap system
       * ldap.config.context.factory - context factory for ldap connections
       * ldap.config.bind.dn - the core user used for authentication the ldap server, must be able to perform the necessary searches, etc.
       * ldap.config.password - password for the bindDn for the root ldap connection

       until this process is better documented, the following is the document for configuration ldap with redback
      
       http://redback.codehaus.org/integration/ldap.html
    -->

    <!--
    
    this component manages the connection to the ldap server
     -->

    <!-- component>
      <role>org.codehaus.plexus.redback.common.ldap.connection.LdapConnectionFactory</role>
      <role-hint>configurable</role-hint>
      <implementation>org.codehaus.plexus.redback.common.ldap.connection.ConfigurableLdapConnectionFactory</implementation>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.redback.configuration.UserConfiguration</role>
        </requirement>
      </requirements>
    </component-->
    
    <!-- 
    
    this component manages the mapping of attributes in ldap to user information in redback. To configure the mapping, you can add the following properties in your security.properties

       ============================================================
       ldap.config.mapper.attribute.email=mail
       ldap.config.mapper.attribute.fullname=givenName
       ldap.config.mapper.attribute.password=userPassword
       ldap.config.mapper.attribute.user.id=cn
       ldap.config.mapper.attribute.user.base.dn=
       ldap.config.mapper.attribute.user.object.class=inetOrgPerson
       ldap.config.mapper.attribute.user.filter=(attributeName=value)
       ============================================================


     * email-attribute - The name of the attribute on a user that contains the email address
     * full-name-attribute - The name of the attribute on a user that contains the users fullName
     * password-attribute - The name of the attribute containing the users password, used for the authentiction using the user manager and not the ldap bind authenticator
     * user-id-attribute - The name of the attribute containing the users userId, most commonly cn or sn.
     * user-base-dn - The base dn that will be subtree searched for users.
     * user-object-class - the objectClass used in the ldap server for indentifying users, most commonly inetOrgPerson.
     -->
    
    <!-- component>
      <role>org.codehaus.plexus.redback.common.ldap.UserMapper</role>
      <role-hint>ldap</role-hint>
      <implementation>org.codehaus.plexus.redback.common.ldap.LdapUserMapper</implementation>
      <configuration>
        <email-attribute>email</email-attribute>
        <full-name-attribute>givenName</full-name-attribute>
        <password-attribute>userPassword</password-attribute>
        <user-id-attribute>cn</user-id-attribute>
        <user-base-dn>o=com</user-base-dn>
        <user-object-class>inetOrgPerson</user-object-class>
      </configuration>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.redback.configuration.UserConfiguration</role>
        </requirement>
      </requirements>
    </component-->
    
    <!--
     
    If caching is desired to improve performance then make uncomment this and make sure the following configuration parameter is in the security.properties
     
    user.manager.impl=cached
    -->
     
    <!-- component>
      <role>org.codehaus.plexus.redback.users.UserManager</role>
      <role-hint>cached</role-hint>
      <implementation>org.codehaus.plexus.redback.users.cached.CachedUserManager</implementation>
      <description>CachedUserManager</description>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.redback.users.UserManager</role>
          <role-hint>ldap</role-hint>
          <field-name>userImpl</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.ehcache.EhcacheComponent</role>
          <role-hint>users</role-hint>
          <field-name>usersCache</field-name>
        </requirement>
      </requirements>
    </component-->
    
    <!-- 
    
    if using the user manager authenticator to authenticate the user and not the ldap bind authenticator make sure
    this definition has the correct password encoder
    
    Note: you should probably just use the ldap bind authenticator which is enabled by putting
    
    ldap.bind.authenticator.enabled=true
    
    in the security.properties
    -->
    
    <!-- component>
      <role>org.codehaus.plexus.redback.policy.UserSecurityPolicy</role>
      <role-hint>default</role-hint>
      <implementation>org.codehaus.plexus.redback.policy.DefaultUserSecurityPolicy</implementation>
      <description>User Security Policy.</description>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.redback.configuration.UserConfiguration</role>
          <field-name>config</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.PasswordEncoder</role>
          <role-hint>sha1</role-hint>
          <field-name>passwordEncoder</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.UserValidationSettings</role>
          <field-name>userValidationSettings</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.CookieSettings</role>
          <role-hint>rememberMe</role-hint>
          <field-name>rememberMeCookieSettings</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.CookieSettings</role>
          <role-hint>signon</role-hint>
          <field-name>signonCookieSettings</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.PasswordRule</role>
          <field-name>rules</field-name>
        </requirement>
      </requirements>
    </component-->
    <!-- END SNIPPET: ldap -->
  </components>

  <lifecycle-handler-manager implementation="org.codehaus.plexus.lifecycle.DefaultLifecycleHandlerManager">
    <default-lifecycle-handler-id>plexus</default-lifecycle-handler-id>
    <lifecycle-handlers>
      <lifecycle-handler implementation="org.codehaus.plexus.personality.plexus.PlexusLifecycleHandler">
        <id>plexus</id>
        <name>Plexus Lifecycle Handler</name>
        <begin-segment>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.LogEnablePhase"/>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.CompositionPhase"/>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.ContextualizePhase"/>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.AutoConfigurePhase"/>
          <phase implementation="org.codehaus.plexus.registry.RegistryConfigurePhase"/>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.ServiceablePhase"/>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializePhase"/>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.StartPhase"/>
        </begin-segment>
        <suspend-segment>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.SuspendPhase"/>
        </suspend-segment>
        <resume-segment>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.ResumePhase"/>
        </resume-segment>
        <end-segment>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.StopPhase"/>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.DisposePhase"/>
          <phase implementation="org.codehaus.plexus.personality.plexus.lifecycle.phase.LogDisablePhase"/>
        </end-segment>
      </lifecycle-handler>
    </lifecycle-handlers>
  </lifecycle-handler-manager>
</plexus>
