/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed 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.
*/
package net.java.sip.communicator.impl.protocol.jabber.extensions.jingle;
/**
* This enumeration contains the reason values that provide machine readable
* information about the condition that prompted the corresponding jingle
* action.
*
* @author Emil Ivov
*/
public enum Reason
{
/**
* A reason indicating that the party prefers to use an existing session
* with the peer rather than initiate a new session; the Jingle session ID
* of the alternative session SHOULD be provided as the XML character data
* of the <sid/> child.
*/
ALTERNATIVE_SESSION("alternative-session"),
/**
* A reason indicating that the party is busy and cannot accept a session.
*/
BUSY("busy"),
/**
* A reason indicating that the initiator wishes to formally cancel the
* session initiation request.
*/
CANCEL("cancel"),
/**
* A reason indicating that the action is related to connectivity problems.
*/
CONNECTIVITY_ERROR("connectivity-error"),
/**
* A reason indicating that the party wishes to formally decline the
* session.
*/
DECLINE("decline"),
/**
* A reason indicating that the session length has exceeded a pre-defined
* time limit (e.g., a meeting hosted at a conference service).
*/
EXPIRED("expired"),
/**
* A reason indicating that the party has been unable to initialize
* processing related to the application type.
*/
FAILED_APPLICATION("failed-application"),
/**
* A reason indicating that the party has been unable to establish
* connectivity for the transport method.
*/
FAILED_TRANSPORT("failed-transport"),
/**
* A reason indicating that the action is related to a non-specific
* application error.
*/
GENERAL_ERROR("general-error"),
/**
* A reason indicating that the entity is going offline or is no longer
* available.
*/
GONE("gone"),
/**
* A reason indicating that the party supports the offered application type
* but does not support the offered or negotiated parameters.
*/
INCOMPATIBLE_PARAMETERS("incompatible-parameters"),
/**
* A reason indicating that the action is related to media processing
* problems.
*/
MEDIA_ERROR("media-error"),
/**
* A reason indicating that the action is related to a violation of local
* security policies.
*/
SECURITY_ERROR("security-error"),
/**
* A reason indicating that the action is generated during the normal
* course of state management and does not reflect any error.
*/
SUCCESS("success"),
/**
* A reason indicating that a request has not been answered so the sender
* is timing out the request.
*/
TIMEOUT("timeout"),
/**
* A reason indicating that the party supports none of the offered
* application types.
*/
UNSUPPORTED_APPLICATIONS("unsupported-applications"),
/**
* A reason indicating that the party supports none of the offered
* transport methods.
*/
UNSUPPORTED_TRANSPORTS("unsupported-transports"),
/**
* A reason created for unsupported reasons(not defined in this enum).
*/
UNDEFINED("undefined");
/**
* The name of this direction.
*/
private final String reasonValue;
/**
* Creates a <tt>JingleAction</tt> instance with the specified name.
*
* @param reasonValue the name of the <tt>JingleAction</tt> we'd like
* to create.
*/
private Reason(String reasonValue)
{
this.reasonValue = reasonValue;
}
/**
* Returns the name of this reason (e.g. "success" or "timeout"). The name
* returned by this method is meant for use directly in the XMPP XML string.
*
* @return the name of this reason (e.g. "success" or "timeout").
*/
@Override
public String toString()
{
return reasonValue;
}
/**
* Returns a <tt>Reason</tt> value corresponding to the specified
* <tt>reasonValueStr</tt> or in other words {@link #SUCCESS} for
* "success" or {@link #TIMEOUT} for "timeout").
*
* @param reasonValueStr the action <tt>String</tt> that we'd like to
* parse.
* @return a <tt>JingleAction</tt> value corresponding to the specified
* <tt>jingleValueStr</tt>. Returns {@link #UNDEFINED} for invalid
* <tt>jingleValueStr</tt> values.
*
*/
public static Reason parseString(String reasonValueStr)
{
for (Reason value : values())
if (value.toString().equals(reasonValueStr))
return value;
return UNDEFINED;
}
}