I tried to write a sequence diagram and it seems not to render correctly neither in Confluence nor in Eclipse. There is a loop missing in the diagram. Following is the source for the diagram:
@startuml
hide footbox
skinparam sequence {
ArrowColor black
ActorBorderColor black
LifelineBorderColor black
}
participant ClassA
participant ClassB
participant ClassC
participant ClassD
participant ClassE
participant ClassF
activate ClassA
loop collection
ClassA -> ClassD : getDataA()
activate ClassD
ClassA <-- ClassD : dataA
deactivate ClassD
ClassA -> ClassD : getDataB(someParam)
activate ClassD
ClassA <-- ClassD : sequence<dataB>
deactivate ClassD
alt matching dataB
ClassA -> ClassE : setDataB(dataB, dataA)
activate ClassE
ClassA <-- ClassE
deactivate ClassE
else multiple dataB
loop dataB objects
ClassA -> ClassE : clone()
activate ClassE
create ClassEClone
ClassE -> ClassEClone : create
ClassA <-- ClassE : clone
deactivate ClassE
ClassA -> ClassEClone : setDataB(dataB, dataA)
activate ClassEClone
ClassA <-- ClassEClone
deactivate ClassEClone
end
end
end
ClassA -> ClassA : calculateDataC()
activate ClassA
deactivate ClassA
' the following loop is not displayed
loop collection
alt matching dataC
ClassA -> ClassE : setDataC(dataC)
activate ClassE
ClassA <-- ClassE
deactivate ClassE
else different dataC
loop dataC objects
ClassA -> ClassE : clone()
activate ClassE
create ClassEClone
ClassE -> ClassEClone : create
ClassA <-- ClassE : clone
deactivate ClassE
ClassA -> ClassEClone : setDataC(dataC)
activate ClassEClone
ClassA <-- ClassEClone
deactivate ClassEClone
end
end
loop collection
ClassA -> ClassB : createDataD(collectionElement)
activate ClassB
ClassA <-- ClassB : dataD
deactivate ClassB
ClassA -> ClassB : storeDataD(dataD, context)
activate ClassB
ClassA <-- ClassB : reusedData
deactivate ClassB
ClassA -> ClassF : storeDataD(reusedData, type, label, other)
activate ClassF
ClassA <-- ClassF
deactivate ClassF
end
deactivate ClassA
@enduml