Package ptolemy.kernel.attributes
Class URIAttribute
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.util.Attribute
-
- ptolemy.kernel.util.SingletonAttribute
-
- ptolemy.kernel.attributes.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)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.util.NamedObj
NamedObj.ContainedObjectsIterator
-
-
Field Summary
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
-
-
Constructor Summary
Constructors Constructor Description URIAttribute(NamedObj container, java.lang.String name)
Construct an attribute with the given name contained by the specified container.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone(Workspace workspace)
Clone the attribute into the specified workspace.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.java.net.URI
getURI()
Get the URI that has been set by setURI(), or null if there is none.java.net.URL
getURL()
Get a URL representation of the URI that has been set by setURI(), or null if there is none.void
setURI(java.net.URI uri)
Set the value of the URI, and call the attributeChanged() method of the container.void
setURL(java.net.URL url)
Set the value of the URI by specifying a URL, and call the attributeChanged() method of the container.-
Methods inherited from class ptolemy.kernel.util.SingletonAttribute
setContainer
-
Methods inherited from class ptolemy.kernel.util.Attribute
_checkContainer, _getContainedObject, _propagateExistence, getContainer, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, setName, updateContent
-
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _description, _executeChangeRequests, _exportMoMLContents, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, _validateSettables, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, attributeTypeChanged, clone, containedObjectsIterator, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getElementName, getFullName, getModelErrorHandler, getName, getName, getPrototypeList, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateExistence, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, uniqueName, validateSettables, workspace
-
-
-
-
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 classAttribute
- 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()
-
-