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