package org.eclipse.ecf.telephony.call;
import java.io.ObjectStreamException;
import java.io.Serializable;
/**
* A type-safe enum class to represent error details for an ICallSession. See {@link ICallSession#getErrorDetails()}.
*
*/
public class CallSessionErrorDetails implements Serializable {
private static final long serialVersionUID = 1119153779628660673L;
private static final String SERVICE_UNAVAILABLE_NAME = "service-unavailable"; //$NON-NLS-1$
private static final String UNSUPPORTED_MEDIA_NAME = "unsupported-media"; //$NON-NLS-1$
private static final String UNSUPPORTED_TRANSPORTS_NAME = "unsupported-transports"; //$NON-NLS-1$
private static final String BAD_REQUEST_NAME = "bad-request"; //$NON-NLS-1$
private static final String UNKWOWN_ERROR_NAME = "unknown-error"; //$NON-NLS-1$
private final transient String name;
// Protected constructor so that only subclasses are allowed to create
// instances
protected CallSessionErrorDetails(String name) {
this.name = name;
}
public static CallSessionErrorDetails fromString(String presenceType) {
if (presenceType == null)
return null;
if (presenceType.equals(SERVICE_UNAVAILABLE_NAME)) {
return SERVICE_UNAVAILABLE;
} else if (presenceType.equals(UNSUPPORTED_MEDIA_NAME)) {
return UNSUPPORTED_MEDIA;
} else if (presenceType.equals(UNSUPPORTED_TRANSPORTS_NAME)) {
return UNSUPPORTED_TRANSPORTS;
} else if (presenceType.equals(BAD_REQUEST_NAME)) {
return BAD_REQUEST;
} else if (presenceType.equals(UNKWOWN_ERROR_NAME)) {
return UNKWOWN_ERROR;
} else
return null;
}
public static final CallSessionErrorDetails SERVICE_UNAVAILABLE = new CallSessionErrorDetails(SERVICE_UNAVAILABLE_NAME);
public static final CallSessionErrorDetails UNSUPPORTED_MEDIA = new CallSessionErrorDetails(UNSUPPORTED_MEDIA_NAME);
public static final CallSessionErrorDetails UNSUPPORTED_TRANSPORTS = new CallSessionErrorDetails(UNSUPPORTED_TRANSPORTS_NAME);
public static final CallSessionErrorDetails BAD_REQUEST = new CallSessionErrorDetails(BAD_REQUEST_NAME);
public static final CallSessionErrorDetails UNKWOWN_ERROR = new CallSessionErrorDetails(UNKWOWN_ERROR_NAME);
public String toString() {
return name;
}
// This is to make sure that subclasses don't screw up these methods
public final boolean equals(Object that) {
return super.equals(that);
}
public final int hashCode() {
return super.hashCode();
}
// For serialization
private static int nextOrdinal = 0;
private final int ordinal = nextOrdinal++;
private static final CallSessionErrorDetails[] VALUES = {SERVICE_UNAVAILABLE, UNSUPPORTED_MEDIA, UNSUPPORTED_TRANSPORTS, BAD_REQUEST, UNKWOWN_ERROR};
/**
* @return Object
* @throws ObjectStreamException not thrown by this implementation.
*/
Object readResolve() throws ObjectStreamException {
return VALUES[ordinal];
}
}