Class URIAttribute

  • All Implemented Interfaces:
    java.lang.Cloneable, Changeable, Debuggable, DebugListener, Derivable, ModelErrorHandler, MoMLExportable, Moveable, Nameable, Singleton

    public class URIAttribute
    extends SingletonAttribute
    An attribute that identifies the URI from which the container was read. This attribute is not persistent by default. That is, it exports no MoML description. This makes sense because it should be set by the code that reads the container's specification. It is also a singleton, meaning that it will replace any previous attribute that has the same name and is an instance of the base class, SingletonAttribute.

    In most cases, this URI will specify a URL. The difference between a URL and a URI is that a URI is unevaluated. That is, it is a string representation of a resource, without any assurance or indication of a file, stream, or other associated network resource. To access a URI, it is common to create a URL from its specification.

    Unfortunately, URLs are not necessarily valid URIs. For example, a URL that has a space in it is not a valid URI, the space must be quoted (converted) to %20.

    Since:
    Ptolemy II 2.1
    Version:
    $Id$
    Author:
    Edward A. Lee
    Pt.AcceptedRating:
    Yellow (cxh)
    Pt.ProposedRating:
    Green (eal)
    • Constructor Detail

      • URIAttribute

        public URIAttribute​(NamedObj container,
                            java.lang.String name)
                     throws IllegalActionException,
                            NameDuplicationException
        Construct an attribute with the given name contained by the specified container. The container argument must not be null, or a NullPointerException will be thrown. This attribute will use the workspace of the container for synchronization and version counts. If the name argument is null, then the name is set to the empty string. The object is added to the directory of the workspace if the container is null. Increment the version of the workspace.
        Parameters:
        container - The container.
        name - The name of this attribute.
        Throws:
        IllegalActionException - If the attribute is not of an acceptable class for the container, or if the name contains a period.
        NameDuplicationException - If the name coincides with an attribute already in the container.
    • Method Detail

      • clone

        public java.lang.Object clone​(Workspace workspace)
                               throws java.lang.CloneNotSupportedException
        Clone the attribute into the specified workspace. The resulting object has a null value for the value of the URI.
        Overrides:
        clone in class Attribute
        Parameters:
        workspace - The workspace for the cloned object.
        Returns:
        A new attribute.
        Throws:
        java.lang.CloneNotSupportedException - If a derived class contains an attribute that cannot be cloned.
        See Also:
        NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)
      • getModelURI

        public static java.net.URI getModelURI​(NamedObj container)
        Return the URI from which the specified model was read, or null if there is no such URI. This is obtained by finding a URIAttribute in the first container above the specified container in the hierarchy that has such an attribute. Note that this URI may represent a file on the local filesystem, in which case it will use the "file" scheme.
        Parameters:
        container - The container to start searching.
        Returns:
        A URI, or null if none can be found.
      • getURI

        public java.net.URI getURI()
        Get the URI that has been set by setURI(), or null if there is none.
        Returns:
        The URI.
        See Also:
        setURI(URI)
      • getURL

        public java.net.URL getURL()
                            throws java.net.MalformedURLException
        Get a URL representation of the URI that has been set by setURI(), or null if there is none. For this to succeed, it is necessary that the URI be absolute or an IllegalArgumentException will be thrown.
        Returns:
        A new URL.
        Throws:
        java.net.MalformedURLException - If the URI cannot be converted to a URL.
        java.lang.IllegalArgumentException - If the URI is not absolute.
        See Also:
        setURL(URL)
      • setURI

        public void setURI​(java.net.URI uri)
                    throws IllegalActionException
        Set the value of the URI, and call the attributeChanged() method of the container.
        Parameters:
        uri - The new URI.
        Throws:
        IllegalActionException - If the change is not acceptable to the container.
        See Also:
        getURI()
      • setURL

        public void setURL​(java.net.URL url)
                    throws IllegalActionException
        Set the value of the URI by specifying a URL, and call the attributeChanged() method of the container.
        Parameters:
        url - The URL.
        Throws:
        IllegalActionException - If the change is not acceptable to the container.
        See Also:
        getURL()