@startuml title Service Deployment hide footbox autonumber participant "Gateway\nServer" as GW participant "Gateway\nConfig\n(gc)" as GC participant "Topology\n(td)" as TD participant "Deployment\nFactory" as DF participant "Deployment\nContext\n(dc)" as DC participant "Web\nArchive\n(wa)" as WA participant "Gateway\nDescriptor\n(gd)" as GD participant "Service\nDeployment\nContributor" as SDC create GC GW -> GC: load create TD GW -> TD: load GW -> DF: createDeployment( gc, td ): wa activate DF create GD DF -> GD: create create WA DF -> WA: create( gd ) create DC DF -> DC: create( gc, td, wa ) loop Service s in Topology dc.td DF -> SDC:initializeContribution( dc, s ) 'activate SDC 'SDC -> WA: setupDescriptors 'deactivate SDC end loop Service s in Topology dc.td DF -> SDC:contributeService( dc, s ) activate SDC group each required provider SDC -> DF: contributeFilter( s, resource, role, name, params ) end deactivate SDC end loop Service s in Topology dc.td DF -> SDC:finalizeContribution( dc, s ) 'activate SDC 'SDC -> WA: finalizeDescriptors 'deactivate SDC end GW <-- DF: WebArchive wa deactivate DF @enduml