<?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://jetty.mortbay.org/configure.dtd">

<Configure class="org.mortbay.jetty.webapp.WebAppContext">




<New id="validation_mail" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>mail/Session</Arg>
  <Arg>
    <New class="org.mortbay.naming.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>
          <Put name="mail.from">continuum@localhost</Put>
          <Put name="mail.senderName">Continuum</Put>
          <Put name="mail.debug">true</Put>
        </New>
      </Set>
    </New>
  </Arg>
</New>

<New id="archiva" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/archiva</Arg>
  <Arg>
    <New class="org.postgresql.ds.PGPoolingDataSource">
      <Set name="serverName">localhost</Set>
      <Set name="databaseName">archiva</Set>
      <Set name="user">postgres</Set>
      <Set name="password">sparky</Set>
    </New>
  </Arg>
</New>
<New id="archiva_shutdown" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/archiva_shutdown</Arg>
  <Arg>
    <New class="org.postgresql.ds.PGPoolingDataSource">
      <Set name="serverName">localhost</Set>
      <Set name="databaseName">archiva</Set>
      <Set name="user">postgres</Set>
      <Set name="password">sparky</Set>  
    </New>
  </Arg>
</New>
<New id="users" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/users</Arg>
  <Arg>
    <New class="org.postgresql.ds.PGPoolingDataSource">
      <Set name="serverName">localhost</Set>
      <Set name="databaseName">users</Set>
      <Set name="user">postgres</Set>
      <Set name="password">sparky</Set>
    </New>
  </Arg>
</New>
<New id="users_shutdown" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/users_shutdown</Arg>
  <Arg>
    <New class="org.postgresql.ds.PGPoolingDataSource">
      <Set name="serverName">localhost</Set>
      <Set name="databaseName">users</Set>
      <Set name="user">postgres</Set>
      <Set name="password">sparky</Set>  
    </New>
  </Arg>
</New>

</Configure>

