Class BlockCard

  • All Implemented Interfaces:
    Element, Node, DocContent, LayoutColumnContent, NonNestableBlockContent, PanelContent, TableCellContent

    @Documentation(state=UNDOCUMENTED,
                   date="2023-07-26")
    public class BlockCard
    extends AbstractNode<BlockCard>
    implements DocContent, LayoutColumnContent, NonNestableBlockContent, PanelContent, TableCellContent
    The blockCard node is an Atlassian link card with a type icon and content description derived from the link. It provides the same functionality that inlineCard does, but renders its link as a standalone block rather than in combination with the other inline content in a paragraph or similar container.

    Additionally, block cards have a special "datasource" configuration that provides more dynamic linking capabilities. Use blockCard().datasource() to build these.

    Example

    Java

     doc(
         p("Hello"),
         blockCard("https://jira.atlassian.com/browse/JRACLOUD-72220"),
         p("World")
     );
     

    ADF

    
       {
         "type": "doc",
         "version": 1,
         "content": [
           {
             "type": "paragraph",
             "content": [
               {
                 "type": "text",
                 "text": "Hello"
               }
             ]
           },
           {
             "type": "blockCard",
             "attrs": {
               "url": "https://jira.atlassian.com/browse/JRACLOUD-72220"
             }
           },
           {
             "type": "paragraph",
             "content": [
               {
                 "type": "text",
                 "text": "World"
               }
             ]
           }
         ]
       }
     

    Result

    Hello

    JRACLOUD-72220 - Java client for building/parsing ADF IN PROGRESS

    World

    Note: This example output is not using AtlasKit to render the block card, so while it gives a vague impression of what a "block card" is, it does not faithfully reproduce the actual presentation in Atlassian products.

    See Also:
    InlineCard
    • Method Detail

      • blockCard

        @CheckReturnValue
        public static BlockCard.Partial.NeedsCardAttributes blockCard()
        Creates a partially constructed block card that requires its URI or data to be set before it is valid.
        Returns:
        a partially constructed block card
      • blockCard

        public static BlockCard blockCard​(String url)
        Creates a block card for the linked content with the given URI.
        Parameters:
        url - the target URI for the block card
        Returns:
        a new block card for the given URI
        Throws:
        IllegalArgumentException - if the URI cannot be parsed
      • blockCard

        public static BlockCard blockCard​(URL url)
        Creates a block card for the linked content with the given URI.
        Parameters:
        url - the target URI for the block card
        Returns:
        a new block card for the given URI
      • blockCard

        public static BlockCard blockCard​(URI url)
        Creates a block card for the linked content with the given URI.
        Parameters:
        url - the target URI for the block card
        Returns:
        a new block card for the given URI
      • blockCard

        public static BlockCard blockCard​(Map<String,​?> data)
        Creates a block card for the linked content with the given JSON-LD description.
        Parameters:
        data - the link description data in JSON-LD format
        Returns:
        a new block card for the given JSON-LD
      • copy

        public BlockCard copy()
        Description copied from interface: Element
        Returns a deep copy of this element, including copies of any nodes or marks that it contains. The copy will not necessarily be in exactly the same state as the original in some cases. For example, a text node that is used inside a codeBlock will have the ability to use marks on it disabled, but a copy made of the text node using this method will not similarly disallow marks unless it is also added to a content node with those same restrictions.

        Implementations notes:

        • Implementations should narrow the return type.
        • Implementations should return this if the element is immutable. The @Immutable annotation should be used on the class to offer additional confirmation of this intent.
        • Implementations should return parse(toMap()) if they have state.
        • While there may be cases where it is worthwhile to do something more efficient than the conversion to a map and back, this is discouraged because it would add yet another fragile piece of code that breaks when new data is added to the node. The parse and toMap methods already have to be updated in these circumstances, so it makes sense to take advantage of that.
        Specified by:
        copy in interface Element
        Specified by:
        copy in interface Node
        Returns:
        a copy of this element, or this if the element is immutable anyway
      • validate

        public void validate()
        Description copied from interface: Element
        Verifies that the node is well-formed (including the state of any descendents that it has).
        Specified by:
        validate in interface Element
      • elementType

        public String elementType()
        Description copied from interface: Element
        The type value that identifies this element, such as "paragraph" or "strong".
        Specified by:
        elementType in interface Element
      • nodeEquals

        protected final boolean nodeEquals​(BlockCard other)
        Description copied from class: AbstractNode
        Allows nodes that have their own fields to augment the equals implementation with tests for their own field values.

        Implementations need not check for identity, null, or a different node class; those are already covered by the AbstractNode.equals(Object) implementation that is expected to be this method's only consumer.

        Just as with the relationship between hashCode, equals, and toString for ordinary Java classes, subclasses of AbstractNode should maintain consistent implementations of nodeHashCode, nodeEquals, and appendNodeFields.

        Overrides:
        nodeEquals in class AbstractNode<BlockCard>
        Returns:
        true if all additional field values that belong to a particular type of content node test as equal; false if differences are found
        See Also:
        AbstractNode.nodeHashCode(), AbstractNode.appendNodeFields(ToStringHelper)
      • nodeHashCode

        protected final int nodeHashCode()
        Description copied from class: AbstractNode
        Allows nodes that have their own fields to augment the hashCode implementation with a hash of their own field values.

        Implementations need not include the node's class; that is already covered by the AbstractNode.hashCode() implementation that is expected to be this method's only consumer.

        Just as with the relationship between hashCode, equals, and toString for ordinary Java classes, subclasses of AbstractNode should maintain consistent implementations of nodeHashCode, nodeEquals, and appendNodeFields.

        Overrides:
        nodeHashCode in class AbstractNode<BlockCard>
        Returns:
        the hash code of any additional field values that belong to a particular type of content node.
        See Also:
        AbstractNode.nodeEquals(AbstractNode), AbstractNode.appendNodeFields(ToStringHelper)
      • toMap

        public final Map<String,​?> toMap()
        Description copied from interface: Element
        Transforms this element to a map of String values to various basic object types suitable for direct rendering as JSON content.
        Specified by:
        toMap in interface Element
        Returns:
        the map representation of this ADF element
      • cardAttributes

        public BlockCard.CardAttributes cardAttributes()
        Returns the card's link data, either as a URI or as a Map containing a JSON-LD.
        Returns:
        the card's link data, either as a URI or as a Map containing a JSON-LD.