Can't publish confluence page with plantUML

0 votes
asked Dec 4 in bug by Rob

Hi,

We have just started using the PlantUML plugin in our confluence site, but we have one particular bit of UML that seems to break it and we don't know why.

When we post in the below UML, it generates an image fine in the preview on the right, but when we click save and it goes back to the edit page screen the plugin placeholder just sits there forever spinning and I can't click publish.

In the background it has uploaded a textdiag- attachment to the page.

Any ideas?

Cheers,

Rob

@startuml
skinparam classAttributeIconSize 0
namespace Document {
    package DocumentTag <<Rectangle>> {
        interface IDocumentTag {
          + getDocumentTagID() : int
          + setDocumentTagID(int)
          + getName() : string
          + setName(string)
          + getTagName() : string
          + setTagName(string)
          + getValue(string)
          + setValue() : string
        }
        class DocumentTagInterface {
            # documentTagID
            # name
            # tagName
            # value
            + getDocumentTagID() : int
            + setDocumentTagID(int)
            + getName() : string
            + setName(string)
            + getTagName() : string
            + setTagName(string)
            + getValue(string)
            + setValue() : string
        }
    }
    package DocumentTagContainer <<Rectangle>> {
        interface IDocumentTagContainer {
            + getTags() : array of IDocumentTag
            + setTags()
            + addTag(IDocumentTag)
            + removeTag(string)
        }
        abstract class AbstractDocumentTagContainer {
            # tags
            + getTags() : array of IDocumentTag
            + setTags()
            + addTag(IDocumentTag)
            + removeTag(string)
        }
        class QuoteDocumentTags {
            ~ __construct()
        }
        class JobDocumentTags {
            ~ __construct()
        }
        class InvoiceDocumentTags {
            ~ __construct()
        }
    }

    package DocumentContainer <<Rectangle>> {
        interface IDocumentContainer {
            + getDocuments()
            + setDocuments()
            + addDocument(IDocument)
            + removeDocument(int)
        }
        class DocumentContainer {
            + getDocuments()
            + setDocuments(array)
            + addDocument(IDocument)
            + removeDocument(int)
        }
    }

    package ThisDocument <<Rectangle>> {
        interface IDocument {
            + getName() : string
            + setName(string)
            + getTempName() : string
            + setTempName(string)
            + getTags() : IDocumentTagsContainer
            + setTags(IDocumentTagsContainer)
            + generate()
            + delete(string|int)
            + {static} replaceHeaderAndFooter(IDocument)
        }        
        abstract class AbstractDocx {
            # tempName
           # name
           # edited
           # employeeID
           # type
           # removed
           # isTemplate
           # tags
          + getName() : string
          + setName(string)
          + getTempName() : string
          + setTempName(string)
          + getTags() : IDocumentTagsContainer
          + setTags(IDocumentTagsContainer)
          + generate()
          + delete(string|int)
          + {static} replaceHeaderAndFooter(IDocument)
        }
        class QuoteDocument {
            + generate()
            + delete()
        }
        class JobDocument {
            + generate()
            + delete()
        }
        class InvoiceDocument {
            + generate()
            + delete()
        }
    }

    package DocumentTagReplacer <<Rectangle>> {
        interface IDocumentTagReplacer {
            + getTagContainer() : IDocumentTagContainer
            + setTagContainer(IDocumentTagContainer)
            + getObject() : IHaveDocumentTags
            + setObject(IHaveDocumentTags)
            + doReplaceTags() : boolean
        }
       interface IHaveDocumentTags
       abstract AbstractDocumentTagsReplacerInterface {
             # Object
             # TagContainer
             + __construct(IHaveDcoumentTags, IDocumentTagContainer)
       }
        class QuoteDocumentTagReplacer {
            ~ __construct(IHaveDcoumentTags, IDocumentTagContainer)
            + doReplaceTags()
        }
        class JobDocumentTagReplacer {
            ~ __construct(IHaveDcoumentTags, IDocumentTagContainer)
            + doReplaceTags()
        }
        class InvoiceDocumentTagReplacer {
            ~ __construct(IHaveDcoumentTags, IDocumentTagContainer)
            + doReplaceTags()
        }
    }
}

IDocumentTag <|.. DocumentTagInterface
IDocumentTagContainer  <|.. AbstractDocumentTagContainer 
IDocumentContainer <|.. DocumentContainer 
IDocument <|.. AbstractDocx
IDocumentTagReplacer <|.. AbstractDocumentTagsReplacerInterface
IDocumentTag "0..*" --o  "1" IDocumentTagContainer : Contains
IDocument "0..*" --o  "1" IDocumentContainer : Contains
IDocument "1" o--  "1" IDocumentTagContainer : Contains
IDocumentTagReplacer "1" o--  "1" IHaveDocumentTags : Contains
IDocumentTagContainer "1" --o  "1" IDocumentTagReplacer : Contains
AbstractDocumentTagContainer <|-- QuoteDocumentTags 
AbstractDocumentTagContainer <|-- JobDocumentTags 
AbstractDocumentTagContainer <|-- InvoiceDocumentTags
AbstractDocx <|-- QuoteDocument
AbstractDocx <|-- JobDocument
AbstractDocx <|-- InvoiceDocument
AbstractDocumentTagsReplacerInterface <|-- QuoteDocumentTagReplacer
AbstractDocumentTagsReplacerInterface <|-- JobDocumentTagReplacer
AbstractDocumentTagsReplacerInterface <|-- InvoiceDocumentTagReplacer
@enduml

1 Answer

0 votes
answered Dec 4 by plantuml (135,550 points)
It looks like a specific confluence plugin issue.

We won't be able to help you on this subject here, because we are mainly working on the core library. You should try to post this issue on the confluence board here: https://community.atlassian.com/t5/tag/addon-de.griffel.confluence.plugins.plant-uml/tg-p/board-id/atlassian-marketplace-questions

However, you can keep us informed about your progress!

Regards,
...