<?xml version="1.0"?>

<!--
  ~ 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.
  -->
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure id='wac' class="org.eclipse.jetty.webapp.WebAppContext">

  <New id="validation_mail" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg>
      <Ref id="wac"/>
    </Arg>
    <Arg>mail/Session</Arg>
    <Arg>
      <New class="org.eclipse.jetty.jndi.factories.MailSessionReference">
        <Set name="user"></Set>
        <Set name="password"></Set>
        <Set name="properties">
          <New class="java.util.Properties">
            <Put name="mail.smtp.host">localhost</Put>
          </New>
        </Set>
      </New>
    </Arg>
  </New>

  <New id="continuum" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg>
      <Ref id="wac"/>
    </Arg>
    <Arg>jdbc/continuum</Arg>
    <Arg>
      <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
        <Set name="serverName">localhost</Set>
        <Set name="databaseName">continuum</Set>
        <Set name="user">root</Set>
        <Set name="password"></Set>
      </New>
    </Arg>
  </New>

  <!-- Users / Security Database -->

  <New id="users" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg>
      <Ref id="wac"/>
    </Arg>
    <Arg>jdbc/users</Arg>
    <Arg>
      <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
        <Set name="serverName">localhost</Set>
        <Set name="databaseName">users</Set>
        <Set name="user">root</Set>
        <Set name="password"></Set>
      </New>
    </Arg>
  </New>
</Configure>

