All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openid4java.discovery.yadis.YadisUrl Maven / Gradle / Ivy

There is a newer version: 1.0.0.0
Show newest version
/*
 * Copyright 2006-2008 Sxip Identity Corporation
 */

package org.openid4java.discovery.yadis;

import java.net.URL;
import java.net.MalformedURLException;

import org.openid4java.OpenIDException;
import org.openid4java.discovery.XriIdentifier;

/**
 * Wrapper class for various identifiers that are resolvable to URLs
 * and can be used as YadisURLs with the Yadis protocol.
 *
 * @author Marius Scurtescu, Johnny Bufu
 */
public class YadisUrl
{
    /**
     * A YadisURL is a regular URL, with a couple restrictions.
     */
    private URL _yadisUrl;

    /**
     * Constructs a URL object from a string;
     * needed by the YadisURL(String) constructor
     *
     * @param urlString         URL-type identifier in string format
     * @return                  URL object
     * @throws YadisException   if the provided string is not a valid URL
     */
    private static URL urlFromString(String urlString) throws YadisException
    {
        URL url;

        try
        {
            url = new URL(urlString);
        }
        catch (MalformedURLException e)
        {
            throw new YadisException("Invalid URL: " + urlString,
                    OpenIDException.YADIS_INVALID_URL, e);
        }

        return url;
    }

    /**
     * Contructs a YadisURL from a string;
     * assumes the string to be a URL-type identifier
     *
     * @param urlString         URL-type identifier in string format
     * @throws YadisException   if the provided string cannot be a YadisUrl
     */
    public YadisUrl(String urlString) throws YadisException
    {
        this(urlFromString(urlString));

        if (! isValid(this._yadisUrl))
            throw new YadisException(
                "The scheme name of a Yadis URL must be 'http' or 'https'",
                OpenIDException.YADIS_INVALID_SCHEME);

    }

    /**
     * Constructs a YadisURL from a URL object;
     * insures the schema is HTTP or HTTPS
     *
     * @param urlId             URL identifier
     * @throws YadisException   tf the URL identifier is not a valid YadisURL
     */
    public YadisUrl(URL urlId) throws YadisException
    {
        if (isValid(urlId))
            _yadisUrl = urlId;
        else
            throw new YadisException(
                "The scheme name of a Yadis URL must be 'http' or 'https'",
                OpenIDException.YADIS_INVALID_SCHEME);
    }

    /**
     * Validates a URL against the requirements for a YadisUrl.
     * 

* The URL must be absolute (the schema must be specified), * and the schema must be HTTP or HTTPS. * * @param url the URL to be validated * @return true if the URL is a valid YadisUrl, * or false otherwise */ private boolean isValid(URL url) { return url.getProtocol().equalsIgnoreCase("http") || url.getProtocol().equalsIgnoreCase("https"); } /** * Constructs a YadisURL from an XRI identifier. * * @param xriId The XRI identifier */ public YadisUrl(XriIdentifier xriId) throws YadisException { this(urlFromString(xriId.toURINormalForm())); } /** * Gets the URL to be used in Yadis transactions. */ public URL getUrl() { return _yadisUrl; } /** * Gets a string representation of the YadisURL. */ public String toString() { return _yadisUrl.toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy