Interface Source

  • All Superinterfaces:
    Base, java.lang.Cloneable, Element, ExtensibleElement, java.lang.Iterable<Element>
    All Known Subinterfaces:
    Feed

    public interface Source
    extends ExtensibleElement

    Per RFC4287:

      If an atom:entry is copied from one feed into another feed, then the
      source atom:feed's metadata (all child elements of atom:feed other
      than the atom:entry elements) MAY be preserved within the copied
      entry by adding an atom:source child element, if it is not already
      present in the entry, and including some or all of the source feed's
      Metadata elements as the atom:source element's children.  Such
      metadata SHOULD be preserved if the source atom:feed contains any of
      the child elements atom:author, atom:contributor, atom:rights, or
      atom:category and those child elements are not present in the source
      atom:entry.
    
      atomSource =
         element atom:source {
            atomCommonAttributes,
            (atomAuthor*
             & atomCategory*
             & atomContributor*
             & atomGenerator?
             & atomIcon?
             & atomId?
             & atomLink*
             & atomLogo?
             & atomRights?
             & atomSubtitle?
             & atomTitle?
             & atomUpdated?
             & extensionElement*)
         }
    
      The atom:source element is designed to allow the aggregation of
      entries from different feeds while retaining information about an
      entry's source feed.  For this reason, Atom Processors that are
      performing such aggregation SHOULD include at least the required
      feed-level Metadata elements (atom:id, atom:title, and atom:updated)
      in the atom:source element.
     
    • Method Detail

      • getAuthor

        Person getAuthor()
        Returns the first author listed for the entry
        Returns:
        This feed's author
      • getAuthors

        java.util.List<Person> getAuthors()
        Returns the complete set of authors listed for the entry
        Returns:
        This feeds list of authors
      • addAuthor

        <T extends Source> T addAuthor​(Person person)
        Adds an individual author to the entry
        Parameters:
        person - an atom:author element
      • addAuthor

        Person addAuthor​(java.lang.String name)
        Adds an author
        Parameters:
        name - The author name
        Returns:
        The newly created atom:author element
      • addAuthor

        Person addAuthor​(java.lang.String name,
                         java.lang.String email,
                         java.lang.String iri)
        Adds an author
        Parameters:
        name - The author name
        email - The author email
        iri - The author iri
        Returns:
        The newly created atom:author element
        Throws:
        IRISyntaxException - if the iri is malformed
      • getCategories

        java.util.List<Category> getCategories()
        Lists the complete set of categories listed for the entry
        Returns:
        A listing of app:category elements
      • getCategories

        java.util.List<Category> getCategories​(java.lang.String scheme)
        Lists the complete set of categories using the specified scheme
        Parameters:
        scheme - A Scheme IRI
        Returns:
        The listing of app:category elements
        Throws:
        IRISyntaxException - if the scheme is malformed
      • addCategory

        <T extends Source> T addCategory​(Category category)
        Adds an individual category to the entry
        Parameters:
        category - A atom:category element
      • addCategory

        Category addCategory​(java.lang.String term)
        Adds a category to the feed
        Parameters:
        term - A category term
        Returns:
        The newly created atom:category element
      • addCategory

        Category addCategory​(java.lang.String scheme,
                             java.lang.String term,
                             java.lang.String label)
        Adds a category to the feed
        Parameters:
        scheme - A category scheme
        term - A category term
        label - The human readable label
        Returns:
        the newly created atom:category element
        Throws:
        IRISyntaxException - if the scheme is malformed
      • getContributors

        java.util.List<Person> getContributors()
        Lists the complete set of contributors for this entry
        Returns:
        A listing of atom:contributor elements
      • addContributor

        <T extends Source> T addContributor​(Person person)
        Adds an individual contributor to this entry
        Parameters:
        person - a atom:contributor element
      • addContributor

        Person addContributor​(java.lang.String name)
        Adds a contributor
        Parameters:
        name - The name of a contributor
        Returns:
        The newly created atom:contributor element
      • addContributor

        Person addContributor​(java.lang.String name,
                              java.lang.String email,
                              java.lang.String iri)
        Adds a contributor
        Parameters:
        name - The contributor name
        email - The contributor email
        iri - The contributor uri
        Returns:
        The atom:contributor element
        Throws:
        IRISyntaxException - if the iri is malformed
      • getGenerator

        Generator getGenerator()
        RFC4287: The "atom:generator" element's content identifies the agent used to generate a feed, for debugging and other purposes.
        Returns:
        The atom:generator
      • setGenerator

        <T extends Source> T setGenerator​(Generator generator)
        RFC4287: The "atom:generator" element's content identifies the agent used to generate a feed, for debugging and other purposes.
        Parameters:
        generator - A atom:generator element
      • setGenerator

        Generator setGenerator​(java.lang.String iri,
                               java.lang.String version,
                               java.lang.String value)
        RFC4287: The "atom:generator" element's content identifies the agent used to generate a feed, for debugging and other purposes.
        Parameters:
        iri - The iri attribute
        version - The version attribute
        value - The value attribute
        Returns:
        A newly created atom:generator element
        Throws:
        IRISyntaxException - if the iri is malformed
      • getIconElement

        IRIElement getIconElement()
        RFC4287: The "atom:icon" element's content is an IRI reference [RFC3987] that identifies an image that provides iconic visual identification for a feed... The image SHOULD have an aspect ratio of one (horizontal) to one (vertical) and SHOULD be suitable for presentation at a small size.
        Returns:
        the atom:icon element
      • setIconElement

        <T extends Source> T setIconElement​(IRIElement iri)
        RFC4287: The "atom:icon" element's content is an IRI reference [RFC3987] that identifies an image that provides iconic visual identification for a feed... The image SHOULD have an aspect ratio of one (horizontal) to one (vertical) and SHOULD be suitable for presentation at a small size.
        Parameters:
        iri - The atom:icon element
      • setIcon

        IRIElement setIcon​(java.lang.String iri)
        RFC4287: The "atom:icon" element's content is an IRI reference [RFC3987] that identifies an image that provides iconic visual identification for a feed... The image SHOULD have an aspect ratio of one (horizontal) to one (vertical) and SHOULD be suitable for presentation at a small size.
        Parameters:
        iri - The atom:icon IRI value
        Throws:
        IRISyntaxException - if the iri is malformed
      • getIcon

        IRI getIcon()
        RFC4287: The "atom:icon" element's content is an IRI reference [RFC3987] that identifies an image that provides iconic visual identification for a feed... The image SHOULD have an aspect ratio of one (horizontal) to one (vertical) and SHOULD be suitable for presentation at a small size.
        Returns:
        The atom:icon value
        Throws:
        IRISyntaxException - if the atom:icon value is malformed
      • getIdElement

        IRIElement getIdElement()
        RFC4287: The "atom:id" element conveys a permanent, universally unique identifier for an entry or feed.
        Returns:
        The atom:id element
      • setIdElement

        <T extends Source> T setIdElement​(IRIElement id)
        RFC4287: The "atom:id" element conveys a permanent, universally unique identifier for an entry or feed.
        Parameters:
        id - A atom:id element
      • getId

        IRI getId()
        Returns the universally unique identifier for this feed
        Returns:
        The atom:id value
        Throws:
        IRISyntaxException - if the atom:id is malformed
      • setId

        IRIElement setId​(java.lang.String id)
        Sets the universally unique identifier for this feed
        Parameters:
        id - The atom:id value
        Returns:
        The newly created atom:id element
        Throws:
        IRISyntaxException - if the id is malformed
      • newId

        IRIElement newId()
        Creates a new randomized atom:id for the entry
      • setId

        IRIElement setId​(java.lang.String id,
                         boolean normalize)
        Sets the universally unique identifier for this feed
        Parameters:
        id - The atom:id value
        normalize - True if the atom:id value should be normalized
        Returns:
        The newly created atom:id element
        Throws:
        IRISyntaxException - if the id is malformed
      • getLinks

        java.util.List<Link> getLinks()
        Lists the complete set of links for this entry
        Returns:
        returns a listing of atom:link elements
      • getLinks

        java.util.List<Link> getLinks​(java.lang.String rel)
        Lists the complete set of links using the specified rel attribute value
        Parameters:
        rel - A link relation
        Returns:
        A listing of atom:link elements
      • getLinks

        java.util.List<Link> getLinks​(java.lang.String... rel)
        Lists the complete set of links using the specified rel attributes values
        Parameters:
        rels - A listing of link relations
        Returns:
        A listof atom:link elements
      • addLink

        <T extends Source> T addLink​(Link link)
        Adds an individual link to the entry
        Parameters:
        link - A atom:link element
      • addLink

        Link addLink​(java.lang.String href)
        Adds an individual link element
        Parameters:
        href - The href IRI of the link
        Returns:
        The newly created atom:link
        Throws:
        IRISyntaxException - if the href is malformed
      • addLink

        Link addLink​(java.lang.String href,
                     java.lang.String rel)
        Adds an individual link element
        Parameters:
        href - The href IRI of the link
        rel - The link rel attribute
        Returns:
        The newly created atom:link
        Throws:
        IRISyntaxException - if the href is malformed
      • addLink

        Link addLink​(java.lang.String href,
                     java.lang.String rel,
                     java.lang.String type,
                     java.lang.String title,
                     java.lang.String hreflang,
                     long length)
        Adds an individual link element
        Parameters:
        href - The href IRI of the link
        rel - The link rel attribute
        type - The link type attribute
        hreflang - The link hreflang attribute
        length - The length attribute
        Returns:
        The newly created atom:link
        Throws:
        IRISyntaxException - if the href is malformed
      • getLogoElement

        IRIElement getLogoElement()
        RFC4287: The "atom:logo" element's content is an IRI reference [RFC3987] that identifies an image that provides visual identification for a feed. The image SHOULD have an aspect ratio of 2 (horizontal) to 1 (vertical).
        Returns:
        the atom:logo element
      • setLogoElement

        <T extends Source> T setLogoElement​(IRIElement iri)
        RFC4287: The "atom:logo" element's content is an IRI reference [RFC3987] that identifies an image that provides visual identification for a feed. The image SHOULD have an aspect ratio of 2 (horizontal) to 1 (vertical).
        Parameters:
        iri - The atom:logo element
      • setLogo

        IRIElement setLogo​(java.lang.String iri)
        RFC4287: The "atom:logo" element's content is an IRI reference [RFC3987] that identifies an image that provides visual identification for a feed. The image SHOULD have an aspect ratio of 2 (horizontal) to 1 (vertical).
        Parameters:
        iri - The atom:logo value
        Returns:
        The newly created atom:logo element
        Throws:
        IRISyntaxException - if the iri is malformed
      • getLogo

        IRI getLogo()
        RFC4287: The "atom:logo" element's content is an IRI reference [RFC3987] that identifies an image that provides visual identification for a feed. The image SHOULD have an aspect ratio of 2 (horizontal) to 1 (vertical).
        Returns:
        The atom:logo element value
        Throws:
        IRISyntaxException - if the atom:logo value is malformed
      • getRightsElement

        Text getRightsElement()

        The rights element is typically used to convey a human readable copyright (e.g. "<atom:rights>Copyright (c), 2006</atom:rights>).

        RFC4287: The "atom:rights" element is a Text construct that conveys information about rights held in and over an entry or feed.

        Returns:
        The atom:rights element
      • setRightsElement

        <T extends Source> T setRightsElement​(Text text)

        The rights element is typically used to convey a human readable copyright (e.g. "<atom:rights>Copyright (c), 2006</atom:rights>).

        RFC4287: The "atom:rights" element is a Text construct that conveys information about rights held in and over an entry or feed.

        Parameters:
        text - The atom:rights element
      • setRights

        Text setRights​(java.lang.String value)
        Sets the value of the rights as @type="text"
        Parameters:
        value - The atom:rights text value
        Returns:
        The newly created atom:rights element
      • setRightsAsHtml

        Text setRightsAsHtml​(java.lang.String value)
        Sets the value of the rights as @type="html"
        Parameters:
        value - The atom:rights text value
        Returns:
        The newly created atom:rights element
      • setRightsAsXhtml

        Text setRightsAsXhtml​(java.lang.String value)
        Sets the value of the rights as @type="xhtml"
        Parameters:
        value - The atom:rights text value
        Returns:
        The newly created atom:rights element
      • setRights

        Text setRights​(java.lang.String value,
                       Text.Type type)
        Sets the value of the rights
        Parameters:
        value - The atom:rights text value
        type - The atom:rights text type
        Returns:
        The newly created atom:rights element
      • setRights

        Text setRights​(Div value)
        Sets the value of the rights as @type="xhtml"
        Parameters:
        value - The XHTML div element
        Returns:
        The newly created atom:rights element
      • getRights

        java.lang.String getRights()
        Returns the text of atom:rights
        Returns:
        The value of the atom:rights element
      • getRightsType

        Text.Type getRightsType()
        Returns the type of atom:rights
        Returns:
        The Text.Type of the atom:rights element
      • getSubtitleElement

        Text getSubtitleElement()
        RFC4287: The "atom:subtitle" element is a Text construct that conveys a human-readable description or subtitle for a feed.
        Returns:
        The atom:subtitle element
      • setSubtitleElement

        <T extends Source> T setSubtitleElement​(Text text)
        RFC4287: The "atom:subtitle" element is a Text construct that conveys a human-readable description or subtitle for a feed.
        Parameters:
        text - A atom:subtitle element
      • setSubtitle

        Text setSubtitle​(java.lang.String value)
        Sets the value of the subtitle as @type="text"
        Parameters:
        value - the value of the atom:subtitle element
        Returns:
        The atom:subtitle element
      • setSubtitleAsHtml

        Text setSubtitleAsHtml​(java.lang.String value)
        Sets the value of the subtitle as @type="html"
        Parameters:
        value - The value of the atom:subtitle element
        Returns:
        The newly created atom:subtitle element
      • setSubtitleAsXhtml

        Text setSubtitleAsXhtml​(java.lang.String value)
        Sets the value of the subtitle as @type="xhtml"
        Parameters:
        value - The value of the atom:subtitle element
        Returns:
        The newly created atom:subtitle element
      • setSubtitle

        Text setSubtitle​(java.lang.String value,
                         Text.Type type)
        Sets the value of the subtitle
        Parameters:
        value - The value of the atom:subtitle element
        type - The atom:subtitle Text.Type
        Returns:
        The newly created atom:subtitle element
      • setSubtitle

        Text setSubtitle​(Div value)
        Sets the value of the subtitle as @type="xhtml"
        Parameters:
        value - The atom:subtitle element
        Returns:
        The newly created atom:subtitle element
      • getSubtitle

        java.lang.String getSubtitle()
        Returns the text value of atom:subtitle
        Returns:
        The atom:subtitle text value
      • getSubtitleType

        Text.Type getSubtitleType()
        Returns the atom:subtitle type
        Returns:
        The atom:subtitle Text.Type
      • getTitleElement

        Text getTitleElement()
        RFC4287: The "atom:title" element is a Text construct that conveys a human-readable title for an entry or feed.
        Returns:
        The atom:title element
      • setTitleElement

        <T extends Source> T setTitleElement​(Text text)
        RFC4287: The "atom:title" element is a Text construct that conveys a human-readable title for an entry or feed.
        Parameters:
        text - The atom:title element
      • setTitle

        Text setTitle​(java.lang.String value)
        Sets the value of the title as @type="text"
        Parameters:
        value - The atom:title value
        Returns:
        The newly created atom:title element
      • setTitleAsHtml

        Text setTitleAsHtml​(java.lang.String value)
        Sets the value of the title as @type="html"
        Parameters:
        value - The atom:title value
        Returns:
        The newly created atom:title element
      • setTitleAsXhtml

        Text setTitleAsXhtml​(java.lang.String value)
        Sets the value of the title as @type="xhtml"
        Parameters:
        value - The atom:title value
        Returns:
        The newly created atom:title element
      • setTitle

        Text setTitle​(java.lang.String value,
                      Text.Type type)
        Sets the value of the title
        Parameters:
        value - The atom:title value
        type - The atom:title Text.Type
        Returns:
        The newly created atom:title element
      • setTitle

        Text setTitle​(Div value)
        Sets the value of the title as @type="xhtml"
        Parameters:
        value - The XHTML div
        Returns:
        The newly created atom:title element
      • getTitle

        java.lang.String getTitle()
        Returns the text of atom:title
        Returns:
        The text value of the atom:title element
      • getTitleType

        Text.Type getTitleType()
        Returns the type of atom:title
        Returns:
        The atom:title Text.Type value
      • getUpdatedElement

        DateTime getUpdatedElement()
        RFC4287: The "atom:updated" element is a Date construct indicating the most recent instant in time when an entry or feed was modified in a way the publisher considers significant. Therefore, not all modifications necessarily result in a changed atom:updated value.
        Returns:
        the atom:updated element
      • setUpdatedElement

        <T extends Source> T setUpdatedElement​(DateTime dateTime)
        RFC4287: The "atom:updated" element is a Date construct indicating the most recent instant in time when an entry or feed was modified in a way the publisher considers significant. Therefore, not all modifications necessarily result in a changed atom:updated value.
        Parameters:
        dateTime - A atom:updated element
      • getUpdatedString

        java.lang.String getUpdatedString()
        Return the atom:updated value
        Returns:
        The serialized string form value of atom:updated
      • getUpdated

        java.util.Date getUpdated()
        Return the atom:updated value
        Returns:
        The atom:updated as a java.util.Date
      • setUpdated

        DateTime setUpdated​(java.util.Date value)
        Set the atom:updated value
        Parameters:
        value - The java.util.Date
        Returns:
        The newly created atom:updated element
      • setUpdated

        DateTime setUpdated​(java.lang.String value)
        Set the atom:updated value
        Parameters:
        value - The serialized string date
        Returns:
        The newly created atom:updated element
      • getLink

        Link getLink​(java.lang.String rel)
        Returns the first link with the specified rel attribute value
        Parameters:
        rel - A link relation
        Returns:
        The newly created atom:link element
      • getSelfLink

        Link getSelfLink()
        Returns the first link using the rel attribute value "self"
        Returns:
        An atom:link
      • getAlternateLink

        Link getAlternateLink()
        Returns this entries first alternate link
        Returns:
        An atom:link
      • getAlternateLink

        Link getAlternateLink​(java.lang.String type,
                              java.lang.String hreflang)
        Parameters:
        type - A media type
        hreflang - A target language
        Returns:
        A matching atom:link
        Throws:
        MimeTypeParseException - if the type if malformed
      • getLinkResolvedHref

        IRI getLinkResolvedHref​(java.lang.String rel)
        Parameters:
        rel - A link relation
        Returns:
        An atom:link
      • getSelfLinkResolvedHref

        IRI getSelfLinkResolvedHref()
        Returns:
        An atom:link
      • getAlternateLinkResolvedHref

        IRI getAlternateLinkResolvedHref()
        Returns:
        An atom:link
      • getAlternateLinkResolvedHref

        IRI getAlternateLinkResolvedHref​(java.lang.String type,
                                         java.lang.String hreflang)
        Parameters:
        type - A media type
        hreflang - A target language
        Returns:
        A matching atom:link
        Throws:
        MimeTypeParseException - if the type if malformed
      • getCollection

        Collection getCollection()
        Return an app:collection element associatd with this atom:source. The Atom Publishing Protocol allows an app:collection to be contained by atom:feed to specify the collection to which the feed is associated.
        Returns:
        An app:collection element
      • setCollection

        <T extends Source> T setCollection​(Collection collection)
        Set the app:collection element
        Parameters:
        collection - An app:collection element
      • getAsFeed

        Feed getAsFeed()
        Convert the Source element into an empty Feed element