<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->

<!-- $Id$ -->

<scheduler>

  <jobs>
    <job type="publish" class="org.apache.lenya.cms.scheduler.PublishingJob">
      <title>Publish</title>
      <parameters>
        <publisher class="org.apache.lenya.cms.publishing.DefaultFilePublisher"/>
      </parameters>
    </job>
  </jobs>
  
  <triggers>
    <trigger type="cron" class="org.quartz.CronTrigger">
      <title>Regular</title>
    </trigger>
    <trigger type="date" class="org.quartz.SimpleTrigger">
      <title>Once</title>
    </trigger>
    <trigger type="andreas" class="org.quartz.AndreasTrigger">
      <title>Andreas</title>
    </trigger>
  </triggers>
  
</scheduler>