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

if=org.apache.jsieve.commands.If
else=org.apache.jsieve.commands.Else
elsif=org.apache.jsieve.commands.Elsif
require=org.apache.jsieve.commands.Require
stop=org.apache.jsieve.commands.Stop
# RFC3082 - Implementations MUST support these
keep=org.apache.jsieve.commands.Keep
discard=org.apache.jsieve.commands.Discard
redirect=org.apache.jsieve.commands.Redirect
# RFC3082 - Implementations SHOULD support these
reject=org.apache.jsieve.commands.optional.Reject
fileinto=org.apache.jsieve.commands.optional.FileInto
# JUnit Commands for Testing
throwtestexception=org.apache.jsieve.commands.ThrowTestException
# Extension Commands
log=org.apache.jsieve.commands.extensions.Log
