001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.io;
003
004/**
005 * Exception thrown when a communication error with the OSM server occurs.
006 */
007public class OsmTransferException extends Exception {
008
009    private String url = OsmApi.getOsmApi().getBaseUrl();
010
011    /**
012     * Constructs an {@code OsmTransferException} with {@code null} as its error detail message.
013     * The cause is not initialized, and may subsequently be initialized by a call to {@link #initCause}.
014     */
015    public OsmTransferException() {
016    }
017
018    /**
019     * Constructs an {@code OsmTransferException} with the specified detail message.
020     * The cause is not initialized, and may subsequently be initialized by a call to {@link #initCause}.
021     *
022     * @param message The detail message (which is saved for later retrieval by the {@link #getMessage} method)
023     */
024    public OsmTransferException(String message) {
025        super(message);
026    }
027
028    /**
029     * Constructs an {@code OsmTransferException} with the specified cause and a detail message of
030     * <tt>(cause==null ? null : cause.toString())</tt>
031     * (which typically contains the class and detail message of <tt>cause</tt>).
032     *
033     * @param cause the cause (which is saved for later retrieval by the {@link #getCause} method).
034     *              A <tt>null</tt> value is permitted, and indicates that the cause is nonexistent or unknown.
035     */
036    public OsmTransferException(Throwable cause) {
037        super(cause);
038    }
039
040    /**
041     * Constructs an {@code OsmTransferException} with the specified detail message and cause.
042     *
043     * <p> Note that the detail message associated with {@code cause} is <i>not</i> automatically incorporated
044     * into this exception's detail message.
045     *
046     * @param message The detail message (which is saved for later retrieval by the {@link #getMessage} method)
047     * @param cause   The cause (which is saved for later retrieval by the {@link #getCause} method).
048     *                A null value is permitted, and indicates that the cause is nonexistent or unknown.
049     *
050     */
051    public OsmTransferException(String message, Throwable cause) {
052        super(message, cause);
053    }
054
055    /**
056     * Sets the URL related to this error.
057     * @param url the URL related to this error (which is saved for later retrieval by the {@link #getUrl} method).
058     */
059    public void setUrl(String url) {
060        this.url = url;
061    }
062
063    /**
064     * Gets the URL related to this error.
065     * @return API base URL or URL set using the {@link #setUrl} method
066     */
067    public String getUrl() {
068        return url;
069    }
070}